[tests] UI-as-Code in const collections is a compile time error

* Update tests to expect compilation errors when `if` `for` or `...` are used in
  const collections.
* Remove constant-update-2018 flag from tests.

Change-Id: I477c30f07c7e3da6139f263e1855c3908c1bce2d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99485
Reviewed-by: Sigmund Cherem <sigmund@google.com>
diff --git a/tests/language_2/control_flow_collections/await_for_inference_test.dart b/tests/language_2/control_flow_collections/await_for_inference_test.dart
index d4d4bb8..6987f58 100644
--- a/tests/language_2/control_flow_collections/await_for_inference_test.dart
+++ b/tests/language_2/control_flow_collections/await_for_inference_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 // Test how await for interacts with inference.
 import "package:async_helper/async_helper.dart";
diff --git a/tests/language_2/control_flow_collections/await_for_null_test.dart b/tests/language_2/control_flow_collections/await_for_null_test.dart
index d040e92..7e2fc5e 100644
--- a/tests/language_2/control_flow_collections/await_for_null_test.dart
+++ b/tests/language_2/control_flow_collections/await_for_null_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 // Test that a null stream expression procudes a runtime error.
 import 'package:async_helper/async_helper.dart';
diff --git a/tests/language_2/control_flow_collections/await_for_syntax_error_test.dart b/tests/language_2/control_flow_collections/await_for_syntax_error_test.dart
index 0b7c20a..f5e30ce 100644
--- a/tests/language_2/control_flow_collections/await_for_syntax_error_test.dart
+++ b/tests/language_2/control_flow_collections/await_for_syntax_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 void main() {
   // Use await for in non-async function.
diff --git a/tests/language_2/control_flow_collections/await_for_test.dart b/tests/language_2/control_flow_collections/await_for_test.dart
index 032084e..c838c49 100644
--- a/tests/language_2/control_flow_collections/await_for_test.dart
+++ b/tests/language_2/control_flow_collections/await_for_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 import 'package:async_helper/async_helper.dart';
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/control_flow_collections/await_for_type_error_test.dart b/tests/language_2/control_flow_collections/await_for_type_error_test.dart
index 7090cee..8cc87da 100644
--- a/tests/language_2/control_flow_collections/await_for_type_error_test.dart
+++ b/tests/language_2/control_flow_collections/await_for_type_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 void main() {
   () async {
diff --git a/tests/language_2/control_flow_collections/for_await_test.dart b/tests/language_2/control_flow_collections/for_await_test.dart
index 81b0a3f..55d24ae 100644
--- a/tests/language_2/control_flow_collections/for_await_test.dart
+++ b/tests/language_2/control_flow_collections/for_await_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 import "package:async_helper/async_helper.dart";
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/control_flow_collections/for_const_test.dart b/tests/language_2/control_flow_collections/for_const_error_test.dart
similarity index 82%
rename from tests/language_2/control_flow_collections/for_const_test.dart
rename to tests/language_2/control_flow_collections/for_const_error_test.dart
index 32f7e51..626c7a8 100644
--- a/tests/language_2/control_flow_collections/for_const_test.dart
+++ b/tests/language_2/control_flow_collections/for_const_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 void main() {
   // For cannot be used in a const collection.
@@ -16,7 +16,7 @@
 
   () async {
     const _ = <int>[await for (var i in []) 1]; //# 06: compile-time error
-    const _ = <int, int>{await  for (var i in []) 1: 1}; //# 07: compile-time error
+    const _ = <int, int>{await for (var i in []) 1: 1}; //# 07: compile-time error
     const _ = <int>{await for (var i in []) 1}; //# 08: compile-time error
   }();
 }
diff --git a/tests/language_2/control_flow_collections/for_inference_test.dart b/tests/language_2/control_flow_collections/for_inference_test.dart
index 7835d7a..9479dd6 100644
--- a/tests/language_2/control_flow_collections/for_inference_test.dart
+++ b/tests/language_2/control_flow_collections/for_inference_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 // Test how control flow interacts with inference.
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/control_flow_collections/for_non_bool_condition_test.dart b/tests/language_2/control_flow_collections/for_non_bool_condition_test.dart
index fbc3834..74b00df 100644
--- a/tests/language_2/control_flow_collections/for_non_bool_condition_test.dart
+++ b/tests/language_2/control_flow_collections/for_non_bool_condition_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/control_flow_collections/for_null_condition_test.dart b/tests/language_2/control_flow_collections/for_null_condition_test.dart
index 6b890fd..2f9a6c0 100644
--- a/tests/language_2/control_flow_collections/for_null_condition_test.dart
+++ b/tests/language_2/control_flow_collections/for_null_condition_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/control_flow_collections/for_runtime_error_test.dart b/tests/language_2/control_flow_collections/for_runtime_error_test.dart
index f036a94..b8fa267 100644
--- a/tests/language_2/control_flow_collections/for_runtime_error_test.dart
+++ b/tests/language_2/control_flow_collections/for_runtime_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/control_flow_collections/for_test.dart b/tests/language_2/control_flow_collections/for_test.dart
index 8df9d75..a264cb6 100644
--- a/tests/language_2/control_flow_collections/for_test.dart
+++ b/tests/language_2/control_flow_collections/for_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/control_flow_collections/for_variable_test.dart b/tests/language_2/control_flow_collections/for_variable_test.dart
index 69d0b3f..f866daf 100644
--- a/tests/language_2/control_flow_collections/for_variable_test.dart
+++ b/tests/language_2/control_flow_collections/for_variable_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 /// Tests for how variables and scoping work with for elements.
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/control_flow_collections/if_await_test.dart b/tests/language_2/control_flow_collections/if_await_test.dart
index a0e8bad..2db3f62 100644
--- a/tests/language_2/control_flow_collections/if_await_test.dart
+++ b/tests/language_2/control_flow_collections/if_await_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 import "package:async_helper/async_helper.dart";
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/control_flow_collections/if_const_error_test.dart b/tests/language_2/control_flow_collections/if_const_error_test.dart
index c644acf..f3645f2 100644
--- a/tests/language_2/control_flow_collections/if_const_error_test.dart
+++ b/tests/language_2/control_flow_collections/if_const_error_test.dart
@@ -2,138 +2,14 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
-
-import 'dart:collection';
-
-import 'package:expect/expect.dart';
-
-import 'utils.dart';
-
-final nonConstBool = true;
-final nonConstInt = 3;
-
-const dynamic nonBool = 3;
-const dynamic nonInt = "s";
+// SharedOptions=--enable-experiment=control-flow-collections
 
 void main() {
-  testList();
-  testMap();
-  testSet();
-  testShortCircuit();
-}
-
-void testList() {
-  // Condition must be constant.
-  const _ = <int>[if (nonConstBool) 1]; //# 01: compile-time error
-
-  // Condition must be Boolean.
-  const _ = <int>[if (nonBool) 1]; //# 02: compile-time error
-
-  // Then element must be constant, whether or not branch is taken.
-  const _ = <int>[if (true) nonConstInt]; //# 03: compile-time error
-  const _ = <int>[if (false) nonConstInt]; //# 04: compile-time error
-
-  // Else element must be constant, whether or not branch is taken.
-  const _ = <int>[if (true) 1 else nonConstInt]; //# 05: compile-time error
-  const _ = <int>[if (false) 1 else nonConstInt]; //# 06: compile-time error
-
-  // Then element must have right type if branch is chosen.
-  const _ = <int>[if (true) nonInt]; //# 07: compile-time error
-
-  // Else element must have right type if branch is chosen.
-  const _ = <int>[if (false) 9 else nonInt]; //# 08: compile-time error
-}
-
-void testMap() {
-  // Condition must be constant.
-  const _ = <int, int>{if (nonConstBool) 1: 1}; //# 09: compile-time error
-
-  // Condition must be Boolean.
-  const _ = <int, int>{if (nonBool) 1: 1}; //# 10: compile-time error
-
-  // Then key element must be constant, whether or not branch is taken.
-  const _ = <int, int>{if (true) nonConstInt: 1}; //# 11: compile-time error
-  const _ = <int, int>{if (false) nonConstInt: 1}; //# 12: compile-time error
-
-  // Then value element must be constant, whether or not branch is taken.
-  const _ = <int, int>{if (true) 1: nonConstInt}; //# 13: compile-time error
-  const _ = <int, int>{if (false) 1: nonConstInt}; //# 14: compile-time error
-
-  // Else key element must be constant, whether or not branch is taken.
-  const _ = <int, int>{if (true) 1 else nonConstInt: 1}; //# 15: compile-time error
-  const _ = <int, int>{if (false) 1 else nonConstInt: 1}; //# 16: compile-time error
-
-  // Else value element must be constant, whether or not branch is taken.
-  const _ = <int, int>{if (true) 1 else 1: nonConstInt}; //# 17: compile-time error
-  const _ = <int, int>{if (false) 1 else 1: nonConstInt}; //# 18: compile-time error
-
-  // Then key element must have right type if branch is chosen.
-  const _ = <int, int>{if (true) nonInt: 1}; //# 19: compile-time error
-
-  // Then value element must have right type if branch is chosen.
-  const _ = <int, int>{if (true) 1: nonInt}; //# 20: compile-time error
-
-  // Else key element must have right type if branch is chosen.
-  const _ = <int, int>{if (false) 9 else nonInt: 1}; //# 21: compile-time error
-
-  // Else value element must have right type if branch is chosen.
-  const _ = <int, int>{if (false) 9 else 1: nonInt}; //# 22: compile-time error
-
-  // Key cannot override operator.==().
-  const obj = 0.1;
-  const _ = {if (true) 0.1: 1}; //# 23: compile-time error
-  const _ = {if (true) Duration(seconds: 0): 1}; //# 24: compile-time error
-  const _ = {if (true) obj: 1}; //# 25: compile-time error
-
-  // Cannot have key collision when branch is chosen.
-  const _ = <int, int>{1: 1, if (true) 1: 1}; //# 25: compile-time error
-  const _ = <int, int>{if (true) 1: 1, if (true) 1: 1}; //# 26: compile-time error
-}
-
-void testSet() {
-  // Condition must be constant.
-  const _ = <int>{if (nonConstBool) 1}; //# 27: compile-time error
-
-  // Condition must be Boolean.
-  const _ = <int>{if (nonBool) 1}; //# 28: compile-time error
-
-  // Then element must be constant, whether or not branch is taken.
-  const _ = <int>{if (true) nonConstInt}; //# 29: compile-time error
-  const _ = <int>{if (false) nonConstInt}; //# 30: compile-time error
-
-  // Else element must be constant, whether or not branch is taken.
-  const _ = <int>{if (true) 1 else nonConstInt}; //# 31: compile-time error
-  const _ = <int>{if (false) 1 else nonConstInt}; //# 32: compile-time error
-
-  // Then element must have right type if branch is chosen.
-  const _ = <int>{if (true) nonInt}; //# 33: compile-time error
-
-  // Else element must have right type if branch is chosen.
-  const _ = <int>{if (false) 9 else nonInt}; //# 34: compile-time error
-
-  // Cannot override operator.==().
-  const obj = 0.1;
-  const _ = {if (true) 0.1}; //# 35: compile-time error
-  const _ = {if (true) Duration(seconds: 0)}; //# 36: compile-time error
-  const _ = {if (true) obj}; //# 37: compile-time error
-
-  // Cannot have collision when branch is chosen.
-  const _ = <int>{1, if (true) 1}; //# 38: compile-time error
-  const _ = <int>{if (true) 1, if (true) 1}; //# 39: compile-time error
-}
-
-void testShortCircuit() {
-  // A const expression that throws causes a compile error if it occurs inside
-  // the chosen branch of an if.
-
-  // Store null in a dynamically-typed constant to avoid the type error on "+".
-  const dynamic nil = null;
-
-  // With no else.
-  const _ = [if (true) nil + 1]; //# 40: compile-time error
-
-  // With else.
-  const _ = [if (true) nil + 1 else 1]; //# 41: compile-time error
-  const _ = [if (false) 1 else nil + 1]; //# 42: compile-time error
+  // If cannot be used in a const collection.
+  const _ = [if (true) 1]; //# 00: compile-time error
+  const _ = [if (false) 1 else 2]; //# 01: compile-time error
+  const _ = {if (true) 1}; //# 02: compile-time error
+  const _ = {if (false) 1 else 2}; //# 03: compile-time error
+  const _ = {if (true) 1: 1}; //# 04: compile-time error
+  const _ = {if (false) 1: 1 else 2: 2}; //# 05: compile-time error
 }
diff --git a/tests/language_2/control_flow_collections/if_const_test.dart b/tests/language_2/control_flow_collections/if_const_test.dart
deleted file mode 100644
index db38174..0000000
--- a/tests/language_2/control_flow_collections/if_const_test.dart
+++ /dev/null
@@ -1,244 +0,0 @@
-// 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.
-
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
-
-import 'package:expect/expect.dart';
-
-import 'utils.dart';
-
-// Typed as dynamic to also test spreading a value of type dynamic.
-const dynamic list = [1, 2, 3];
-const dynamic map = {1: 1, 2: 2, 3: 3};
-const dynamic set = {1, 2, 3};
-
-const dynamic dynamicTrue = true;
-const Object objectTrue = true;
-
-void main() {
-  testList();
-  testMap();
-  testSet();
-  testShortCircuit();
-  testDuplicateKeys();
-  testKeyOrder();
-}
-
-void testList() {
-  // Then if true.
-  Expect.identical(list, const <int>[1, if (true) 2, 3]);
-
-  // Nothing if false and no else.
-  Expect.identical(list, const <int>[1, if (false) 9, 2, 3]);
-
-  // Else if false.
-  Expect.identical(list, const <int>[1, if (false) 9 else 2, 3]);
-
-  // Only if.
-  Expect.identical(const [1], const <int>[if (true) 1]);
-
-  // If at beginning.
-  Expect.identical(list, const <int>[if (true) 1, 2, 3]);
-
-  // If in middle.
-  Expect.identical(list, const <int>[1, if (true) 2, 3]);
-
-  // If at end.
-  Expect.identical(list, const <int>[1, 2, if (true) 3]);
-
-  // Multiple ifs.
-  Expect.identical(list,
-      const <int>[if (true) 1, if (false) 9, 2, if (true) 3]);
-
-  // Cast condition.
-  Expect.identical(const [1], const <int>[if (dynamicTrue) 1]);
-  Expect.identical(const [1], const <int>[if (objectTrue) 1]);
-
-  // Does not flatten nested collection literal.
-  Expect.identical(const [1], const [if (true) [1]].first);
-  Expect.identical(const {1: 1}, const [if (true) {1: 1}].first);
-  Expect.identical(const {1}, const [if (true) {1}].first);
-
-  // Nested spread.
-  Expect.identical(list,
-      const <int>[if (true) ...<int>[1, 2], if (false) 9 else ...<int>[3]]);
-
-  // Nested if in then.
-  Expect.identical(const [1],
-      const <int>[if (true) if (true) 1, if (true) if (false) 9]);
-
-  // Nested if in else.
-  Expect.identical(const [1], const <int>[if (false) 9 else if (true) 1]);
-}
-
-void testMap() {
-  // Then if true.
-  Expect.identical(map, const <int, int>{1: 1, if (true) 2: 2, 3: 3});
-
-  // Nothing if false and no else.
-  Expect.identical(map, const <int, int>{1: 1, if (false) 9: 9, 2: 2, 3: 3});
-
-  // Else if false.
-  Expect.identical(map,
-      const <int, int>{1: 1, if (false) 9: 9 else 2: 2, 3: 3});
-
-  // Only if.
-  Expect.identical(const {1: 1}, const <int, int>{if (true) 1: 1});
-
-  // If at beginning.
-  Expect.identical(map, const <int, int>{if (true) 1: 1, 2: 2, 3: 3});
-
-  // If in middle.
-  Expect.identical(map, const <int, int>{1: 1, if (true) 2: 2, 3: 3});
-
-  // If at end.
-  Expect.identical(map, const <int, int>{1: 1, 2: 2, if (true) 3: 3});
-
-  // Multiple ifs.
-  Expect.identical(map,
-      const <int, int>{if (true) 1: 1, if (false) 9: 9, 2: 2, if (true) 3: 3});
-
-  // Cast condition.
-  Expect.identical(const {1: 1}, const <int, int>{if (dynamicTrue) 1: 1});
-  Expect.identical(const {1: 1}, const <int, int>{if (objectTrue) 1: 1});
-
-  // Nested spread.
-  Expect.identical(map, const <int, int>{
-    if (true) ...<int, int>{1: 1, 2: 2},
-    if (false) 9: 9 else ...<int, int>{3: 3}
-  });
-
-  // Nested if in then.
-  Expect.identical(const {1: 1},
-      const <int, int>{if (true) if (true) 1: 1, if (true) if (false) 9: 9});
-
-  // Nested if in else.
-  Expect.identical(const {1: 1},
-      const <int, int>{if (false) 9: 9 else if (true) 1: 1});
-}
-
-void testSet() {
-  // Then if true.
-  Expect.identical(set, const <int>{1, if (true) 2, 3});
-
-  // Nothing if false and no else.
-  Expect.identical(set, const <int>{1, if (false) 9, 2, 3});
-
-  // Else if false.
-  Expect.identical(set, const <int>{1, if (false) 9 else 2, 3});
-
-  // Only if.
-  Expect.identical(const <int>{1}, const <int>{if (true) 1});
-
-  // If at beginning.
-  Expect.identical(set, const <int>{if (true) 1, 2, 3});
-
-  // If in middle.
-  Expect.identical(set, const <int>{1, if (true) 2, 3});
-
-  // If at end.
-  Expect.identical(set, const <int>{1, 2, if (true) 3});
-
-  // Multiple ifs.
-  Expect.identical(set,
-      const <int>{if (true) 1, if (false) 9, 2, if (true) 3});
-
-  // Cast condition.
-  Expect.identical(const <int>{1}, const <int>{if (dynamicTrue) 1});
-  Expect.identical(const <int>{1}, const <int>{if (objectTrue) 1});
-
-  // Does not flatten nested collection literal.
-  Expect.identical(const <int>[1], const <List<int>>{if (true) [1]}.first);
-  Expect.identical(
-      const <int, int>{1: 1}, const <Map<int, int>>{if (true) {1: 1}}.first);
-  Expect.identical(const <int>{1}, const <Set<int>>{if (true) {1}}.first);
-
-  // Nested spread.
-  Expect.identical(set,
-      const <int>{if (true) ...<int>[1, 2], if (false) 9 else ...<int>[3]});
-
-  // Nested if in then.
-  Expect.identical(const <int>{1},
-      const <int>{if (true) if (true) 1, if (true) if (false) 9});
-
-  // Nested if in else.
-  Expect.identical(const <int>{1}, const <int>{if (false) 9 else if (true) 1});
-}
-
-void testShortCircuit() {
-  // A const expression that throws does not cause a compile error if it occurs
-  // inside an unchosen branch of an if.
-
-  // Store null in a dynamically-typed constant to avoid the type error on "+".
-  const dynamic nil = null;
-
-  Expect.identical(const <int>[1],
-      const <int>[if (true) 1, if (false) nil + 1]);
-  Expect.identical(const <int>[1, 2],
-      const <int>[if (true) 1 else nil + 1, if (false) nil + 1 else 2]);
-
-  Expect.identical(const <int, int>{1: 1}, const <int, int>{
-    if (true) 1: 1,
-    if (false) nil + 1: 9,
-    if (false) 9: nil + 1
-  });
-  Expect.identical(const <int, int>{1: 1, 2: 2}, const <int, int>{
-    if (true) 1: 1 else nil + 1: 9,
-    if (false) 9: nil + 1 else 2: 2
-  });
-
-  Expect.identical(const <int>{1},
-      const <int>{if (true) 1, if (false) nil + 1});
-  Expect.identical(const <int>{1, 2},
-      const <int>{if (true) 1 else nil + 1, if (false) nil + 1 else 2});
-
-  // A const expression whose value isn't the right type does not cause a
-  // compile error if it occurs inside an unchosen branch.
-  const dynamic nonInt = "s";
-
-  Expect.identical(const <int>[1], const <int>[if (true) 1, if (false) nonInt]);
-  Expect.identical(const <int>[1, 2],
-      const <int>[if (true) 1 else nonInt, if (false) nonInt else 2]);
-
-  Expect.identical(const <int, int>{1: 1}, const <int, int>{
-    if (true) 1: 1,
-    if (false) nonInt: 9,
-    if (false) 9: nonInt
-  });
-  Expect.identical(const <int, int>{1: 1, 2: 2}, const <int, int>{
-    if (true) 1: 1 else nonInt: 9,
-    if (false) 9: nonInt else 2: 2
-  });
-
-  Expect.identical(const <int>{1}, const <int>{if (true) 1, if (false) nonInt});
-  Expect.identical(const <int>{1, 2},
-      const <int>{if (true) 1 else nonInt, if (false) nonInt else 2});
-}
-
-void testDuplicateKeys() {
-  // Duplicate keys from unchosen branches are not an error.
-  Expect.mapEquals(map, <int, int>{
-    1: 1,
-    if (false) 1: 1,
-    if (true) 2: 2 else 3: 3,
-    3: 3
-  });
-
-  Expect.setEquals(set, const <int>{1, if (false) 1, if (true) 2 else 3, 3});
-}
-
-void testKeyOrder() {
-  // Canonicalization isn't affected by which elements are conditional.
-  Expect.identical(map,
-      const <int, int>{1: 1, if (true) 2: 2, if (false) 9: 9, 3: 3});
-  Expect.identical(map,
-      const <int, int>{if (false) 9: 9 else 1: 1, 2: 2, if (true) 3: 3});
-
-  Expect.identical(set, const <int>{1, if (true) 2, if (false) 9, 3});
-  Expect.identical(set, const <int>{if (false) 9 else 1, 2, if (true) 3});
-
-  // Ordering does affect canonicalization.
-  Expect.notIdentical(map, const <int, int>{1: 1, if (true) 3: 3, 2: 2});
-  Expect.notIdentical(set, const <int>{1, if (true) 3, 2});
-}
diff --git a/tests/language_2/control_flow_collections/if_inference_test.dart b/tests/language_2/control_flow_collections/if_inference_test.dart
index 454c903..0c73618 100644
--- a/tests/language_2/control_flow_collections/if_inference_test.dart
+++ b/tests/language_2/control_flow_collections/if_inference_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 // Test how control flow interacts with inference.
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/control_flow_collections/if_null_condition_test.dart b/tests/language_2/control_flow_collections/if_null_condition_test.dart
index 10cbb6b..c5a1e96 100644
--- a/tests/language_2/control_flow_collections/if_null_condition_test.dart
+++ b/tests/language_2/control_flow_collections/if_null_condition_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/control_flow_collections/if_promotion_test.dart b/tests/language_2/control_flow_collections/if_promotion_test.dart
index 152d225..5622a47 100644
--- a/tests/language_2/control_flow_collections/if_promotion_test.dart
+++ b/tests/language_2/control_flow_collections/if_promotion_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 class A {
   var a = "a";
diff --git a/tests/language_2/control_flow_collections/if_runtime_error_test.dart b/tests/language_2/control_flow_collections/if_runtime_error_test.dart
index 8bf5469..8e48bea 100644
--- a/tests/language_2/control_flow_collections/if_runtime_error_test.dart
+++ b/tests/language_2/control_flow_collections/if_runtime_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/control_flow_collections/if_test.dart b/tests/language_2/control_flow_collections/if_test.dart
index 4a922f8..c835dd6 100644
--- a/tests/language_2/control_flow_collections/if_test.dart
+++ b/tests/language_2/control_flow_collections/if_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/control_flow_collections/map_set_ambiguity_error_test.dart b/tests/language_2/control_flow_collections/map_set_ambiguity_error_test.dart
index 0c4073e..452ac9b 100644
--- a/tests/language_2/control_flow_collections/map_set_ambiguity_error_test.dart
+++ b/tests/language_2/control_flow_collections/map_set_ambiguity_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 // Test cases where the syntax is ambiguous between maps and sets when control
 // flow elements contain spreads.
diff --git a/tests/language_2/control_flow_collections/map_set_ambiguity_test.dart b/tests/language_2/control_flow_collections/map_set_ambiguity_test.dart
index 3331770..6ce77de 100644
--- a/tests/language_2/control_flow_collections/map_set_ambiguity_test.dart
+++ b/tests/language_2/control_flow_collections/map_set_ambiguity_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 // Test cases where the syntax is ambiguous between maps and sets because of
 // spreads inside control flow.
diff --git a/tests/language_2/control_flow_collections/syntax_error_test.dart b/tests/language_2/control_flow_collections/syntax_error_test.dart
index 25bff6b..e0f0ba8 100644
--- a/tests/language_2/control_flow_collections/syntax_error_test.dart
+++ b/tests/language_2/control_flow_collections/syntax_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections,spread-collections
 
 void main() {
   // No then element.
diff --git a/tests/language_2/control_flow_collections/syntax_test.dart b/tests/language_2/control_flow_collections/syntax_test.dart
index 71c3f62..0810aec 100644
--- a/tests/language_2/control_flow_collections/syntax_test.dart
+++ b/tests/language_2/control_flow_collections/syntax_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 // Tests syntax edge cases.
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/control_flow_collections/type_error_test.dart b/tests/language_2/control_flow_collections/type_error_test.dart
index 533dc18..02b6aa0 100644
--- a/tests/language_2/control_flow_collections/type_error_test.dart
+++ b/tests/language_2/control_flow_collections/type_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=control-flow-collections,constant-update-2018
+// SharedOptions=--enable-experiment=control-flow-collections
 
 void main() {
   // Non-Boolean if condition.
@@ -11,42 +11,42 @@
   var _ = <int>{if (1) 2}; //# 02: compile-time error
 
   // Wrong then element type.
-  var _ = <int>[if (true) "s"]; //# 06: compile-time error
-  var _ = <int, int>{if (true) "s": 1}; //# 07: compile-time error
-  var _ = <int, int>{if (true) 1: "s"}; //# 08: compile-time error
-  var _ = <int>{if (true) "s"}; //# 09: compile-time error
+  var _ = <int>[if (true) "s"]; //# 04: compile-time error
+  var _ = <int, int>{if (true) "s": 1}; //# 05: compile-time error
+  var _ = <int, int>{if (true) 1: "s"}; //# 06: compile-time error
+  var _ = <int>{if (true) "s"}; //# 07: compile-time error
 
   // Wrong else element type.
-  var _ = <int>[if (false) 1 else "s"]; //# 10: compile-time error
-  var _ = <int, int>{if (false) 1: 1 else "s": 2}; //# 11: compile-time error
-  var _ = <int, int>{if (false) 1: 1 else 2: "s"}; //# 12: compile-time error
-  var _ = <int>{if (false) 1 else "s"}; //# 13: compile-time error
+  var _ = <int>[if (false) 1 else "s"]; //# 08 compile-time error
+  var _ = <int, int>{if (false) 1: 1 else "s": 2}; //# 09: compile-time error
+  var _ = <int, int>{if (false) 1: 1 else 2: "s"}; //# 10: compile-time error
+  var _ = <int>{if (false) 1 else "s"}; //# 11: compile-time error
 
   // Non-Boolean for condition.
-  var _ = <int>[for (; 1;) 2]; //# 14: compile-time error
-  var _ = <int, int>{for (; 1;) 2: 2}; //# 15: compile-time error
-  var _ = <int>{for (; 1;) 2}; //# 16: compile-time error
+  var _ = <int>[for (; 1;) 2]; //# 12: compile-time error
+  var _ = <int, int>{for (; 1;) 2: 2}; //# 13: compile-time error
+  var _ = <int>{for (; 1;) 2}; //# 14: compile-time error
 
   // Wrong for-in element type.
   List<String> s = ["s"];
-  var _ = <int>[for (int i in s) 1]; //# 20: compile-time error
-  var _ = <int, int>{for (int i in s) 1: 1}; //# 21: compile-time error
-  var _ = <int>{for (int i in s) 1}; //# 22: compile-time error
+  var _ = <int>[for (int i in s) 1]; //# 15: compile-time error
+  var _ = <int, int>{for (int i in s) 1: 1}; //# 16: compile-time error
+  var _ = <int>{for (int i in s) 1}; //# 17: compile-time error
 
   // Wrong for declaration element type.
-  var _ = <int>[for (int i = "s"; false;) 1]; //# 23: compile-time error
-  var _ = <int, int>{for (int i = "s"; false;) 1: 1}; //# 24: compile-time error
-  var _ = <int>{for (int i = "s"; false;) 1}; //# 25: compile-time error
+  var _ = <int>[for (int i = "s"; false;) 1]; //# 18: compile-time error
+  var _ = <int, int>{for (int i = "s"; false;) 1: 1}; //# 19: compile-time error
+  var _ = <int>{for (int i = "s"; false;) 1}; //# 20: compile-time error
 
   // Wrong for body element type.
-  var _ = <int>[for (; false;) "s"]; //# 26: compile-time error
-  var _ = <int, int>{for (; false;) "s": 1}; //# 27: compile-time error
-  var _ = <int, int>{for (; false;) 1: "s"}; //# 28: compile-time error
-  var _ = <int>{for (; false;) "s"}; //# 29: compile-time error
+  var _ = <int>[for (; false;) "s"]; //# 21: compile-time error
+  var _ = <int, int>{for (; false;) "s": 1}; //# 22: compile-time error
+  var _ = <int, int>{for (; false;) 1: "s"}; //# 23: compile-time error
+  var _ = <int>{for (; false;) "s"}; //# 24: compile-time error
 
   // Non-iterable sequence type.
   int nonIterable = 3;
-  var _ = <int>[for (int i in nonIterable) 1]; //# 30: compile-time error
-  var _ = <int, int>{for (int i in nonIterable) 1: 1}; //# 31: compile-time error
-  var _ = <int>{for (int i in nonIterable) 1}; //# 32: compile-time error
+  var _ = <int>[for (int i in nonIterable) 1]; //# 25: compile-time error
+  var _ = <int, int>{for (int i in nonIterable) 1: 1}; //# 26: compile-time error
+  var _ = <int>{for (int i in nonIterable) 1}; //# 27: compile-time error
 }
diff --git a/tests/language_2/spread_collections/await_test.dart b/tests/language_2/spread_collections/await_test.dart
index 839cfc9..886a94a 100644
--- a/tests/language_2/spread_collections/await_test.dart
+++ b/tests/language_2/spread_collections/await_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 import "package:async_helper/async_helper.dart";
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/spread_collections/const_error_test.dart b/tests/language_2/spread_collections/const_error_test.dart
index 7b4bb94..c186f13 100644
--- a/tests/language_2/spread_collections/const_error_test.dart
+++ b/tests/language_2/spread_collections/const_error_test.dart
@@ -2,67 +2,24 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
-
-import 'dart:collection';
+// SharedOptions=--enable-experiment=spread-collections
 
 import 'package:expect/expect.dart';
-import 'helper_classes.dart';
 
-var nonConstList = <int>[];
-var nonConstMap = <int, String>{};
-const dynamic nonIterable = 3;
-const dynamic nonMap = 3;
+const constList = [1, 2, 3, 4];
+const constSet = {1, 2, 3, 4};
+const constMap = {1: 1, 2: 2, 3: 3, 4: 4};
 
 void main() {
-  testList();
-  testMap();
-  testSet();
-}
+  var list = [1, 2, 3];
+  var set = {1, 2, 3};
+  var map = {1:1, 2:2, 3:3};
 
-void testList() {
-  // Must be constant.
-  const _ = <int>[...nonConstList]; //# 01: compile-time error
-
-  // Must be iterable.
-  const _ = <int>[...nonIterable]; //# 02: compile-time error
-
-  // Cannot be custom iterable type.
-  const _ = <int>[...ConstIterable()]; //# 03: compile-time error
-}
-
-void testMap() {
-  // Must be constant.
-  const _ = <int, String>{...nonConstMap}; //# 04: compile-time error
-
-  // Must be map.
-  const _ = <int, String>{...nonMap}; //# 05: compile-time error
-
-  // Cannot be custom map type.
-  const _ = <int, String>{...ConstMap()}; //# 06: compile-time error
-
-  // Cannot have key collision.
-  const _ = <int, String>{1: "s", ...{1: "t"}}; //# 07: compile-time error
-  const _ = <int, String>{...{1: "s"}, ...{1: "t"}}; //# 08: compile-time error
-}
-
-void testSet() {
-  // Must be constant.
-  const _ = <int>{...nonConstList}; //# 09: compile-time error
-
-  // Must be iterable.
-  const _ = <int>{...nonIterable}; //# 10: compile-time error
-
-  // Cannot be custom iterable type.
-  const _ = <int>{...ConstIterable()}; //# 11: compile-time error
-
-  // Cannot override operator.==().
-  const obj = 0.1;
-  const _ = {...[0.1]}; //# 12: compile-time error
-  const _ = {...[Duration(seconds: 0)]}; //# 13: compile-time error
-  const _ = {...[obj]}; //# 14: compile-time error
-
-  // Cannot have collision.
-  const _ = {1, ...[1]}; //# 15: compile-time error
-  const _ = {...[1], ...[1]}; //# 16: compile-time error
+  // Spread cannot be used in a const collection.
+  const _ = [...list]; //# 00: compile-time error
+  const _ = [...constList]; //# 01: compile-time error
+  const _ = {...set}; //# 02: compile-time error
+  const _ = {...constSet}; //# 03: compile-time error
+  const _ = {...map}; //# 04: compile-time error
+  const _ = {...constMap}; //# 05: compile-time error
 }
diff --git a/tests/language_2/spread_collections/const_test.dart b/tests/language_2/spread_collections/const_test.dart
deleted file mode 100644
index dccfab2..0000000
--- a/tests/language_2/spread_collections/const_test.dart
+++ /dev/null
@@ -1,182 +0,0 @@
-// 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.
-
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
-
-import 'package:expect/expect.dart';
-
-// Typed as dynamic to also test spreading a value of type dynamic.
-const dynamic list = [1, 2, 3, 4];
-const dynamic map = {1: 1, 2: 2, 3: 3, 4: 4};
-const dynamic set = {1, 2, 3, 4};
-
-void main() {
-  testList();
-  testMap();
-  testSet();
-  testKeyOrder();
-}
-
-void testList() {
-  // Only spread.
-  Expect.identical(list, const <int>[...list]);
-  Expect.identical(list, const <int>[...set]);
-
-  // Spread at beginning.
-  Expect.identical(list, const <int>[...<int>[1, 2], 3, 4]);
-
-  // Spread in middle.
-  Expect.identical(list, const <int>[1, ...<int>[2, 3], 4]);
-
-  // Spread at end.
-  Expect.identical(list, const <int>[1, 2, ...<int>[3, 4]]);
-
-  // Empty spreads.
-  Expect.identical(list,
-      const <int>[...<int>[], 1, 2, ...<int>[], 3, 4, ...<int>[]]);
-
-  // Multiple spreads.
-  Expect.identical(list,
-      const <int>[...<int>[1], 2, ...<int>[3, 4]]);
-
-  // Nested spreads.
-  Expect.identical(list,
-      const <int>[...<int>[...<int>[1, 2], ...<int>[3, 4]]]);
-
-  // Null-aware.
-  Expect.identical(list,
-      const <int>[1, ...?<int>[2, 3], ...?(null), ...?<int>[4]]);
-
-  // Does not deep flatten.
-  Expect.identical(
-      const <Object>[1, 2, <int>[3], 4],
-      const <Object>[1, ...<Object>[2, <int>[3], 4]]);
-
-  // Establishes const context.
-  Expect.identical(const <Symbol>[Symbol("sym")],
-      const <Symbol>[...<Symbol>[Symbol("sym")]]);
-}
-
-void testMap() {
-  // Only spread.
-  Expect.identical(map, const <int, int>{...map});
-
-  // Spread at beginning.
-  Expect.identical(map,
-      const <int, int>{...<int, int>{1: 1, 2: 2}, 3: 3, 4: 4});
-
-  // Spread in middle.
-  Expect.identical(map,
-      const <int, int>{1: 1, ...<int, int>{2: 2, 3: 3}, 4: 4});
-
-  // Spread at end.
-  Expect.identical(map,
-      const <int, int>{1: 1, 2: 2, ...<int, int>{3: 3, 4: 4}});
-
-  // Empty spreads.
-  Expect.identical(map, const <int, int>{
-    ...<int, int>{},
-    1: 1,
-    2: 2,
-    ...<int, int>{},
-    3: 3,
-    4: 4,
-    ...<int, int>{}
-  });
-
-  // Multiple spreads.
-  Expect.identical(map,
-      const <int, int>{...<int, int>{1: 1}, 2: 2, ...<int, int>{3: 3, 4: 4}});
-
-  // Nested spreads.
-  Expect.identical(map, const <int, int>{
-    ...<int, int>{
-      ...<int, int>{1: 1, 2: 2},
-      ...<int, int>{3: 3, 4: 4}
-    }
-  });
-
-  // Null-aware.
-  Expect.identical(map, const <int, int>{
-    1: 1,
-    ...?<int, int>{2: 2, 3: 3},
-    ...?(null),
-    ...?<int, int>{4: 4}
-  });
-
-  // Does not deep flatten.
-  Expect.identical(const <int, Object>{
-    1: 1,
-    2: 2,
-    3: <int, int>{3: 3},
-    4: 4
-  }, const <int, Object>{
-    1: 1,
-    ...<int, Object>{
-      2: 2,
-      3: <int, int>{3: 3},
-      4: 4
-    }
-  });
-
-  // Establishes const context.
-  Expect.identical(const <Symbol, Symbol>{
-    Symbol("sym"): Symbol("bol")
-  }, const <Symbol, Symbol>{
-    ...<Symbol, Symbol>{Symbol("sym"): Symbol("bol")}
-  });
-}
-
-void testSet() {
-  // Only spread.
-  Expect.identical(set, const <int>{...set});
-  Expect.identical(set, const <int>{...list});
-
-  // Spread at beginning.
-  Expect.identical(set, const <int>{...<int>[1, 2], 3, 4});
-
-  // Spread in middle.
-  Expect.identical(set, const <int>{1, ...<int>[2, 3], 4});
-
-  // Spread at end.
-  Expect.identical(set, const <int>{1, 2, ...<int>[3, 4]});
-
-  // Empty spreads.
-  Expect.identical(set,
-      const <int>{...<int>[], 1, 2, ...<int>[], 3, 4, ...<int>[]});
-
-  // Multiple spreads.
-  Expect.identical(set, const <int>{...<int>[1], 2, ...<int>[3, 4]});
-
-  // Nested spreads.
-  Expect.identical(set, const <int>{...<int>{...<int>[1, 2], ...<int>[3, 4]}});
-
-  // Null-aware.
-  Expect.identical(set,
-      const <int>{1, ...?<int>[2, 3], ...?(null), ...?<int>[4]});
-
-  // Does not deep flatten.
-  Expect.identical(const <Object>{1, 2, <int>{3}, 4},
-      const <Object>{1, ...<Object>{2, <int>{3}, 4}});
-
-  // Establishes const context.
-  Expect.identical(const <Symbol>{Symbol("sym")},
-      const <Symbol>{...<Symbol>{Symbol("sym")}});
-}
-
-void testKeyOrder() {
-  // Canonicalization isn't affected by which elements are spread.
-  Expect.identical(map,
-      const <int, int>{1: 1, ...<int, int>{2: 2, 3: 3}, 4: 4});
-  Expect.identical(map,
-      const <int, int>{1: 1, ...<int, int>{2: 2}, 3: 3, ...<int, int>{4: 4}});
-
-  Expect.identical(set, const <int>{1, ...<int>{2, 3}, 4});
-  Expect.identical(set, const <int>{1, ...<int>{2}, 3, ...<int>{4}});
-
-  // Ordering does affect canonicalization.
-  Expect.notIdentical(const <int, int>{1: 1, 2: 2, 3: 3},
-      const <int, int>{1: 1, ...<int, int>{3: 3, 2: 2}});
-  Expect.notIdentical(const <int>{1, 2, 3}, const <int>{1, ...<int>{3, 2}});
-}
diff --git a/tests/language_2/spread_collections/inference_test.dart b/tests/language_2/spread_collections/inference_test.dart
index 7d0ffef..e3c429f 100644
--- a/tests/language_2/spread_collections/inference_test.dart
+++ b/tests/language_2/spread_collections/inference_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 // Test how spread interacts with inference.
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/spread_collections/map_set_ambiguity_error_test.dart b/tests/language_2/spread_collections/map_set_ambiguity_error_test.dart
index 458f264..5f6576d 100644
--- a/tests/language_2/spread_collections/map_set_ambiguity_error_test.dart
+++ b/tests/language_2/spread_collections/map_set_ambiguity_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 // Test cases where the syntax is ambiguous between maps and sets.
 import 'dart:collection';
diff --git a/tests/language_2/spread_collections/map_set_ambiguity_test.dart b/tests/language_2/spread_collections/map_set_ambiguity_test.dart
index 4b11ccf..9b3d537 100644
--- a/tests/language_2/spread_collections/map_set_ambiguity_test.dart
+++ b/tests/language_2/spread_collections/map_set_ambiguity_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 // Test cases where the syntax is ambiguous between maps and sets.
 import 'dart:collection';
diff --git a/tests/language_2/spread_collections/runtime_error_test.dart b/tests/language_2/spread_collections/runtime_error_test.dart
index 095e77b..ad74289 100644
--- a/tests/language_2/spread_collections/runtime_error_test.dart
+++ b/tests/language_2/spread_collections/runtime_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/spread_collections/spread_test.dart b/tests/language_2/spread_collections/spread_test.dart
index bb2e166..7bc721d 100644
--- a/tests/language_2/spread_collections/spread_test.dart
+++ b/tests/language_2/spread_collections/spread_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/language_2/spread_collections/syntax_error_test.dart b/tests/language_2/spread_collections/syntax_error_test.dart
index 96802da..05261cd 100644
--- a/tests/language_2/spread_collections/syntax_error_test.dart
+++ b/tests/language_2/spread_collections/syntax_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 void main() {
   // Spread nothing.
diff --git a/tests/language_2/spread_collections/syntax_test.dart b/tests/language_2/spread_collections/syntax_test.dart
index 716ec22..7100394 100644
--- a/tests/language_2/spread_collections/syntax_test.dart
+++ b/tests/language_2/spread_collections/syntax_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 // Tests syntax edge cases.
 import 'package:expect/expect.dart';
diff --git a/tests/language_2/spread_collections/type_error_test.dart b/tests/language_2/spread_collections/type_error_test.dart
index 4c7a338..68cf98c 100644
--- a/tests/language_2/spread_collections/type_error_test.dart
+++ b/tests/language_2/spread_collections/type_error_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// SharedOptions=--enable-experiment=spread-collections,constant-update-2018
+// SharedOptions=--enable-experiment=spread-collections
 
 void main() {
   // Spread non-iterable or non-map.