remove `AstBuilder.enableNonNullable`
Change-Id: Ifb7e049115297a34ed95a974b0a1e71540b54ce8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/367148
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index b7a04b5..3a2d1db 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -8,7 +8,6 @@
Message,
MessageCode,
codeBuiltInIdentifierInDeclaration,
- messageAbstractClassMember,
messageAbstractLateField,
messageAbstractStaticField,
messageConstConstructorWithBody,
@@ -16,7 +15,6 @@
messageConstructorWithTypeParameters,
messageDirectiveAfterDeclaration,
messageExpectedStatement,
- messageExternalField,
messageExternalLateField,
messageFieldInitializerOutsideConstructor,
messageIllegalAssignmentToNonAssignable,
@@ -110,9 +108,6 @@
bool parseFunctionBodies = true;
- /// `true` if non-nullable behavior is enabled.
- final bool enableNonNullable;
-
/// `true` if triple-shift behavior is enabled
final bool enableTripleShift;
@@ -162,7 +157,6 @@
this._featureSet, this._lineInfo,
[Uri? uri])
: errorReporter = FastaErrorReporter(errorReporter),
- enableNonNullable = _featureSet.isEnabled(Feature.non_nullable),
enableTripleShift = _featureSet.isEnabled(Feature.triple_shift),
enableNonFunctionTypeAliases =
_featureSet.isEnabled(Feature.nonfunction_type_aliases),
@@ -1238,25 +1232,17 @@
debugEvent("Fields");
if (abstractToken != null) {
- if (!enableNonNullable) {
+ if (staticToken != null) {
handleRecoverableError(
- messageAbstractClassMember, abstractToken, abstractToken);
- } else {
- if (staticToken != null) {
- handleRecoverableError(
- messageAbstractStaticField, abstractToken, abstractToken);
- }
- if (lateToken != null) {
- handleRecoverableError(
- messageAbstractLateField, abstractToken, abstractToken);
- }
+ messageAbstractStaticField, abstractToken, abstractToken);
+ }
+ if (lateToken != null) {
+ handleRecoverableError(
+ messageAbstractLateField, abstractToken, abstractToken);
}
}
if (externalToken != null) {
- if (!enableNonNullable) {
- handleRecoverableError(
- messageExternalField, externalToken, externalToken);
- } else if (lateToken != null) {
+ if (lateToken != null) {
handleRecoverableError(
messageExternalLateField, externalToken, externalToken);
}
@@ -1858,12 +1844,6 @@
var keyword = modifiers?.finalConstOrVarKeyword;
var covariantKeyword = modifiers?.covariantKeyword;
var requiredKeyword = modifiers?.requiredToken;
- if (!enableNonNullable && requiredKeyword != null) {
- _reportFeatureNotEnabled(
- feature: ExperimentalFeatures.non_nullable,
- startToken: requiredKeyword,
- );
- }
var metadata = pop() as List<AnnotationImpl>?;
var comment = _findComment(metadata,
@@ -2089,9 +2069,6 @@
void endFunctionType(Token functionToken, Token? questionMark) {
assert(optional('Function', functionToken));
debugEvent("FunctionType");
- if (!enableNonNullable) {
- reportErrorIfNullableType(questionMark);
- }
var parameters = pop() as FormalParameterListImpl;
var returnType = pop() as TypeAnnotationImpl?;
@@ -2110,9 +2087,6 @@
@override
void endFunctionTypedFormalParameter(Token nameToken, Token? question) {
debugEvent("FunctionTypedFormalParameter");
- if (!enableNonNullable) {
- reportErrorIfNullableType(question);
- }
var formalParameters = pop() as FormalParameterListImpl;
var returnType = pop() as TypeAnnotationImpl?;
@@ -3362,10 +3336,7 @@
debugEvent("TopLevelFields");
if (externalToken != null) {
- if (!enableNonNullable) {
- handleRecoverableError(
- messageExternalField, externalToken, externalToken);
- } else if (lateToken != null) {
+ if (lateToken != null) {
handleRecoverableError(
messageExternalLateField, externalToken, externalToken);
}
@@ -4537,15 +4508,10 @@
@override
void handleIndexedExpression(
Token? question, Token leftBracket, Token rightBracket) {
- assert(optional('[', leftBracket) ||
- (enableNonNullable && optional('?.[', leftBracket)));
+ assert(optional('[', leftBracket) || optional('?.[', leftBracket));
assert(optional(']', rightBracket));
debugEvent("IndexedExpression");
- if (!enableNonNullable) {
- reportErrorIfNullableType(question);
- }
-
var index = pop() as ExpressionImpl;
var target = pop() as ExpressionImpl?;
reportErrorIfSuper(index);
@@ -5025,19 +4991,13 @@
@override
void handleNonNullAssertExpression(Token bang) {
debugEvent('NonNullAssertExpression');
- if (!enableNonNullable) {
- _reportFeatureNotEnabled(
- feature: ExperimentalFeatures.non_nullable,
- startToken: bang,
- );
- } else {
- push(
- PostfixExpressionImpl(
- operand: pop() as ExpressionImpl,
- operator: bang,
- ),
- );
- }
+
+ push(
+ PostfixExpressionImpl(
+ operand: pop() as ExpressionImpl,
+ operator: bang,
+ ),
+ );
}
@override
@@ -5549,9 +5509,6 @@
@override
void handleType(Token beginToken, Token? question) {
debugEvent("Type");
- if (!enableNonNullable) {
- reportErrorIfNullableType(question);
- }
var arguments = pop() as TypeArgumentListImpl?;
var name = pop() as IdentifierImpl;
diff --git a/pkg/analyzer/test/dart/analysis/utilities_test.dart b/pkg/analyzer/test/dart/analysis/utilities_test.dart
index 31a6670..6ee9297 100644
--- a/pkg/analyzer/test/dart/analysis/utilities_test.dart
+++ b/pkg/analyzer/test/dart/analysis/utilities_test.dart
@@ -13,8 +13,6 @@
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
-import '../../util/feature_sets.dart';
-
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(UtilitiesTest);
@@ -88,25 +86,6 @@
throwsA(const TypeMatcher<ArgumentError>()));
}
- test_parseFile_featureSet_language_2_9() {
- String content = '''
-int? f() => 1;
-''';
- var featureSet = FeatureSets.language_2_9;
- expect(featureSet.isEnabled(Feature.non_nullable), isFalse);
- ParseStringResult result = _withMemoryFile(
- content,
- (resourceProvider, path) => parseFile(
- path: path,
- resourceProvider: resourceProvider,
- throwIfDiagnostics: false,
- featureSet: featureSet));
- expect(result.content, content);
- expect(result.errors, hasLength(1));
- expect(result.lineInfo, isNotNull);
- expect(result.unit.toString(), equals('int? f() => 1;'));
- }
-
test_parseFile_featureSet_language_latest() {
String content = '''
int? f() => 1;
@@ -174,20 +153,6 @@
throwsA(const TypeMatcher<ArgumentError>()));
}
- test_parseString_featureSet_nnbd_off() {
- String content = '''
-int? f() => 1;
-''';
- var featureSet = FeatureSets.language_2_9;
- expect(featureSet.isEnabled(Feature.non_nullable), isFalse);
- ParseStringResult result = parseString(
- content: content, throwIfDiagnostics: false, featureSet: featureSet);
- expect(result.content, content);
- expect(result.errors, hasLength(1));
- expect(result.lineInfo, isNotNull);
- expect(result.unit.toString(), equals('int? f() => 1;'));
- }
-
test_parseString_featureSet_nnbd_on() {
String content = '''
int? f() => 1;
diff --git a/pkg/analyzer/test/generated/formal_parameter_parser_test.dart b/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
index a6e157d..7cc7bb3 100644
--- a/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
+++ b/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
@@ -9,7 +9,6 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../util/ast_type_matchers.dart';
-import '../util/feature_sets.dart';
import 'parser_test_base.dart';
import 'test_support.dart';
@@ -74,58 +73,6 @@
expect(defaultParameter.isNamed, isTrue);
}
- void test_functionTyped_named_nullable_disabled() {
- ParameterKind kind = ParameterKind.NAMED;
- var defaultParameter = parseFormalParameter('a()? : null', kind,
- featureSet: FeatureSets.language_2_9,
- errorCodes: [ParserErrorCode.EXPERIMENT_NOT_ENABLED])
- as DefaultFormalParameter;
- var functionParameter =
- defaultParameter.parameter as FunctionTypedFormalParameter;
- expect(functionParameter.returnType, isNull);
- expect(functionParameter.name, isNotNull);
- expect(functionParameter.typeParameters, isNull);
- expect(functionParameter.parameters, isNotNull);
- expect(functionParameter.isNamed, isTrue);
- expect(functionParameter.question, isNotNull);
- expect(defaultParameter.separator, isNotNull);
- expect(defaultParameter.defaultValue, isNotNull);
- expect(defaultParameter.isNamed, isTrue);
- }
-
- void test_functionTyped_positional_nullable_disabled() {
- ParameterKind kind = ParameterKind.POSITIONAL;
- var defaultParameter = parseFormalParameter('a()? = null', kind,
- featureSet: FeatureSets.language_2_9,
- errorCodes: [ParserErrorCode.EXPERIMENT_NOT_ENABLED])
- as DefaultFormalParameter;
- var functionParameter =
- defaultParameter.parameter as FunctionTypedFormalParameter;
- expect(functionParameter.returnType, isNull);
- expect(functionParameter.name, isNotNull);
- expect(functionParameter.typeParameters, isNull);
- expect(functionParameter.parameters, isNotNull);
- expect(functionParameter.isOptionalPositional, isTrue);
- expect(functionParameter.question, isNotNull);
- expect(defaultParameter.separator, isNotNull);
- expect(defaultParameter.defaultValue, isNotNull);
- expect(defaultParameter.isOptionalPositional, isTrue);
- }
-
- void test_functionTyped_required_nullable_disabled() {
- ParameterKind kind = ParameterKind.REQUIRED;
- var functionParameter = parseFormalParameter('a()?', kind,
- featureSet: FeatureSets.language_2_9,
- errorCodes: [ParserErrorCode.EXPERIMENT_NOT_ENABLED])
- as FunctionTypedFormalParameter;
- expect(functionParameter.returnType, isNull);
- expect(functionParameter.name, isNotNull);
- expect(functionParameter.typeParameters, isNull);
- expect(functionParameter.parameters, isNotNull);
- expect(functionParameter.isRequiredPositional, isTrue);
- expect(functionParameter.question, isNotNull);
- }
-
void test_parseConstructorParameter_this() {
parseCompilationUnit('''
class C {
diff --git a/pkg/analyzer/test/generated/nnbd_parser_test.dart b/pkg/analyzer/test/generated/nnbd_parser_test.dart
index 716418c..641174f 100644
--- a/pkg/analyzer/test/generated/nnbd_parser_test.dart
+++ b/pkg/analyzer/test/generated/nnbd_parser_test.dart
@@ -198,12 +198,6 @@
parseCompilationUnit('D? foo(X? x) { X ? x2 = x : y; }');
}
- void test_enableNonNullable_false() {
- parseCompilationUnit('main() { x is String? ? (x + y) : z; }',
- errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 20, 1)],
- featureSet: FeatureSets.language_2_9);
- }
-
void test_for() {
parseCompilationUnit('main() { for(int x = 0; x < 7; ++x) { } }');
}
@@ -224,12 +218,6 @@
parseCompilationUnit('main() { for(int? x in [7, null]) { } }');
}
- void test_functionTypedFormalParameter_nullable_disabled() {
- parseCompilationUnit('void f(void p()?) {}',
- errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 15, 1)],
- featureSet: FeatureSets.language_2_9);
- }
-
test_fuzz_38113() async {
// https://github.com/dart-lang/sdk/issues/38113
parseCompilationUnit(r'+t{{r?this}}', errors: [
@@ -282,28 +270,6 @@
expect(expression.leftBracket.endGroup, expression.rightBracket);
}
- void test_indexed_nullAware_optOut() {
- CompilationUnit unit = parseCompilationUnit('''
-// @dart = 2.2
-main() { a?[7]; }''',
- errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 25, 1)]);
- var method = unit.declarations[0] as FunctionDeclaration;
- var body = method.functionExpression.body as BlockFunctionBody;
- var statement = body.block.statements[0] as ExpressionStatement;
- var expression = statement.expression as IndexExpressionImpl;
- expect(expression.target!.toSource(), 'a');
- expect(expression.question, isNotNull);
- expect(expression.leftBracket.lexeme, '[');
- expect(expression.rightBracket.lexeme, ']');
- expect(expression.leftBracket.endGroup, expression.rightBracket);
- }
-
- void test_indexExpression_nullable_disabled() {
- parseCompilationUnit('main(a) { a?[0]; }',
- errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 11, 1)],
- featureSet: FeatureSets.language_2_9);
- }
-
void test_is_nullable() {
CompilationUnit unit =
parseCompilationUnit('main() { x is String? ? (x + y) : z; }');
@@ -337,13 +303,6 @@
expect(elseExpression, isSimpleIdentifier);
}
- void test_is_nullable_parenthesis_optOut() {
- parseCompilationUnit('''
-// @dart = 2.2
-main() { (x is String?) ? (x + y) : z; }
-''', errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 36, 1)]);
- }
-
void test_late_as_identifier() {
parseCompilationUnit('''
class C {
@@ -541,21 +500,6 @@
expect(expression.operator.lexeme, '!');
}
- void test_nullCheck_disabled() {
- var unit = parseCompilationUnit('f(int? y) { var x = y!; }',
- errors: [
- expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 5, 1),
- expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 21, 1),
- ],
- featureSet: FeatureSets.language_2_9);
- var function = unit.declarations[0] as FunctionDeclaration;
- var body = function.functionExpression.body as BlockFunctionBody;
- var statement = body.block.statements[0] as VariableDeclarationStatement;
- var identifier =
- statement.variables.variables[0].initializer as SimpleIdentifier;
- expect(identifier.name, 'y');
- }
-
void test_nullCheckAfterGetterAccess() {
parseCompilationUnit('f() { var x = g.x!.y + 7; }');
}
@@ -603,15 +547,6 @@
parseCompilationUnit('f(int? y) { var x = y! + 7; }');
}
- void test_nullCheckInExpression_disabled() {
- parseCompilationUnit('f(int? y) { var x = y! + 7; }',
- errors: [
- expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 5, 1),
- expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 21, 1),
- ],
- featureSet: FeatureSets.language_2_9);
- }
-
void test_nullCheckMethodResult() {
parseCompilationUnit('f() { var x = g.m()! + 7; }');
}
@@ -743,12 +678,6 @@
expect(target.operand.toSource(), "foo");
}
- void test_nullCheckOnLiteral_disabled() {
- parseCompilationUnit('f() { var x = 0!; }',
- errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 15, 1)],
- featureSet: FeatureSets.language_2_9);
- }
-
void test_nullCheckOnLiteralDouble() {
// Issues like this should be caught during later analysis
parseCompilationUnit('f() { var x = 1.2!; }');
@@ -822,12 +751,6 @@
parseCompilationUnit('f(Point p) { var x = p.y! + 7; }');
}
- void test_nullCheckOnValue_disabled() {
- parseCompilationUnit('f(Point p) { var x = p.y! + 7; }',
- errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 24, 1)],
- featureSet: FeatureSets.language_2_9);
- }
-
void test_nullCheckParenthesizedExpression() {
parseCompilationUnit('f(int? y) { var x = (y)! + 7; }');
}
@@ -867,10 +790,4 @@
var innerExpression = outerExpression.operand as PostfixExpression;
expect(innerExpression.operator.type, TokenType.PLUS_PLUS);
}
-
- void test_typeName_nullable_disabled() {
- parseCompilationUnit('int? x;',
- errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 3, 1)],
- featureSet: FeatureSets.language_2_9);
- }
}