Version 2.3.1

* Cherry-pick 9ac7bd78550ac5c73b2131a71751a30e6ae967e7 to stable
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f5b0bcf..0cd891b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,16 @@
+## 2.3.1 - 2019-05-21
+
+This is a patch version release with bug fixes.
+
+### Tools
+
+#### dart2js
+
+* Fixed a bug that caused the compiler to crash when it compiled UI-as-code
+  features within fields (Issue [36864][]).
+
+[36864]: https://github.com/dart-lang/sdk/issues/36864
+
 ## 2.3.0 - 2019-05-08
 
 The focus in this release is on the new "UI-as-code" language features which
diff --git a/pkg/compiler/lib/src/ir/static_type.dart b/pkg/compiler/lib/src/ir/static_type.dart
index 7aee79e..9731e80 100644
--- a/pkg/compiler/lib/src/ir/static_type.dart
+++ b/pkg/compiler/lib/src/ir/static_type.dart
@@ -1349,8 +1349,11 @@
   @override
   Null visitField(ir.Field node) {
     thisType = new ThisInterfaceType.from(node.enclosingClass?.thisType);
+    _currentVariables = new Set<ir.VariableDeclaration>();
     visitNode(node.initializer);
     handleField(node);
+    _invalidatedVariables.removeAll(_currentVariables);
+    _currentVariables = null;
     thisType = null;
   }
 
diff --git a/tests/compiler/dart2js_extra/block_expression_on_field_test.dart b/tests/compiler/dart2js_extra/block_expression_on_field_test.dart
new file mode 100644
index 0000000..7b6449f
--- /dev/null
+++ b/tests/compiler/dart2js_extra/block_expression_on_field_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Regression test for #36864
+///
+/// Block expressions in top-level fields used to crash the compiler.
+import "package:expect/expect.dart";
+
+final _a = {
+  ...{1}
+};
+
+class B {
+  static Set _b = {
+    ...{2}
+  };
+  Set _c = {
+    ...{3}
+  };
+}
+
+main() {
+  Expect.setEquals({1}, _a);
+  Expect.setEquals({2}, B._b);
+  Expect.setEquals({3}, (new B()._c));
+}
diff --git a/tools/VERSION b/tools/VERSION
index f29e6db..b9a33e9 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -32,7 +32,7 @@
 CHANNEL stable
 MAJOR 2
 MINOR 3
-PATCH 0
+PATCH 1
 PRERELEASE 0
 PRERELEASE_PATCH 0
 ABI_VERSION 4