[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.