diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart index 08de60500bc..6aaff259385 100644 --- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart +++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart @@ -3271,48 +3271,6 @@ Message _withArgumentsExperimentNotEnabled(String string, String string2) { arguments: {'string': string, 'string2': string2}); } -// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. -const Code codeExperimentNotEnabledNoFlag = - messageExperimentNotEnabledNoFlag; - -// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. -const MessageCode messageExperimentNotEnabledNoFlag = const MessageCode( - "ExperimentNotEnabledNoFlag", - analyzerCodes: ["ParserErrorCode.EXPERIMENT_NOT_ENABLED"], - problemMessage: - r"""This requires the null safety language feature, which is experimental.""", - correctionMessage: - r"""You can enable the experiment using the '--enable-experiment=non-nullable' command line option."""); - -// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. -const Template - templateExperimentNotEnabledNoFlagInvalidLanguageVersion = - const Template( - problemMessageTemplate: - r"""This requires the null safety language feature, which is experimental and requires language version of #string2 or higher.""", - correctionMessageTemplate: - r"""You can enable the experiment using the '--enable-experiment=non-nullable' command line option.""", - withArguments: - _withArgumentsExperimentNotEnabledNoFlagInvalidLanguageVersion); - -// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. -const Code - codeExperimentNotEnabledNoFlagInvalidLanguageVersion = - const Code( - "ExperimentNotEnabledNoFlagInvalidLanguageVersion", - analyzerCodes: ["ParserErrorCode.EXPERIMENT_NOT_ENABLED"]); - -// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. -Message _withArgumentsExperimentNotEnabledNoFlagInvalidLanguageVersion( - String string2) { - if (string2.isEmpty) throw 'No string provided'; - return new Message(codeExperimentNotEnabledNoFlagInvalidLanguageVersion, - problemMessage: - """This requires the null safety language feature, which is experimental and requires language version of ${string2} or higher.""", - correctionMessage: """You can enable the experiment using the '--enable-experiment=non-nullable' command line option.""", - arguments: {'string2': string2}); -} - // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. const Code codeExplicitExtensionArgumentMismatch = messageExplicitExtensionArgumentMismatch; diff --git a/pkg/compiler/test/sourcemaps/stacktrace_test.dart b/pkg/compiler/test/sourcemaps/stacktrace_test.dart index 7468227562b..00ea52f6a3b 100644 --- a/pkg/compiler/test/sourcemaps/stacktrace_test.dart +++ b/pkg/compiler/test/sourcemaps/stacktrace_test.dart @@ -89,7 +89,6 @@ Future runTest(Test test, String config, '--libraries-spec=$sdkLibrariesSpecificationPath', '--packages=${Platform.packageConfig}', Flags.testMode, - '--enable-experiment=extension-methods', input, ]..addAll(options); print("Compiling dart2js ${arguments.join(' ')}"); diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart index 582b2c36fcf..50570c9ae8f 100644 --- a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart +++ b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart @@ -125,17 +125,17 @@ const Map expiredExperimentalFlags = { ExperimentalFlag.constructorTearoffs: false, ExperimentalFlag.controlFlowCollections: true, ExperimentalFlag.enhancedEnums: false, - ExperimentalFlag.extensionMethods: false, + ExperimentalFlag.extensionMethods: true, ExperimentalFlag.extensionTypes: false, - ExperimentalFlag.genericMetadata: false, + ExperimentalFlag.genericMetadata: true, ExperimentalFlag.namedArgumentsAnywhere: false, - ExperimentalFlag.nonNullable: false, - ExperimentalFlag.nonfunctionTypeAliases: false, + ExperimentalFlag.nonNullable: true, + ExperimentalFlag.nonfunctionTypeAliases: true, ExperimentalFlag.setLiterals: true, ExperimentalFlag.spreadCollections: true, ExperimentalFlag.superParameters: false, ExperimentalFlag.testExperiment: false, - ExperimentalFlag.tripleShift: false, + ExperimentalFlag.tripleShift: true, ExperimentalFlag.valueClass: false, ExperimentalFlag.variance: false, }; diff --git a/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart b/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart index fa89f685dd3..3e8326c72c8 100644 --- a/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart +++ b/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart @@ -12,8 +12,6 @@ import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' show Token; import 'package:kernel/ast.dart'; -import '../../api_prototype/experimental_flags.dart'; - import '../fasta_codes.dart'; import '../problems.dart' as problems @@ -97,8 +95,7 @@ abstract class StackListenerImpl extends StackListener { token.charOffset, token.charCount); } - } else if (libraryBuilder.loader.target - .isExperimentEnabledByDefault(ExperimentalFlag.nonNullable)) { + } else { if (libraryBuilder.languageVersion.version < libraryBuilder.enableNonNullableVersionInLibrary) { addProblem( @@ -110,25 +107,6 @@ abstract class StackListenerImpl extends StackListener { addProblem(templateExperimentDisabled.withArguments('non-nullable'), token.offset, noLength); } - } else if (!libraryBuilder.loader.target - .isExperimentEnabledGlobally(ExperimentalFlag.nonNullable)) { - if (libraryBuilder.languageVersion.version < - libraryBuilder.enableNonNullableVersionInLibrary) { - addProblem( - templateExperimentNotEnabledNoFlagInvalidLanguageVersion - .withArguments( - libraryBuilder.enableNonNullableVersionInLibrary.toText()), - token.offset, - noLength); - } else { - addProblem(messageExperimentNotEnabledNoFlag, token.offset, noLength); - } - } else { - addProblem( - templateExperimentNotEnabled.withArguments('non-nullable', - libraryBuilder.enableNonNullableVersionInLibrary.toText()), - token.offset, - noLength); } } diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml index b53dc759513..6b7772e1cd3 100644 --- a/pkg/front_end/messages.yaml +++ b/pkg/front_end/messages.yaml @@ -282,16 +282,6 @@ ExperimentNotEnabled: correctionMessage: "Try updating your pubspec.yaml to set the minimum SDK constraint to #string2 or higher, and running 'pub get'." analyzerCode: ParserErrorCode.EXPERIMENT_NOT_ENABLED -ExperimentNotEnabledNoFlag: - problemMessage: "This requires the null safety language feature, which is experimental." - correctionMessage: "You can enable the experiment using the '--enable-experiment=non-nullable' command line option." - analyzerCode: ParserErrorCode.EXPERIMENT_NOT_ENABLED - -ExperimentNotEnabledNoFlagInvalidLanguageVersion: - problemMessage: "This requires the null safety language feature, which is experimental and requires language version of #string2 or higher." - correctionMessage: "You can enable the experiment using the '--enable-experiment=non-nullable' command line option." - analyzerCode: ParserErrorCode.EXPERIMENT_NOT_ENABLED - ExperimentDisabled: problemMessage: "This requires the '#string' language feature to be enabled." correctionMessage: "The feature is on by default but is currently disabled, maybe because the '--enable-experiment=no-#string' command line option is passed." diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart b/pkg/front_end/testcases/extensions/extension_methods.dart index 3b790498e94..958a3134972 100644 --- a/pkg/front_end/testcases/extensions/extension_methods.dart +++ b/pkg/front_end/testcases/extensions/extension_methods.dart @@ -1,8 +1,8 @@ // 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. + // @dart=2.9 -// SharedOptions=--enable-experiment=extension-methods import 'package:expect/expect.dart'; diff --git a/pkg/front_end/testcases/extensions/use_this.dart b/pkg/front_end/testcases/extensions/use_this.dart index 32ef9d91dd0..8a23cb9e6d8 100644 --- a/pkg/front_end/testcases/extensions/use_this.dart +++ b/pkg/front_end/testcases/extensions/use_this.dart @@ -1,8 +1,8 @@ // 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. + // @dart=2.9 -// SharedOptions=--enable-experiment=extension-methods class A1 {} @@ -30,4 +30,4 @@ extension B2 on B1 { } } -main() {} \ No newline at end of file +main() {} diff --git a/runtime/vm/experimental_features.cc b/runtime/vm/experimental_features.cc index f1b4d7f259f..f272686311b 100644 --- a/runtime/vm/experimental_features.cc +++ b/runtime/vm/experimental_features.cc @@ -18,7 +18,16 @@ namespace dart { bool GetExperimentalFeatureDefault(ExperimentalFeature feature) { constexpr bool kFeatureValues[] = { - true, true, true, true, true, true, true, true, true, true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, }; ASSERT(static_cast(feature) < ARRAY_SIZE(kFeatureValues)); return kFeatureValues[static_cast(feature)]; @@ -26,16 +35,16 @@ bool GetExperimentalFeatureDefault(ExperimentalFeature feature) { const char* GetExperimentalFeatureName(ExperimentalFeature feature) { constexpr const char* kFeatureNames[] = { - "nonfunction-type-aliases", - "non-nullable", - "extension-methods", - "constant-update-2018", - "control-flow-collections", - "generic-metadata", - "set-literals", - "spread-collections", - "triple-shift", - "constructor-tearoffs", + "nonfunction-type-aliases", + "non-nullable", + "extension-methods", + "constant-update-2018", + "control-flow-collections", + "generic-metadata", + "set-literals", + "spread-collections", + "triple-shift", + "constructor-tearoffs", }; ASSERT(static_cast(feature) < ARRAY_SIZE(kFeatureNames)); return kFeatureNames[static_cast(feature)]; diff --git a/tests/language/nonfunction_type_aliases/basic_syntax_test.dart b/tests/language/nonfunction_type_aliases/basic_syntax_test.dart index eb61a95ac31..e83763cc18c 100644 --- a/tests/language/nonfunction_type_aliases/basic_syntax_test.dart +++ b/tests/language/nonfunction_type_aliases/basic_syntax_test.dart @@ -2,8 +2,6 @@ // 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=non-nullable - typedef T0 = void; typedef T1 = Function; typedef T2 = List; diff --git a/tests/language/nonfunction_type_aliases/nnbd_syntax_test.dart b/tests/language/nonfunction_type_aliases/nnbd_syntax_test.dart index d14de11521e..4463ca95303 100644 --- a/tests/language/nonfunction_type_aliases/nnbd_syntax_test.dart +++ b/tests/language/nonfunction_type_aliases/nnbd_syntax_test.dart @@ -2,15 +2,13 @@ // 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=non-nullable - typedef T0 = Function?; typedef T1 = List?; typedef T2 = Map?; typedef T3 = Never? Function(void)?; typedef T4 = X? Function(X?, {required X? name})?; -typedef T5> = - X? Function(Y?, [Map]); +typedef T5> = X? Function(Y?, + [Map]); void main() { // ignore:unused_local_variable diff --git a/tests/language/vm/regress_flutter_42845_test.dart b/tests/language/vm/regress_flutter_42845_test.dart index ac05e97211c..0b16f1461e8 100644 --- a/tests/language/vm/regress_flutter_42845_test.dart +++ b/tests/language/vm/regress_flutter_42845_test.dart @@ -2,8 +2,6 @@ // 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=extension-methods - // Tests exported extensions. import "regress_flutter_42845_lib.dart"; diff --git a/tests/lib/mirrors/method_mirror_extension_test.dart b/tests/lib/mirrors/method_mirror_extension_test.dart index 2d68474512c..79e39bb4fc4 100644 --- a/tests/lib/mirrors/method_mirror_extension_test.dart +++ b/tests/lib/mirrors/method_mirror_extension_test.dart @@ -2,8 +2,6 @@ // 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=extension-methods - library lib; import "dart:mirrors"; diff --git a/tools/experimental_features.yaml b/tools/experimental_features.yaml index 45d745b2d36..9aa634dd4f3 100644 --- a/tools/experimental_features.yaml +++ b/tools/experimental_features.yaml @@ -151,6 +151,7 @@ features: S s = 'feature enabled'; print(s); } + expired: true non-nullable: help: "Non Nullable by default" @@ -161,10 +162,12 @@ features: int? a = null; print('feature enabled'); } + expired: true extension-methods: help: "Extension Methods" enabledIn: '2.6.0' + expired: true constant-update-2018: help: "Enhanced constant expressions" @@ -181,6 +184,7 @@ features: Allow annotations to accept type arguments; also allow generic function types as type arguments. enabledIn: '2.14.0' + expired: true set-literals: help: "Set Literals" @@ -202,6 +206,7 @@ features: void main() { if ((A() >>> 1) == 42) print('feature enabled'); } + expired: true constructor-tearoffs: help: "Allow constructor tear-offs and explicit generic instantiations."