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