diff --git a/pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart b/pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart index e3caf0bd5b7..28c3bc0bc83 100644 --- a/pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart +++ b/pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart @@ -327,7 +327,6 @@ class LateLowering { fileUri: fileUri, fieldReference: field.fieldReference) ..fileOffset = fileOffset - ..isNonNullableByDefault = true // TODO(fishythefish,srujzs,johnniwinther): Also mark the getter/setter // as extension/extension type members. ..isExtensionMember = field.isExtensionMember @@ -347,8 +346,7 @@ class LateLowering { isStatic: true, fileUri: fileUri, reference: field.getterReference) - ..fileOffset = fileOffset - ..isNonNullableByDefault = true; + ..fileOffset = fileOffset; VariableDeclaration setterValue = VariableDeclaration('value', type: type, isSynthesized: true) @@ -374,8 +372,7 @@ class LateLowering { isStatic: true, fileUri: fileUri, reference: field.setterReference) - ..fileOffset = fileOffset - ..isNonNullableByDefault = true; + ..fileOffset = fileOffset; TreeNode parent = field.parent!; if (parent is Class) { @@ -419,7 +416,6 @@ class LateLowering { fileUri: fileUri, fieldReference: field.fieldReference) ..fileOffset = fileOffset - ..isNonNullableByDefault = true ..isInternalImplementation = true; InstanceGet fieldRead() => InstanceGet(InstanceAccessKind.Instance, ThisExpression()..fileOffset = fileOffset, mangledName, @@ -538,8 +534,7 @@ class LateLowering { Procedure getter = Procedure(name, ProcedureKind.Getter, FunctionNode(getterBody(), returnType: type)..fileOffset = fileOffset, fileUri: fileUri, reference: field.getterReference) - ..fileOffset = fileOffset - ..isNonNullableByDefault = true; + ..fileOffset = fileOffset; // The initializer is copied from [field] to [getter] so we copy the // transformer flags to reflect whether the getter contains super calls. getter.transformerFlags = field.transformerFlags; @@ -596,8 +591,7 @@ class LateLowering { ..fileOffset = fileOffset, fileUri: fileUri, reference: field.setterReference) - ..fileOffset = fileOffset - ..isNonNullableByDefault = true; + ..fileOffset = fileOffset; _copyAnnotations(setter, field); enclosingClass.addProcedure(setter); } diff --git a/pkg/dart2wasm/lib/ffi_native_transformer.dart b/pkg/dart2wasm/lib/ffi_native_transformer.dart index 26d8135d76b..5964ddb7299 100644 --- a/pkg/dart2wasm/lib/ffi_native_transformer.dart +++ b/pkg/dart2wasm/lib/ffi_native_transformer.dart @@ -191,8 +191,7 @@ class WasmFfiNativeTransformer extends FfiNativeTransformer { isExternal: true, isStatic: true, isSynthetic: true) - ..fileOffset = node.fileOffset - ..isNonNullableByDefault = true; + ..fileOffset = node.fileOffset; wasmImportProcedure.addAnnotation(wasmImportPragma); currentLibrary.addProcedure(wasmImportProcedure); diff --git a/pkg/dart2wasm/lib/js/method_collector.dart b/pkg/dart2wasm/lib/js/method_collector.dart index 3f2c6e39196..2ac62048360 100644 --- a/pkg/dart2wasm/lib/js/method_collector.dart +++ b/pkg/dart2wasm/lib/js/method_collector.dart @@ -28,8 +28,7 @@ class MethodCollector { {required bool isExternal}) { final procedure = Procedure( Name(name, _library), ProcedureKind.Method, function, - isStatic: true, isExternal: isExternal, fileUri: fileUri) - ..isNonNullableByDefault = true; + isStatic: true, isExternal: isExternal, fileUri: fileUri); _util.annotateProcedure(procedure, pragmaOptionString, type); _library.addProcedure(procedure); return procedure; diff --git a/pkg/dart2wasm/lib/transformers.dart b/pkg/dart2wasm/lib/transformers.dart index ec82b67d115..d4141d0b153 100644 --- a/pkg/dart2wasm/lib/transformers.dart +++ b/pkg/dart2wasm/lib/transformers.dart @@ -193,8 +193,7 @@ class _WasmTransformer extends Transformer { ), isExternal: true, isSynthetic: true, - fileUri: cls.fileUri) - ..isNonNullableByDefault = true; + fileUri: cls.fileUri); cls.addProcedure(getTypeArguments); } return super.visitClass(cls); diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart index a0c2b3e5c84..d7c2e7c8a5a 100644 --- a/pkg/dev_compiler/lib/src/kernel/compiler.dart +++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart @@ -2533,11 +2533,8 @@ class ProgramCompiler extends ComputeOnceConstantVisitor } _currentUri = savedUri; - return runtimeStatement('defineLazy(#, { # }, #)', [ - objExpr, - accessors, - js.boolean(!_currentLibrary!.isNonNullableByDefault) - ]); + return runtimeStatement( + 'defineLazy(#, { # }, #)', [objExpr, accessors, js.boolean(false)]); } js_ast.Fun _emitStaticFieldInitializer(Field field) { @@ -3543,14 +3540,7 @@ class ProgramCompiler extends ComputeOnceConstantVisitor // // In the body of an `async`, `await` is generated simply as `yield`. var gen = emitGeneratorFn((_) => []); - var returnType = _currentLibrary!.isNonNullableByDefault - ? function.emittedValueType! - // Otherwise flatten the return type because futureValueType(T) is not - // defined for legacy libraries. - : _types.flatten(function - .computeThisFunctionType(_currentLibrary!.nonNullable, - reuseTypeParameters: true) - .returnType); + var returnType = function.emittedValueType!; return js.call('#.async(#, #)', [emitLibraryName(_coreTypes.asyncLibrary), _emitType(returnType), gen]); } diff --git a/pkg/front_end/lib/src/fasta/incremental_compiler.dart b/pkg/front_end/lib/src/fasta/incremental_compiler.dart index 71b68688b9f..fd187e00bdf 100644 --- a/pkg/front_end/lib/src/fasta/incremental_compiler.dart +++ b/pkg/front_end/lib/src/fasta/incremental_compiler.dart @@ -2081,8 +2081,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator { Procedure procedure = new Procedure( new Name(syntheticProcedureName), ProcedureKind.Method, parameters, - isStatic: isStatic, fileUri: debugLibrary.fileUri) - ..isNonNullableByDefault = true; + isStatic: isStatic, fileUri: debugLibrary.fileUri); parameters.body = new ReturnStatement(compiledExpression) ..parent = parameters; diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart index d35a3baa2ac..aa6ce6aa677 100644 --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart @@ -5248,9 +5248,8 @@ class BodyBuilder extends StackListenerImpl DartType type = buildDartType(pop() as TypeBuilder, TypeUse.asType, allowPotentiallyConstantType: true); Expression expression = popForValue(); - Expression asExpression = forest.createAsExpression( - offsetForToken(operator), expression, type, - forNonNullableByDefault: true); + Expression asExpression = + forest.createAsExpression(offsetForToken(operator), expression, type); push(asExpression); } @@ -5292,7 +5291,6 @@ class BodyBuilder extends StackListenerImpl Expression operand = popForValue(); Expression isExpression = forest.createIsExpression( offsetForToken(isOperator), operand, type, - forNonNullableByDefault: true, notFileOffset: not != null ? offsetForToken(not) : null); push(isExpression); } diff --git a/pkg/front_end/lib/src/fasta/kernel/combined_member_signature.dart b/pkg/front_end/lib/src/fasta/kernel/combined_member_signature.dart index 926613bcd98..7c845becdce 100644 --- a/pkg/front_end/lib/src/fasta/kernel/combined_member_signature.dart +++ b/pkg/front_end/lib/src/fasta/kernel/combined_member_signature.dart @@ -289,8 +289,7 @@ abstract class CombinedMemberSignatureBase { } DartType canonicalMemberType = _combinedMemberSignatureType = getMemberType(_canonicalMemberIndex!); - _containsNnbdTypes = - _getMember(_canonicalMemberIndex!).isNonNullableByDefault; + _containsNnbdTypes = true; if (_mutualSubtypes != null) { _combinedMemberSignatureType = norm(_coreTypes, _combinedMemberSignatureType!); @@ -511,7 +510,6 @@ abstract class CombinedMemberSignatureBase { ) ..fileStartOffset = startFileOffset ..fileOffset = fileOffset - ..isNonNullableByDefault = containsNnbdTypes ..parent = declarationNode; } @@ -560,7 +558,6 @@ abstract class CombinedMemberSignatureBase { ) ..fileStartOffset = startFileOffset ..fileOffset = fileOffset - ..isNonNullableByDefault = containsNnbdTypes ..parent = declarationNode; } @@ -650,7 +647,6 @@ abstract class CombinedMemberSignatureBase { ) ..fileStartOffset = startFileOffset ..fileOffset = fileOffset - ..isNonNullableByDefault = containsNnbdTypes ..parent = declarationNode; } diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart index e866bbb5ad0..e3c44327873 100644 --- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart +++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart @@ -4871,11 +4871,8 @@ class ConstantEvaluator implements ExpressionVisitor { final Constant constant = _evaluateSubexpression(node.operand); if (constant is AbortConstant) return constant; if (shouldBeUnevaluated) { - return unevaluated( - node, - new AsExpression(_wrap(constant), env.substituteType(node.type)) - ..isForNonNullableByDefault = - staticTypeContext.isNonNullableByDefault); + return unevaluated(node, + new AsExpression(_wrap(constant), env.substituteType(node.type))); } DartType? type = _evaluateDartType(node, node.type); if (type == null) { @@ -4895,8 +4892,7 @@ class ConstantEvaluator implements ExpressionVisitor { return unevaluated( node, new IsExpression(_wrap(constant), env.substituteType(node.type)) - ..fileOffset = node.fileOffset - ..flags = node.flags); + ..fileOffset = node.fileOffset); } DartType? type = _evaluateDartType(node, node.type); diff --git a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart index e94ed0d82ef..9e0af97edbd 100644 --- a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart +++ b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart @@ -280,8 +280,7 @@ Procedure _createTearOffProcedure(SourceLibraryBuilder libraryBuilder, fileUri: fileUri, isStatic: true, isSynthetic: true, reference: reference) ..fileStartOffset = fileOffset ..fileOffset = fileOffset - ..fileEndOffset = fileOffset - ..isNonNullableByDefault = true; + ..fileEndOffset = fileOffset; tearOffName.attachMember(tearOff); return tearOff; } diff --git a/pkg/front_end/lib/src/fasta/kernel/forest.dart b/pkg/front_end/lib/src/fasta/kernel/forest.dart index 8726c105f5e..eac32df01d5 100644 --- a/pkg/front_end/lib/src/fasta/kernel/forest.dart +++ b/pkg/front_end/lib/src/fasta/kernel/forest.dart @@ -203,10 +203,9 @@ class Forest { Expression createAsExpression( int fileOffset, Expression expression, DartType type, - {required bool forNonNullableByDefault, bool forDynamic = false}) { + {bool forDynamic = false}) { return new AsExpression(expression, type) ..fileOffset = fileOffset - ..isForNonNullableByDefault = forNonNullableByDefault ..isForDynamic = forDynamic; } @@ -464,10 +463,9 @@ class Forest { /// is non-null the test is negated the that file offset. Expression createIsExpression( int fileOffset, Expression operand, DartType type, - {required bool forNonNullableByDefault, int? notFileOffset}) { + {int? notFileOffset}) { Expression result = new IsExpression(operand, type) - ..fileOffset = fileOffset - ..isForNonNullableByDefault = forNonNullableByDefault; + ..fileOffset = fileOffset; if (notFileOffset != null) { result = createNot(notFileOffset, result); } diff --git a/pkg/front_end/lib/src/fasta/kernel/forwarding_node.dart b/pkg/front_end/lib/src/fasta/kernel/forwarding_node.dart index aa72c124517..2020a12b8b7 100644 --- a/pkg/front_end/lib/src/fasta/kernel/forwarding_node.dart +++ b/pkg/front_end/lib/src/fasta/kernel/forwarding_node.dart @@ -467,7 +467,6 @@ class ForwardingNode { result = new AsExpression(result, procedure.function.returnType) ..isTypeError = true ..isForDynamic = true - ..isForNonNullableByDefault = true ..fileOffset = procedure.fileOffset; } } diff --git a/pkg/front_end/lib/src/fasta/kernel/hierarchy/delayed.dart b/pkg/front_end/lib/src/fasta/kernel/hierarchy/delayed.dart index ca84733fb85..4ac3cd820d3 100644 --- a/pkg/front_end/lib/src/fasta/kernel/hierarchy/delayed.dart +++ b/pkg/front_end/lib/src/fasta/kernel/hierarchy/delayed.dart @@ -5,7 +5,6 @@ library fasta.class_hierarchy_builder; import 'package:kernel/ast.dart'; -import 'package:kernel/src/legacy_erasure.dart'; import 'package:kernel/src/types.dart'; import 'package:kernel/type_algebra.dart'; import 'package:kernel/type_environment.dart'; @@ -64,13 +63,12 @@ class DelayedOverrideCheck implements DelayedCheck { /// int? mixedInMethod(int? i, {int? j}) => i; /// } /// - bool declaredNeedsLegacyErasure = - needsLegacyErasure(_classBuilder.cls, declaredMember.enclosingClass!); + void callback(Member interfaceMember, bool isSetter) { _classBuilder.checkOverride(membersBuilder.hierarchyBuilder.types, membersBuilder, declaredMember, interfaceMember, isSetter, callback, isInterfaceCheck: !_classBuilder.isMixinApplication, - declaredNeedsLegacyErasure: declaredNeedsLegacyErasure); + declaredNeedsLegacyErasure: false); } for (ClassMember overriddenMember in _overriddenMembers) { diff --git a/pkg/front_end/lib/src/fasta/kernel/hierarchy/mixin_inferrer.dart b/pkg/front_end/lib/src/fasta/kernel/hierarchy/mixin_inferrer.dart index 1a75b9c50f4..7a37bfe68bb 100644 --- a/pkg/front_end/lib/src/fasta/kernel/hierarchy/mixin_inferrer.dart +++ b/pkg/front_end/lib/src/fasta/kernel/hierarchy/mixin_inferrer.dart @@ -165,8 +165,7 @@ class BuilderMixinInferrer { } // Use instantiate to bounds. List bounds = calculateBounds(parameters, coreTypes.objectClass, - isNonNullableByDefault: - classNode.enclosingLibrary.isNonNullableByDefault); + isNonNullableByDefault: true); for (int i = 0; i < mixedInType.typeArguments.length; ++i) { mixedInType.typeArguments[i] = bounds[i]; } diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart index e8f40d17e36..f2d31912394 100644 --- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart @@ -1098,17 +1098,17 @@ class KernelTarget extends TargetImplementation { SuperInitializer initializer = new SuperInitializer( superConstructor, new Arguments(positional, named: named)); Constructor constructor = new Constructor(function, - name: superConstructor.name, - initializers: [initializer], - isSynthetic: true, - isConst: isConst, - reference: constructorReference, - fileUri: cls.fileUri) - ..fileOffset = cls.fileOffset - // TODO(johnniwinther): Should we add file end offset to synthesized - // constructors? - //..fileEndOffset = cls.fileOffset - ..isNonNullableByDefault = cls.enclosingLibrary.isNonNullableByDefault; + name: superConstructor.name, + initializers: [initializer], + isSynthetic: true, + isConst: isConst, + reference: constructorReference, + fileUri: cls.fileUri) + ..fileOffset = cls.fileOffset + // TODO(johnniwinther): Should we add file end offset to synthesized + // constructors? + //..fileEndOffset = cls.fileOffset + ; DelayedDefaultValueCloner delayedDefaultValueCloner = new DelayedDefaultValueCloner(superConstructor, constructor, libraryBuilder: libraryBuilder); @@ -1193,17 +1193,17 @@ class KernelTarget extends TargetImplementation { SourceLibraryBuilder libraryBuilder = classBuilder.libraryBuilder; Class enclosingClass = classBuilder.cls; Constructor constructor = new Constructor( - new FunctionNode(new EmptyStatement(), - returnType: makeConstructorReturnType(enclosingClass)), - name: new Name(""), - isSynthetic: true, - reference: constructorReference, - fileUri: enclosingClass.fileUri) - ..fileOffset = enclosingClass.fileOffset - // TODO(johnniwinther): Should we add file end offsets to synthesized - // constructors? - //..fileEndOffset = enclosingClass.fileOffset - ..isNonNullableByDefault = true; + new FunctionNode(new EmptyStatement(), + returnType: makeConstructorReturnType(enclosingClass)), + name: new Name(""), + isSynthetic: true, + reference: constructorReference, + fileUri: enclosingClass.fileUri) + ..fileOffset = enclosingClass.fileOffset + // TODO(johnniwinther): Should we add file end offsets to synthesized + // constructors? + //..fileEndOffset = enclosingClass.fileOffset + ; Procedure? constructorTearOff = createConstructorTearOffProcedure( new MemberName(libraryBuilder.libraryName, constructorTearOffName('')), libraryBuilder, diff --git a/pkg/front_end/lib/src/fasta/kernel/load_library_builder.dart b/pkg/front_end/lib/src/fasta/kernel/load_library_builder.dart index 529b1788a4c..decd62d477f 100644 --- a/pkg/front_end/lib/src/fasta/kernel/load_library_builder.dart +++ b/pkg/front_end/lib/src/fasta/kernel/load_library_builder.dart @@ -64,8 +64,7 @@ class LoadLibraryBuilder extends BuilderImpl { isStatic: true, reference: reference) ..fileStartOffset = charOffset - ..fileOffset = charOffset - ..isNonNullableByDefault = true; + ..fileOffset = charOffset; } @override diff --git a/pkg/front_end/lib/src/fasta/kernel/utils.dart b/pkg/front_end/lib/src/fasta/kernel/utils.dart index 8ceae6f9242..3d7889e5f78 100644 --- a/pkg/front_end/lib/src/fasta/kernel/utils.dart +++ b/pkg/front_end/lib/src/fasta/kernel/utils.dart @@ -135,7 +135,6 @@ Component createExpressionEvaluationComponent(Procedure procedure) { Uri uri = new Uri(scheme: 'evaluate', path: 'source'); Library fakeLibrary = new Library(uri, fileUri: uri) ..setLanguageVersion(realLibrary.languageVersion) - ..isNonNullableByDefault = realLibrary.isNonNullableByDefault ..nonNullableByDefaultCompiledMode = realLibrary.nonNullableByDefaultCompiledMode; diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart index 04f2e5571aa..fd59c660c40 100644 --- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart @@ -1556,11 +1556,6 @@ class SourceClassBuilder extends ClassBuilderImpl declaredType = legacyErasure(declaredType); } - if (!declaredMember.isNonNullableByDefault && - interfaceMember.isNonNullableByDefault) { - interfaceType = legacyErasure(interfaceType); - } - bool inParameter = declaredParameter != null || asIfDeclaredParameter; DartType subtype = inParameter ? interfaceType : declaredType; DartType supertype = inParameter ? declaredType : interfaceType; @@ -1830,10 +1825,8 @@ class SourceClassBuilder extends ClassBuilderImpl declaredParameter, isInterfaceCheck, declaredNeedsLegacyErasure); - if (declaredMember.isNonNullableByDefault && - !declaredNeedsLegacyErasure && + if (!declaredNeedsLegacyErasure && declaredParameter.isRequired && - interfaceMember.isNonNullableByDefault && !interfaceNamedParameters.current.isRequired) { reportInvalidOverride( isInterfaceCheck, diff --git a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart index 77bc7671ec5..a613f93f613 100644 --- a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart @@ -430,8 +430,7 @@ class DeclaredSourceConstructorBuilder isSynthetic: isSynthetic) ..startFileOffset = startCharOffset ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = true; + ..fileEndOffset = charEndOffset; nameScheme .getConstructorMemberName(name, isTearOff: false) .attachMember(_constructor); @@ -1123,8 +1122,7 @@ class SourceExtensionTypeConstructorBuilder dummyName, ProcedureKind.Method, new FunctionNode(null), fileUri: compilationUnit.fileUri, reference: constructorReference) ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = true; + ..fileEndOffset = charEndOffset; nameScheme .getConstructorMemberName(name, isTearOff: false) .attachMember(_constructor); diff --git a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart index 2c0c1f95f55..5da1355e7fb 100644 --- a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart @@ -97,7 +97,6 @@ class SourceFactoryBuilder extends SourceFunctionBuilderImpl { ..fileStartOffset = startCharOffset ..fileOffset = charOffset ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = true ..isExtensionTypeMember = nameScheme.isExtensionTypeMember; nameScheme .getConstructorMemberName(name, isTearOff: false) diff --git a/pkg/front_end/lib/src/fasta/source/source_field_builder.dart b/pkg/front_end/lib/src/fasta/source/source_field_builder.dart index 0074f83ba22..4bfbb8eba92 100644 --- a/pkg/front_end/lib/src/fasta/source/source_field_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_field_builder.dart @@ -689,8 +689,7 @@ class RegularFieldEncoding implements FieldEncoding { .attachMember(_field); _field ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = isNonNullableByDefault; + ..fileEndOffset = charEndOffset; } @override @@ -912,7 +911,6 @@ abstract class AbstractLateFieldEncoding implements FieldEncoding { setterReference: fieldSetterReference) ..fileOffset = charOffset ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = true ..isInternalImplementation = true; nameScheme .getFieldMemberName(FieldNameType.Field, name, isSynthesized: true) @@ -931,7 +929,6 @@ abstract class AbstractLateFieldEncoding implements FieldEncoding { setterReference: lateIsSetSetterReference) ..fileOffset = charOffset ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = true ..isInternalImplementation = true; nameScheme .getFieldMemberName(FieldNameType.IsSetField, name, @@ -948,8 +945,7 @@ abstract class AbstractLateFieldEncoding implements FieldEncoding { fileUri: fileUri, reference: lateGetterReference) ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = true; + ..fileEndOffset = charEndOffset; nameScheme .getFieldMemberName(FieldNameType.Getter, name, isSynthesized: true) .attachMember(_lateGetter); @@ -1079,8 +1075,7 @@ abstract class AbstractLateFieldEncoding implements FieldEncoding { fileUri: fileUri, reference: reference) ..fileOffset = charOffset - ..fileEndOffset = fileEndOffset - ..isNonNullableByDefault = true; + ..fileEndOffset = fileEndOffset; } Statement _createSetterBody( @@ -1728,8 +1723,7 @@ class AbstractOrExternalFieldEncoding implements FieldEncoding { fileUri: fileUri, reference: getterReference) ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = isNonNullableByDefault; + ..fileEndOffset = charEndOffset; nameScheme .getProcedureMemberName(ProcedureKind.Getter, name) .attachMember(_getter); @@ -1754,8 +1748,7 @@ class AbstractOrExternalFieldEncoding implements FieldEncoding { fileUri: fileUri, reference: setterReference) ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = isNonNullableByDefault; + ..fileEndOffset = charEndOffset; nameScheme .getProcedureMemberName(ProcedureKind.Setter, name) .attachMember(_setter!); @@ -1765,8 +1758,7 @@ class AbstractOrExternalFieldEncoding implements FieldEncoding { dummyName, ProcedureKind.Getter, new FunctionNode(null), fileUri: fileUri, reference: getterReference) ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = isNonNullableByDefault; + ..fileEndOffset = charEndOffset; nameScheme .getFieldMemberName(FieldNameType.Getter, name, isSynthesized: true) .attachMember(_getter); @@ -1785,8 +1777,7 @@ class AbstractOrExternalFieldEncoding implements FieldEncoding { fileUri: fileUri, reference: setterReference) ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = isNonNullableByDefault; + ..fileEndOffset = charEndOffset; nameScheme .getFieldMemberName(FieldNameType.Setter, name, isSynthesized: true) .attachMember(_setter!); @@ -2028,8 +2019,7 @@ class RepresentationFieldEncoding implements FieldEncoding { fileUri: fileUri, reference: getterReference) ..stubKind = ProcedureStubKind.RepresentationField ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = true; + ..fileEndOffset = charEndOffset; nameScheme .getFieldMemberName(FieldNameType.RepresentationField, name, isSynthesized: true) diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart index 9a2cc5052b2..1672f4707d2 100644 --- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart @@ -418,7 +418,6 @@ class SourceLibraryBuilder extends LibraryBuilderImpl { } void _updateLibraryNNBDSettings() { - library.isNonNullableByDefault = true; switch (loader.nnbdMode) { case NnbdMode.Weak: library.nonNullableByDefaultCompiledMode = @@ -2259,25 +2258,12 @@ class SourceLibraryBuilder extends LibraryBuilderImpl { // been reported. } else { bool isValid = typeEnvironment.isSubtypeOf( - getterType, - setterType, - library.isNonNullableByDefault - ? SubtypeCheckMode.withNullabilities - : SubtypeCheckMode.ignoringNullabilities); - if (!isValid && !library.isNonNullableByDefault) { - // Allow assignability in legacy libraries. - isValid = typeEnvironment.isSubtypeOf( - setterType, getterType, SubtypeCheckMode.ignoringNullabilities); - } + getterType, setterType, SubtypeCheckMode.withNullabilities); if (!isValid) { String getterMemberName = getterBuilder.fullNameForErrors; String setterMemberName = setterBuilder.fullNameForErrors; - Template - template = library.isNonNullableByDefault - ? templateInvalidGetterSetterType - : templateInvalidGetterSetterTypeLegacy; addProblem( - template.withArguments( + templateInvalidGetterSetterType.withArguments( getterType, getterMemberName, setterType, setterMemberName), getterBuilder.charOffset, getterBuilder.name.length, @@ -4874,7 +4860,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl { List issues = findTypeArgumentIssues( type, typeEnvironment, SubtypeCheckMode.withNullabilities, allowSuperBounded: allowSuperBounded, - isNonNullableByDefault: library.isNonNullableByDefault, + isNonNullableByDefault: true, areGenericArgumentsAllowed: libraryFeatures.genericMetadata.isEnabled); _reportTypeArgumentIssues(issues, fileUri, offset, inferred: inferred); } @@ -4928,7 +4914,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl { typeEnvironment, SubtypeCheckMode.withNullabilities, bottomType, - isNonNullableByDefault: library.isNonNullableByDefault, + isNonNullableByDefault: true, areGenericArgumentsAllowed: libraryFeatures.genericMetadata.isEnabled); if (issues.isNotEmpty) { DartType? targetReceiver; @@ -5003,7 +4989,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl { typeEnvironment, SubtypeCheckMode.withNullabilities, bottomType, - isNonNullableByDefault: library.isNonNullableByDefault, + isNonNullableByDefault: true, areGenericArgumentsAllowed: libraryFeatures.genericMetadata.isEnabled); _reportTypeArgumentIssues(issues, fileUri, offset, typeArgumentsInfo: getTypeArgumentsInfo(arguments), @@ -5031,7 +5017,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl { typeEnvironment, SubtypeCheckMode.withNullabilities, bottomType, - isNonNullableByDefault: library.isNonNullableByDefault, + isNonNullableByDefault: true, areGenericArgumentsAllowed: libraryFeatures.genericMetadata.isEnabled); _reportTypeArgumentIssues(issues, fileUri, offset, typeArgumentsInfo: getTypeArgumentsInfo(arguments), @@ -5063,7 +5049,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl { typeEnvironment, SubtypeCheckMode.withNullabilities, bottomType, - isNonNullableByDefault: library.isNonNullableByDefault, + isNonNullableByDefault: true, areGenericArgumentsAllowed: libraryFeatures.genericMetadata.isEnabled); _reportTypeArgumentIssues(issues, fileUri, offset, targetReceiver: functionType, diff --git a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart index e64402d6939..4c5ccf98a20 100644 --- a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart +++ b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart @@ -114,8 +114,7 @@ class SourceProcedureBuilder extends SourceFunctionBuilderImpl isSynthetic: isSynthetic) ..fileStartOffset = startCharOffset ..fileOffset = charOffset - ..fileEndOffset = charEndOffset - ..isNonNullableByDefault = true; + ..fileEndOffset = charEndOffset; nameScheme.getProcedureMemberName(kind, name).attachMember(_procedure); this.asyncModifier = asyncModifier; if ((isExtensionInstanceMember || isExtensionTypeInstanceMember) && @@ -126,8 +125,7 @@ class SourceProcedureBuilder extends SourceFunctionBuilderImpl isExtensionMember: isExtensionInstanceMember, isExtensionTypeMember: isExtensionTypeInstanceMember, reference: _tearOffReference, - fileUri: fileUri) - ..isNonNullableByDefault = true; + fileUri: fileUri); nameScheme .getProcedureMemberName(ProcedureKind.Getter, name) .attachMember(_extensionTearOff!); diff --git a/pkg/front_end/lib/src/fasta/type_inference/closure_context.dart b/pkg/front_end/lib/src/fasta/type_inference/closure_context.dart index ce656ec767b..343c0d7cfab 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/closure_context.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/closure_context.dart @@ -287,8 +287,7 @@ class _SyncClosureContext implements ClosureContext { } else { actualReturnedType = inferrer.typeSchemaEnvironment .getStandardUpperBound(actualReturnedType, type, - isNonNullableByDefault: - inferrer.libraryBuilder.library.isNonNullableByDefault); + isNonNullableByDefault: true); } } @@ -573,8 +572,7 @@ class _AsyncClosureContext implements ClosureContext { } else { inferredType = inferrer.typeSchemaEnvironment.getStandardUpperBound( inferredType, unwrappedType, - isNonNullableByDefault: - inferrer.libraryBuilder.library.isNonNullableByDefault); + isNonNullableByDefault: true); } } @@ -748,8 +746,7 @@ class _SyncStarClosureContext implements ClosureContext { } else { inferredElementType = inferrer.typeSchemaEnvironment .getStandardUpperBound(inferredElementType, type, - isNonNullableByDefault: - inferrer.libraryBuilder.library.isNonNullableByDefault); + isNonNullableByDefault: true); } } } else if (hasImplicitReturn) { @@ -886,8 +883,7 @@ class _AsyncStarClosureContext implements ClosureContext { } else { inferredElementType = inferrer.typeSchemaEnvironment .getStandardUpperBound(inferredElementType, elementType, - isNonNullableByDefault: - inferrer.libraryBuilder.library.isNonNullableByDefault); + isNonNullableByDefault: true); } } } else if (hasImplicitReturn) { diff --git a/pkg/front_end/lib/src/fasta/type_inference/delayed_expressions.dart b/pkg/front_end/lib/src/fasta/type_inference/delayed_expressions.dart index e7d4f37f4aa..ab6f8dedf51 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/delayed_expressions.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/delayed_expressions.dart @@ -599,7 +599,6 @@ class DelayedIsExpression extends AbstractDelayedExpression { _operand.createExpression(typeEnvironment, effects: effects, inCacheInitializer: inCacheInitializer), _type, - forNonNullableByDefault: true, fileOffset: fileOffset); } diff --git a/pkg/front_end/lib/src/fasta/type_inference/external_ast_helper.dart b/pkg/front_end/lib/src/fasta/type_inference/external_ast_helper.dart index 9394c90e285..25bd7d8c91c 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/external_ast_helper.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/external_ast_helper.dart @@ -178,10 +178,8 @@ LogicalExpression createOrExpression(Expression left, Expression right, /// Creates an is-test on [operand] against [type]. IsExpression createIsExpression(Expression operand, DartType type, - {required bool forNonNullableByDefault, required int fileOffset}) { - return new IsExpression(operand, type) - ..fileOffset = fileOffset - ..isForNonNullableByDefault = forNonNullableByDefault; + {required int fileOffset}) { + return new IsExpression(operand, type)..fileOffset = fileOffset; } /// Creates an as-cast on [operand] against [type]. @@ -192,7 +190,6 @@ AsExpression createAsExpression(Expression operand, DartType type, required int fileOffset}) { return new AsExpression(operand, type) ..fileOffset = fileOffset - ..isForNonNullableByDefault = forNonNullableByDefault ..isUnchecked = isUnchecked ..isCovarianceCheck = isCovarianceCheck; } diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart index 08f2b6b91b0..4c88f6787ac 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart @@ -3762,7 +3762,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase assert(fileOffset != TreeNode.noOffset); return new AsExpression(expression, type) ..isTypeError = true - ..isForNonNullableByDefault = true ..fileOffset = fileOffset; } @@ -6276,7 +6275,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase binary = new AsExpression(binary, binaryType) ..isTypeError = true ..isCovarianceCheck = true - ..isForNonNullableByDefault = true ..fileOffset = fileOffset; } break; @@ -6395,7 +6393,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase unary = new AsExpression(unary, unaryType) ..isTypeError = true ..isCovarianceCheck = true - ..isForNonNullableByDefault = true ..fileOffset = fileOffset; } break; @@ -6538,7 +6535,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase read = new AsExpression(read, readType) ..isTypeError = true ..isCovarianceCheck = true - ..isForNonNullableByDefault = true ..fileOffset = fileOffset; } break; @@ -8194,8 +8190,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase thisType!, node.interfaceTarget, hasNonObjectMemberAccess: true); DartType writeContext = writeTarget.getSetterType(this); - writeContext = computeTypeFromSuperClass( - node.interfaceTarget.enclosingClass!, writeContext); ExpressionInferenceResult rhsResult = inferExpression(node.value, writeContext, isVoidAllowed: true); rhsResult = ensureAssignableResult(writeContext, rhsResult, @@ -8214,8 +8208,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase hasNonObjectMemberAccess: true) : new ObjectAccessTarget.superMember(thisType!, node.interfaceTarget); DartType writeContext = writeTarget.getSetterType(this); - writeContext = computeTypeFromSuperClass( - node.interfaceTarget.enclosingClass!, writeContext); ExpressionInferenceResult rhsResult = inferExpression(node.value, writeContext, isVoidAllowed: true); rhsResult = ensureAssignableResult(writeContext, rhsResult, @@ -8508,7 +8500,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase node.expression = new AsExpression(node.expression, coreTypes.objectNonNullableRawType) ..isTypeError = true - ..isForNonNullableByDefault = true ..fileOffset = node.expression.fileOffset ..parent = node; } diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor_base.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor_base.dart index 1aad6ccdc88..323855da33d 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor_base.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor_base.dart @@ -17,7 +17,6 @@ import 'package:kernel/names.dart'; import 'package:kernel/src/bounds_checks.dart' show calculateBounds, isGenericFunctionTypeOrAlias; import 'package:kernel/src/future_value_type.dart'; -import 'package:kernel/src/legacy_erasure.dart'; import 'package:kernel/type_algebra.dart'; import 'package:kernel/type_environment.dart'; @@ -452,7 +451,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { Expression asExpression = new AsExpression(expression, initialContextType) ..isTypeError = true - ..isForNonNullableByDefault = true ..isForDynamic = expressionType is DynamicType ..fileOffset = fileOffset; flowAnalysis.forwardExpression(asExpression, expression); @@ -733,7 +731,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { ? const NeverType.nonNullable() : contextType) ..isTypeError = true - ..isForNonNullableByDefault = true ..fileOffset = expression.fileOffset; if (contextType is! InvalidType && expressionType is! InvalidType) { errorNode = helper.wrapInProblem( @@ -1299,39 +1296,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { return null; } - /// Returns [type] as passed from [superClass] to the current class. - /// - /// If a legacy class occurs between the current class and [superClass] then - /// [type] needs to be legacy erased. For instance - /// - /// // Opt in: - /// class Super { - /// int extendedMethod(int i, {required int j}) => i; - /// } - /// class Mixin { - /// int mixedInMethod(int i, {required int j}) => i; - /// } - /// // Opt out: - /// class Legacy extends Super with Mixin {} - /// // Opt in: - /// class Class extends Legacy { - /// test() { - /// // Ok to call `Legacy.extendedMethod` since its type is - /// // `int* Function(int*, {int* j})`. - /// super.extendedMethod(null); - /// // Ok to call `Legacy.mixedInMethod` since its type is - /// // `int* Function(int*, {int* j})`. - /// super.mixedInMethod(null); - /// } - /// } - /// - DartType computeTypeFromSuperClass(Class superClass, DartType type) { - if (needsLegacyErasure(thisType!.classNode, superClass)) { - type = legacyErasure(type); - } - return type; - } - /// Returns the getter type of [interfaceMember] on a receiver of type /// [receiverType]. /// @@ -1434,8 +1398,7 @@ abstract class InferenceVisitorBase implements InferenceVisitor { DartType inferDeclarationType(DartType initializerType, {bool forSyntheticVariable = false}) { if (forSyntheticVariable) { - return normalizeNullabilityInLibrary( - initializerType, libraryBuilder.library); + return initializerType; } else if (initializerType is NullType) { // If the initializer type is Null or bottom, the inferred type is // dynamic. @@ -1921,10 +1884,7 @@ abstract class InferenceVisitorBase implements InferenceVisitor { calleeType = replaceReturnType( calleeType, typeSchemaEnvironment.getTypeOfSpecialCasedTernaryOperator( - receiverType!, - actualTypes[0], - actualTypes[1], - libraryBuilder.library)); + receiverType!, actualTypes[0], actualTypes[1])); } } @@ -2690,7 +2650,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { replacement = new AsExpression(expression, result.inferredType) ..isTypeError = true ..isCovarianceCheck = true - ..isForNonNullableByDefault = true ..fileOffset = fileOffset; if (instrumentation != null) { int offset = @@ -2821,7 +2780,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { propertyGet = new AsExpression(propertyGet, calleeType) ..isTypeError = true ..isCovarianceCheck = true - ..isForNonNullableByDefault = true ..fileOffset = fileOffset; if (instrumentation != null) { int offset = @@ -3010,7 +2968,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { propertyGet = new AsExpression(propertyGet, calleeType) ..isTypeError = true ..isCovarianceCheck = true - ..isForNonNullableByDefault = true ..fileOffset = fileOffset; if (instrumentation != null) { int offset = @@ -3333,7 +3290,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { type) ?? type; Expression read = new AsExpression(receiver, type) - ..isForNonNullableByDefault = true ..isUnchecked = true ..fileOffset = fileOffset; ExpressionInferenceResult readResult = @@ -3444,11 +3400,8 @@ abstract class InferenceVisitorBase implements InferenceVisitor { DartType receiverType = thisType!; bool isSpecialCasedBinaryOperator = target.isSpecialCasedBinaryOperator(this); - DartType calleeType = computeTypeFromSuperClass( - procedure.enclosingClass!, target.getGetterType(this)); - FunctionType functionType = computeTypeFromSuperClass( - procedure.enclosingClass!, target.getFunctionType(this)) - as FunctionType; + DartType calleeType = target.getGetterType(this); + FunctionType functionType = target.getFunctionType(this); if (methodName == equalsName && functionType.positionalParameters.length == 1) { // operator == always allows nullable arguments. @@ -3480,8 +3433,7 @@ abstract class InferenceVisitorBase implements InferenceVisitor { ? new ObjectAccessTarget.interfaceMember(thisType!, member, hasNonObjectMemberAccess: true) : new ObjectAccessTarget.superMember(thisType!, member); - DartType inferredType = computeTypeFromSuperClass( - member.enclosingClass!, readTarget.getGetterType(this)); + DartType inferredType = readTarget.getGetterType(this); if (member is Procedure && member.kind == ProcedureKind.Method) { return instantiateTearOff(inferredType, typeContext, expression); } @@ -4068,7 +4020,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { read = new AsExpression(read, readType) ..isTypeError = true ..isCovarianceCheck = true - ..isForNonNullableByDefault = true ..fileOffset = fileOffset; } if (member is Procedure && member.kind == ProcedureKind.Method) { @@ -4090,7 +4041,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { case ObjectAccessTargetKind.extensionTypeRepresentation: case ObjectAccessTargetKind.nullableExtensionTypeRepresentation: read = new AsExpression(receiver, readType) - ..isForNonNullableByDefault = true ..isUnchecked = true ..fileOffset = fileOffset; break; @@ -4098,7 +4048,6 @@ abstract class InferenceVisitorBase implements InferenceVisitor { if (promotedReadType != null) { read = new AsExpression(read, promotedReadType) - ..isForNonNullableByDefault = true ..isUnchecked = true ..fileOffset = fileOffset; readType = promotedReadType; diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_demotion.dart b/pkg/front_end/lib/src/fasta/type_inference/type_demotion.dart index 4ef0ca54e76..e759e829d98 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/type_demotion.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/type_demotion.dart @@ -43,24 +43,6 @@ DartType demoteTypeInLibrary(DartType type, } } -/// Returns [type] normalized to the known nullabilities of [library]. -/// -/// If [library] is non-nullable by default [type] returned (non-nullable -/// libraries can handle all kinds of nullability). Otherwise all -/// non-legacy types have been replaced with legacy types (legacy libraries -/// can only handle legacy types). -DartType normalizeNullabilityInLibrary(DartType type, Library library) { - if (library.isNonNullableByDefault) { - return type; - } else { - return type.accept1( - const _DemotionNullabilityNormalization( - demoteTypeVariables: false, forNonNullableByDefault: false), - Variance.covariant) ?? - type; - } -} - /// Visitor that replaces all promoted type variables the type variable itself /// and normalizes the type nullabilities. /// diff --git a/pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart b/pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart index 094499baff9..cb3e0d9671b 100644 --- a/pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart +++ b/pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart @@ -447,15 +447,8 @@ String procedureType(Procedure procedure) { return typeToText(procedure.function.positionalParameters.single.type, TypeRepresentation.analyzerNonNullableByDefault); } else { - Nullability functionTypeNullability; - if (procedure.enclosingLibrary.isNonNullableByDefault) { - functionTypeNullability = procedure.enclosingLibrary.nonNullable; - } else { - // We don't create a member signature when the member is just - // a substitution. We should still take the nullability to be - // legacy, though. - functionTypeNullability = procedure.enclosingLibrary.nonNullable; - } + Nullability functionTypeNullability = + procedure.enclosingLibrary.nonNullable; return typeToText( procedure.function.computeThisFunctionType(functionTypeNullability), TypeRepresentation.analyzerNonNullableByDefault); diff --git a/pkg/front_end/test/fasta/type_inference/type_constraint_gatherer_nnbd_test.dart b/pkg/front_end/test/fasta/type_inference/type_constraint_gatherer_nnbd_test.dart index 90289f3eb67..87afe3b6140 100644 --- a/pkg/front_end/test/fasta/type_inference/type_constraint_gatherer_nnbd_test.dart +++ b/pkg/front_end/test/fasta/type_inference/type_constraint_gatherer_nnbd_test.dart @@ -396,7 +396,7 @@ class TypeConstraintGathererTest { coreTypes, new ClassHierarchy(component, coreTypes)); var typeConstraintGatherer = new TypeConstraintGatherer( typeSchemaEnvironment, typeParameterNodesToConstrain, - isNonNullableByDefault: testLibrary.isNonNullableByDefault, + isNonNullableByDefault: true, typeOperations: new OperationsCfe(typeSchemaEnvironment, omittedNullabilityValue: Nullability.nonNullable, fieldNonPromotabilityInfo: new FieldNonPromotabilityInfo( @@ -407,7 +407,7 @@ class TypeConstraintGathererTest { inferenceResultForTesting: null); var constraints = tryConstrain(typeConstraintGatherer, a, b) ? typeConstraintGatherer.computeConstraints( - isNonNullableByDefault: clientLibrary.isNonNullableByDefault) + isNonNullableByDefault: true) : null; if (expectedConstraints == null) { expect(constraints, isNull); diff --git a/pkg/front_end/test/fasta/type_inference/type_constraint_gatherer_test.dart b/pkg/front_end/test/fasta/type_inference/type_constraint_gatherer_test.dart index e7e120864ba..f91c8abb8f5 100644 --- a/pkg/front_end/test/fasta/type_inference/type_constraint_gatherer_test.dart +++ b/pkg/front_end/test/fasta/type_inference/type_constraint_gatherer_test.dart @@ -304,7 +304,7 @@ class TypeConstraintGathererTest { coreTypes, new ClassHierarchy(component, coreTypes)); var typeConstraintGatherer = new TypeConstraintGatherer( typeSchemaEnvironment, typeParameterNodesToConstrain, - isNonNullableByDefault: testLibrary.isNonNullableByDefault, + isNonNullableByDefault: true, typeOperations: new OperationsCfe(typeSchemaEnvironment, omittedNullabilityValue: Nullability.nonNullable, fieldNonPromotabilityInfo: new FieldNonPromotabilityInfo( @@ -315,7 +315,7 @@ class TypeConstraintGathererTest { inferenceResultForTesting: null); var constraints = tryConstrain(typeConstraintGatherer, a, b) ? typeConstraintGatherer.computeConstraints( - isNonNullableByDefault: clientLibrary.isNonNullableByDefault) + isNonNullableByDefault: true) : null; if (expectedConstraints == null) { expect(constraints, isNull); diff --git a/pkg/front_end/test/fasta/type_inference/type_schema_environment_nnbd_test.dart b/pkg/front_end/test/fasta/type_inference/type_schema_environment_nnbd_test.dart index 3607a83b248..3e450f72bbf 100644 --- a/pkg/front_end/test/fasta/type_inference/type_schema_environment_nnbd_test.dart +++ b/pkg/front_end/test/fasta/type_inference/type_schema_environment_nnbd_test.dart @@ -2013,7 +2013,7 @@ class TypeSchemaEnvironmentTest extends TypeSchemaEnvironmentTestBase { } expect( typeSchemaEnvironment.getStandardUpperBound(dartType1, dartType2, - isNonNullableByDefault: testLibrary.isNonNullableByDefault), + isNonNullableByDefault: true), parseType(upperBound)); }); } diff --git a/pkg/front_end/test/fasta/type_inference/type_schema_environment_test.dart b/pkg/front_end/test/fasta/type_inference/type_schema_environment_test.dart index e62ad271c90..ba7ed3ab541 100644 --- a/pkg/front_end/test/fasta/type_inference/type_schema_environment_test.dart +++ b/pkg/front_end/test/fasta/type_inference/type_schema_environment_test.dart @@ -554,7 +554,7 @@ class TypeSchemaEnvironmentTest extends TypeSchemaEnvironmentTestBase { expect( typeSchemaEnvironment.getStandardUpperBound( parseType(type1), parseType(type2), - isNonNullableByDefault: testLibrary.isNonNullableByDefault), + isNonNullableByDefault: false), parseType(upperBound)); }); } diff --git a/pkg/front_end/test/fasta/types/legacy_upper_bound_helper.dart b/pkg/front_end/test/fasta/types/legacy_upper_bound_helper.dart index 65dffa10397..6b03a395ab5 100644 --- a/pkg/front_end/test/fasta/types/legacy_upper_bound_helper.dart +++ b/pkg/front_end/test/fasta/types/legacy_upper_bound_helper.dart @@ -56,7 +56,7 @@ abstract class LegacyUpperBoundTest { void checkLegacyUp(String type1, String type2, String expectedType) { checkLegacyUpTypes( env.parseType(type1), env.parseType(type2), env.parseType(expectedType), - isNonNullableByDefault: testLibrary.isNonNullableByDefault); + isNonNullableByDefault: true); } Future test() { diff --git a/pkg/front_end/test/id_tests/inheritance_test.dart b/pkg/front_end/test/id_tests/inheritance_test.dart index d60e06256ad..34e189100c7 100644 --- a/pkg/front_end/test/id_tests/inheritance_test.dart +++ b/pkg/front_end/test/id_tests/inheritance_test.dart @@ -97,7 +97,8 @@ class InheritanceDataExtractor extends CfeDataExtractor { @override String computeLibraryValue(Id id, Library node) { - return 'nnbd=${node.isNonNullableByDefault}'; + // TODO(johnniwinther): Remove this. + return 'nnbd=true'; } @override @@ -126,8 +127,7 @@ class InheritanceDataExtractor extends CfeDataExtractor { InterfaceType supertype = _hierarchy.getInterfaceTypeAsInstanceOfClass( _coreTypes.thisInterfaceType(node, node.enclosingLibrary.nonNullable), member.enclosingClass!, - isNonNullableByDefault: - node.enclosingLibrary.isNonNullableByDefault)!; + isNonNullableByDefault: true)!; Substitution substitution = Substitution.fromInterfaceType(supertype); DartType? type; if (member is Procedure) { @@ -137,15 +137,8 @@ class InheritanceDataExtractor extends CfeDataExtractor { type = substitution .substituteType(member.function.positionalParameters.single.type); } else { - Nullability functionTypeNullability; - if (node.enclosingLibrary.isNonNullableByDefault) { - functionTypeNullability = member.enclosingLibrary.nonNullable; - } else { - // We don't create a member signature when the member is just - // a substitution. We should still take the nullability to be - // legacy, though. - functionTypeNullability = node.enclosingLibrary.nonNullable; - } + Nullability functionTypeNullability = + member.enclosingLibrary.nonNullable; type = substitution.substituteType( member.function.computeThisFunctionType(functionTypeNullability)); } diff --git a/pkg/front_end/test/incremental_suite.dart b/pkg/front_end/test/incremental_suite.dart index 87f7405969c..6a2780203be 100644 --- a/pkg/front_end/test/incremental_suite.dart +++ b/pkg/front_end/test/incremental_suite.dart @@ -2832,8 +2832,7 @@ void doSimulateTransformer(Component c) { getterReference: lib.reference.canonicalName ?.getChildFromFieldGetterWithName(fieldName) .reference, - fileUri: lib.fileUri) - ..isNonNullableByDefault = lib.isNonNullableByDefault; + fileUri: lib.fileUri); lib.addField(field); for (Class c in lib.classes) { if (c.fields @@ -2851,8 +2850,7 @@ void doSimulateTransformer(Component c) { getterReference: c.reference.canonicalName ?.getChildFromFieldGetterWithName(fieldName) .reference, - fileUri: c.fileUri) - ..isNonNullableByDefault = lib.isNonNullableByDefault; + fileUri: c.fileUri); c.addField(field); } } diff --git a/pkg/front_end/test/patching/patching_test.dart b/pkg/front_end/test/patching/patching_test.dart index 4266934922d..80d33e53176 100644 --- a/pkg/front_end/test/patching/patching_test.dart +++ b/pkg/front_end/test/patching/patching_test.dart @@ -116,7 +116,8 @@ class PatchingDataExtractor extends CfeDataExtractor { @override Features computeLibraryValue(Id id, Library library) { Features features = new Features(); - features[Tags.isNonNullableByDefault] = '${library.isNonNullableByDefault}'; + // TODO(johnniwinther): Remove this. + features[Tags.isNonNullableByDefault] = 'true'; return features; } diff --git a/pkg/front_end/test/static_types/static_type_test.dart b/pkg/front_end/test/static_types/static_type_test.dart index 947c295f86f..a0bbc01b950 100644 --- a/pkg/front_end/test/static_types/static_type_test.dart +++ b/pkg/front_end/test/static_types/static_type_test.dart @@ -78,7 +78,8 @@ class StaticTypeDataExtractor extends CfeDataExtractor { @override String computeLibraryValue(Id id, Library node) { - return 'nnbd=${node.isNonNullableByDefault}'; + // TODO(johnniwinther): Remove this. + return 'nnbd=true'; } @override diff --git a/pkg/front_end/test/text_representation/data/expressions.dart b/pkg/front_end/test/text_representation/data/expressions.dart index b43dd8b9d62..16166837653 100644 --- a/pkg/front_end/test/text_representation/data/expressions.dart +++ b/pkg/front_end/test/text_representation/data/expressions.dart @@ -349,11 +349,11 @@ exprNewGeneric() => new GenericClass(); exprNewGenericNamed() => new GenericClass.named(); /*normal|limited.member: exprIs:o is List*/ -/*verbose.member: exprIs:o is{ForNonNullableByDefault} dart.core::List*/ +/*verbose.member: exprIs:o is dart.core::List*/ exprIs(o) => o is List; /*normal|limited.member: exprAs:o as List*/ -/*verbose.member: exprAs:o as{ForNonNullableByDefault} dart.core::List*/ +/*verbose.member: exprAs:o as dart.core::List*/ exprAs(o) => o as List; /*member: exprNullCheck:o!*/ diff --git a/pkg/front_end/test/text_representation/text_representation_test.dart b/pkg/front_end/test/text_representation/text_representation_test.dart index efb66894e3c..95e49211a0a 100644 --- a/pkg/front_end/test/text_representation/text_representation_test.dart +++ b/pkg/front_end/test/text_representation/text_representation_test.dart @@ -128,7 +128,8 @@ class TextRepresentationDataExtractor extends CfeDataExtractor { @override String computeLibraryValue(Id id, Library node) { - return 'nnbd=${node.isNonNullableByDefault}'; + // TODO(johnniwinther): Remove this. + return 'nnbd=true'; } @override diff --git a/pkg/frontend_server/test/native_assets_test.dart b/pkg/frontend_server/test/native_assets_test.dart index 6f2a57a8e06..b568f3b37a7 100644 --- a/pkg/frontend_server/test/native_assets_test.dart +++ b/pkg/frontend_server/test/native_assets_test.dart @@ -100,9 +100,7 @@ void main() { final Library firstLib = component.libraries.first; expect(firstLib.importUri != _nativeAssetsLibraryUri, true); - expect(nativeAssetsLibrary!.isNonNullableByDefault, - firstLib.isNonNullableByDefault); - expect(nativeAssetsLibrary.nonNullable, firstLib.nonNullable); + expect(nativeAssetsLibrary!.nonNullable, firstLib.nonNullable); expect(nativeAssetsLibrary.nonNullableByDefaultCompiledMode, firstLib.nonNullableByDefaultCompiledMode); diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md index a5d0d8fac23..2cad44a8a69 100644 --- a/pkg/kernel/binary.md +++ b/pkg/kernel/binary.md @@ -147,7 +147,7 @@ type CanonicalName { type ComponentFile { UInt32 magic = 0x90ABCDEF; - UInt32 formatVersion = 117; + UInt32 formatVersion = 118; Byte[10] shortSdkHash; List problemsAsJson; // Described in problems.md. Library[] libraries; @@ -242,7 +242,7 @@ type Name { } type Library { - Byte flags (isSynthetic, isLegacy, nnbdModeBit1, nnbdModeBit2, isUnsupported); + Byte flags (isSynthetic, nnbdModeBit1, nnbdModeBit2, isUnsupported); UInt languageVersionMajor; UInt languageVersionMinor; CanonicalNameReference canonicalName; @@ -401,8 +401,7 @@ type Field extends Member { FileOffset fileEndOffset; UInt flags (isFinal, isConst, isStatic, isCovariantByDeclaration, isCovariantByClass, isLate, isExtensionMember, - isLegacy, isInternalImplementation, - isEnumElement, isExtensionTypeMember); + isInternalImplementation, isEnumElement, isExtensionTypeMember); Name name; List annotations; DartType type; @@ -416,7 +415,7 @@ type Constructor extends Member { FileOffset startFileOffset; // Offset of the start of the constructor including any annotations. FileOffset fileOffset; // Offset of the constructor name. FileOffset fileEndOffset; - Byte flags (isConst, isExternal, isSynthetic, isLegacy); + Byte flags (isConst, isExternal, isSynthetic); Name name; List annotations; FunctionNode function; @@ -456,9 +455,8 @@ type Procedure extends Member { Byte kind; // Index into the ProcedureKind enum above. Byte stubKind; // Index into the ProcedureStubKind enum above. UInt flags (isStatic, isAbstract, isExternal, isConst, - isExtensionMember, isLegacy, isSynthetic, - isInternalImplementation, isExtensionTypeMember, - hasWeakTearoffReferencePragma, IsLoweredLateField); + isExtensionMember, isSynthetic, isInternalImplementation, + isExtensionTypeMember, hasWeakTearoffReferencePragma, IsLoweredLateField); Name name; List annotations; MemberReference stubTarget; // May be NullReference. @@ -990,7 +988,6 @@ type FileUriExpression extends Expression { type IsExpression extends Expression { Byte tag = 37; FileOffset fileOffset; - Byte flags (isLegacy); Expression operand; DartType type; } @@ -998,7 +995,7 @@ type IsExpression extends Expression { type AsExpression extends Expression { Byte tag = 38; FileOffset fileOffset; - Byte flags (isTypeError,isCovarianceCheck,isForDynamic,isForNonNullableByDefault); + Byte flags (isTypeError,isCovarianceCheck,isForDynamic,isUnchecked); Expression operand; DartType type; } diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart index 5435b74025e..78909f92d7b 100644 --- a/pkg/kernel/lib/ast.dart +++ b/pkg/kernel/lib/ast.dart @@ -290,10 +290,10 @@ class Library extends NamedNode } static const int SyntheticFlag = 1 << 0; - static const int LegacyFlag = 1 << 1; - static const int NonNullableByDefaultModeBit1 = 1 << 2; - static const int NonNullableByDefaultModeBit2 = 1 << 3; - static const int IsUnsupportedFlag = 1 << 4; + + static const int NonNullableByDefaultModeBit1 = 1 << 1; + static const int NonNullableByDefaultModeBit2 = 1 << 2; + static const int IsUnsupportedFlag = 1 << 3; int flags = 0; @@ -304,11 +304,6 @@ class Library extends NamedNode flags = value ? (flags | SyntheticFlag) : (flags & ~SyntheticFlag); } - bool get isNonNullableByDefault => (flags & LegacyFlag) == 0; - void set isNonNullableByDefault(bool value) { - flags = value ? (flags & ~LegacyFlag) : (flags | LegacyFlag); - } - NonNullableByDefaultCompiledMode get nonNullableByDefaultCompiledMode { bool bit1 = (flags & NonNullableByDefaultModeBit1) != 0; bool bit2 = (flags & NonNullableByDefaultModeBit2) != 0; @@ -465,15 +460,9 @@ class Library extends NamedNode _fields = fields; } - Nullability get nullable { - return isNonNullableByDefault ? Nullability.nullable : Nullability.legacy; - } + Nullability get nullable => Nullability.nullable; - Nullability get nonNullable { - return isNonNullableByDefault - ? Nullability.nonNullable - : Nullability.legacy; - } + Nullability get nonNullable => Nullability.nonNullable; /// Returns the top-level fields and procedures defined in this library. /// @@ -2193,10 +2182,6 @@ sealed class Member extends NamedNode implements Annotatable, FileUriNode { /// bool get isExtensionTypeMember; - /// If `true` this member is defined in a library for which non-nullable by - /// default is enabled. - bool get isNonNullableByDefault; - /// If `true` this procedure is not part of the interface but only part of the /// class members. /// @@ -2420,10 +2405,9 @@ class Field extends Member { static const int FlagCovariantByClass = 1 << 4; static const int FlagLate = 1 << 5; static const int FlagExtensionMember = 1 << 6; - static const int FlagLegacy = 1 << 7; - static const int FlagInternalImplementation = 1 << 8; - static const int FlagEnumElement = 1 << 9; - static const int FlagExtensionTypeMember = 1 << 10; + static const int FlagInternalImplementation = 1 << 7; + static const int FlagEnumElement = 1 << 8; + static const int FlagExtensionTypeMember = 1 << 9; /// Whether the field is declared with the `covariant` keyword. bool get isCovariantByDeclaration => flags & FlagCovariant != 0; @@ -2529,13 +2513,6 @@ class Field extends Member { @override bool get isExternal => false; - @override - bool get isNonNullableByDefault => flags & FlagLegacy == 0; - - void set isNonNullableByDefault(bool value) { - flags = value ? (flags & ~FlagLegacy) : (flags | FlagLegacy); - } - @override R accept(MemberVisitor v) => v.visitField(this); @@ -2650,7 +2627,6 @@ class Constructor extends Member { static const int FlagConst = 1 << 0; // Must match serialized bit positions. static const int FlagExternal = 1 << 1; static const int FlagSynthetic = 1 << 2; - static const int FlagLegacy = 1 << 3; @override bool get isConst => flags & FlagConst != 0; @@ -2689,13 +2665,6 @@ class Constructor extends Member { @override bool get isExtensionTypeMember => false; - @override - bool get isNonNullableByDefault => flags & FlagLegacy == 0; - - void set isNonNullableByDefault(bool value) { - flags = value ? (flags & ~FlagLegacy) : (flags | FlagLegacy); - } - @override R accept(MemberVisitor v) => v.visitConstructor(this); @@ -3098,11 +3067,10 @@ class Procedure extends Member implements GenericFunction { static const int FlagExternal = 1 << 2; static const int FlagConst = 1 << 3; // Only for external const factories. static const int FlagExtensionMember = 1 << 4; - static const int FlagLegacy = 1 << 5; - static const int FlagSynthetic = 1 << 6; - static const int FlagInternalImplementation = 1 << 7; - static const int FlagExtensionTypeMember = 1 << 8; - static const int FlagHasWeakTearoffReferencePragma = 1 << 9; + static const int FlagSynthetic = 1 << 5; + static const int FlagInternalImplementation = 1 << 6; + static const int FlagExtensionTypeMember = 1 << 7; + static const int FlagHasWeakTearoffReferencePragma = 1 << 8; bool get isStatic => flags & FlagStatic != 0; @@ -3222,13 +3190,6 @@ class Procedure extends Member implements GenericFunction { bool get isFactory => kind == ProcedureKind.Factory; - @override - bool get isNonNullableByDefault => flags & FlagLegacy == 0; - - void set isNonNullableByDefault(bool value) { - flags = value ? (flags & ~FlagLegacy) : (flags | FlagLegacy); - } - Member? get concreteForwardingStubTarget => stubKind == ProcedureStubKind.ConcreteForwardingStub ? stubTargetReference?.asMember @@ -7501,7 +7462,6 @@ class FileUriExpression extends Expression implements FileUriNode { /// Expression of form `x is T`. class IsExpression extends Expression { - int flags = 0; Expression operand; DartType type; @@ -7509,19 +7469,6 @@ class IsExpression extends Expression { operand.parent = this; } - // Must match serialized bit positions. - static const int FlagForLegacy = 1 << 0; - - /// If `true`, this test take the nullability of [type] into account. - /// - /// This is the case for is-tests written in libraries that are opted in to - /// the non nullable by default feature. - bool get isForNonNullableByDefault => flags & FlagForLegacy == 0; - - void set isForNonNullableByDefault(bool value) { - flags = value ? (flags & ~FlagForLegacy) : (flags | FlagForLegacy); - } - @override DartType getStaticType(StaticTypeContext context) => getStaticTypeInternal(context); @@ -7566,11 +7513,7 @@ class IsExpression extends Expression { void toTextInternal(AstPrinter printer) { printer.writeExpression(operand, minimumPrecedence: astToText.Precedence.BITWISE_OR); - printer.write(' is'); - if (printer.includeAuxiliaryProperties && isForNonNullableByDefault) { - printer.write('{ForNonNullableByDefault}'); - } - printer.write(' '); + printer.write(' is '); printer.writeType(type); } } @@ -7589,8 +7532,7 @@ class AsExpression extends Expression { static const int FlagTypeError = 1 << 0; static const int FlagCovarianceCheck = 1 << 1; static const int FlagForDynamic = 1 << 2; - static const int FlagForLegacy = 1 << 3; - static const int FlagUnchecked = 1 << 4; + static const int FlagUnchecked = 1 << 3; /// If `true`, this test is an implicit down cast. /// @@ -7635,16 +7577,6 @@ class AsExpression extends Expression { flags = value ? (flags | FlagForDynamic) : (flags & ~FlagForDynamic); } - /// If `true`, this test take the nullability of [type] into account. - /// - /// This is the case for is-tests written in libraries that are opted in to - /// the non nullable by default feature. - bool get isForNonNullableByDefault => flags & FlagForLegacy == 0; - - void set isForNonNullableByDefault(bool value) { - flags = value ? (flags & ~FlagForLegacy) : (flags | FlagForLegacy); - } - /// If `true`, this test is added to show the known static type of the /// expression and should not be performed at runtime. /// @@ -7714,9 +7646,6 @@ class AsExpression extends Expression { if (isForDynamic) { flags.add('ForDynamic'); } - if (isForNonNullableByDefault) { - flags.add('ForNonNullableByDefault'); - } if (flags.isNotEmpty) { printer.write('{${flags.join(',')}}'); } @@ -8089,9 +8018,7 @@ class Rethrow extends Expression { @override DartType getStaticTypeInternal(StaticTypeContext context) => - context.isNonNullableByDefault - ? const NeverType.nonNullable() - : const NeverType.legacy(); + const NeverType.nonNullable(); @override R accept(ExpressionVisitor v) => v.visitRethrow(this); @@ -8150,9 +8077,7 @@ class Throw extends Expression { @override DartType getStaticTypeInternal(StaticTypeContext context) => - context.isNonNullableByDefault - ? const NeverType.nonNullable() - : const NeverType.legacy(); + const NeverType.nonNullable(); @override R accept(ExpressionVisitor v) => v.visitThrow(this); @@ -12632,9 +12557,7 @@ class TypeParameterType extends DartType { /// the bound of [parameter]. TypeParameterType.withDefaultNullabilityForLibrary( this.parameter, Library library) - : declaredNullability = library.isNonNullableByDefault - ? computeNullabilityFromBound(parameter) - : Nullability.legacy; + : declaredNullability = computeNullabilityFromBound(parameter); @override DartType get nonTypeVariableBound { diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart index b147f3c9e66..fcd14058b6a 100644 --- a/pkg/kernel/lib/binary/ast_from_binary.dart +++ b/pkg/kernel/lib/binary/ast_from_binary.dart @@ -2745,10 +2745,8 @@ class BinaryBuilder { Expression _readIsExpression() { int offset = readOffset(); - int flags = readByte(); return new IsExpression(readExpression(), readDartType()) - ..fileOffset = offset - ..flags = flags; + ..fileOffset = offset; } Expression _readAsExpression() { diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart index 30732489066..96bb985f1f9 100644 --- a/pkg/kernel/lib/binary/ast_to_binary.dart +++ b/pkg/kernel/lib/binary/ast_to_binary.dart @@ -1974,7 +1974,6 @@ class BinaryPrinter implements Visitor, BinarySink { void visitIsExpression(IsExpression node) { writeByte(Tag.IsExpression); writeOffset(node.fileOffset); - writeByte(node.flags); writeNode(node.operand); writeNode(node.type); } diff --git a/pkg/kernel/lib/binary/tag.dart b/pkg/kernel/lib/binary/tag.dart index 6a7eef55366..a43b09fd388 100644 --- a/pkg/kernel/lib/binary/tag.dart +++ b/pkg/kernel/lib/binary/tag.dart @@ -226,7 +226,7 @@ class Tag { /// Internal version of kernel binary format. /// Bump it when making incompatible changes in kernel binaries. /// Keep in sync with runtime/vm/kernel_binary.h, pkg/kernel/binary.md. - static const int BinaryFormatVersion = 117; + static const int BinaryFormatVersion = 118; } abstract class ConstantTag { diff --git a/pkg/kernel/lib/class_hierarchy.dart b/pkg/kernel/lib/class_hierarchy.dart index a1193bfa14d..f01efd7eb1b 100644 --- a/pkg/kernel/lib/class_hierarchy.dart +++ b/pkg/kernel/lib/class_hierarchy.dart @@ -1964,31 +1964,18 @@ class _ClassInfo { HandleAmbiguousSupertypes onAmbiguousSupertypes) { Supertype? canonical = genericSuperType![cls]; if (canonical == null) { - if (!classNode.enclosingLibrary.isNonNullableByDefault) { - canonical = legacyErasureSupertype(type); - } else { - canonical = type; - } + canonical = type; genericSuperType![cls] = canonical; genericSuperTypes![cls] = [type]; } else { genericSuperTypes![cls]!.add(type); - if (classNode.enclosingLibrary.isNonNullableByDefault) { - Supertype? result = nnbdTopMergeSupertype( - coreTypes, - normSupertype(coreTypes, type), - normSupertype(coreTypes, canonical)); - if (result == null) { - onAmbiguousSupertypes(classNode, canonical, type); - } else { - genericSuperType![cls] = result; - } + Supertype? result = nnbdTopMergeSupertype(coreTypes, + normSupertype(coreTypes, type), normSupertype(coreTypes, canonical)); + if (result == null) { + onAmbiguousSupertypes(classNode, canonical, type); } else { - type = legacyErasureSupertype(type); - if (type != canonical) { - onAmbiguousSupertypes(classNode, canonical, type); - } + genericSuperType![cls] = result; } } assert(genericSuperType!.containsKey(cls), diff --git a/pkg/kernel/lib/clone.dart b/pkg/kernel/lib/clone.dart index 928bd247658..bae6a4557b9 100644 --- a/pkg/kernel/lib/clone.dart +++ b/pkg/kernel/lib/clone.dart @@ -303,8 +303,7 @@ class CloneVisitorNotMembers implements TreeVisitor { @override TreeNode visitIsExpression(IsExpression node) { - return new IsExpression(clone(node.operand), visitType(node.type)) - ..flags = node.flags; + return new IsExpression(clone(node.operand), visitType(node.type)); } @override diff --git a/pkg/kernel/lib/src/equivalence.dart b/pkg/kernel/lib/src/equivalence.dart index 97c5c3d041c..31533071d8e 100644 --- a/pkg/kernel/lib/src/equivalence.dart +++ b/pkg/kernel/lib/src/equivalence.dart @@ -3097,9 +3097,6 @@ class EquivalenceStrategy { if (other is! IsExpression) return false; visitor.pushNodeState(node, other); bool result = true; - if (!checkIsExpression_flags(visitor, node, other)) { - result = visitor.resultOnInequivalence; - } if (!checkIsExpression_operand(visitor, node, other)) { result = visitor.resultOnInequivalence; } @@ -7457,11 +7454,6 @@ class EquivalenceStrategy { return checkExpression_fileOffset(visitor, node, other); } - bool checkIsExpression_flags( - EquivalenceVisitor visitor, IsExpression node, IsExpression other) { - return visitor.checkValues(node.flags, other.flags, 'flags'); - } - bool checkIsExpression_operand( EquivalenceVisitor visitor, IsExpression node, IsExpression other) { return visitor.checkNodes(node.operand, other.operand, 'operand'); diff --git a/pkg/kernel/lib/src/legacy_erasure.dart b/pkg/kernel/lib/src/legacy_erasure.dart index 29f9a660c3f..d70307fe01d 100644 --- a/pkg/kernel/lib/src/legacy_erasure.dart +++ b/pkg/kernel/lib/src/legacy_erasure.dart @@ -72,47 +72,3 @@ class _LegacyErasure extends ReplacementVisitor { return const NullType(); } } - -/// Returns `true` if a member declared in [declaringClass] inherited or -/// mixed into [enclosingClass] needs legacy erasure to compute its inherited -/// type. -/// -/// For instance: -/// -/// // Opt in: -/// class Super { -/// int extendedMethod(int i, {required int j}) => i; -/// } -/// class Mixin { -/// int mixedInMethod(int i, {required int j}) => i; -/// } -/// // Opt out: -/// class Legacy extends Super with Mixin {} -/// // Opt in: -/// class Class extends Legacy { -/// test() { -/// // Ok to call `Legacy.extendedMethod` since its type is -/// // `int* Function(int*, {int* j})`. -/// super.extendedMethod(null); -/// // Ok to call `Legacy.mixedInMethod` since its type is -/// // `int* Function(int*, {int* j})`. -/// super.mixedInMethod(null); -/// } -/// } -/// -bool needsLegacyErasure(Class enclosingClass, Class declaringClass) { - Class? cls = enclosingClass; - while (cls != null) { - if (!cls.enclosingLibrary.isNonNullableByDefault) { - return true; - } - if (cls == declaringClass) { - return false; - } - if (cls.mixedInClass == declaringClass) { - return false; - } - cls = cls.superclass; - } - return false; -} diff --git a/pkg/kernel/lib/testing/type_parser_environment.dart b/pkg/kernel/lib/testing/type_parser_environment.dart index d9e4f0c5531..5249737c9e0 100644 --- a/pkg/kernel/lib/testing/type_parser_environment.dart +++ b/pkg/kernel/lib/testing/type_parser_environment.dart @@ -33,8 +33,7 @@ Library parseLibrary(Uri uri, String text, fileUri ??= uri; environment ??= new TypeParserEnvironment(uri, fileUri); Library library = - new Library(uri, fileUri: fileUri, name: uri.path.replaceAll("/", ".")) - ..isNonNullableByDefault = true; + new Library(uri, fileUri: fileUri, name: uri.path.replaceAll("/", ".")); List types = type_parser.parse(text); for (ParsedType type in types) { if (type is ParsedClass) { @@ -87,13 +86,11 @@ class Env { TypeParserEnvironment coreEnvironment = new TypeParserEnvironment(coreUri, coreUri); Library coreLibrary = - parseLibrary(coreUri, mockSdk, environment: coreEnvironment) - ..isNonNullableByDefault = isNonNullableByDefault; + parseLibrary(coreUri, mockSdk, environment: coreEnvironment); _libraryEnvironment = new TypeParserEnvironment(libraryUri, libraryUri) ._extend(coreEnvironment._declarations); Library library = - parseLibrary(libraryUri, source, environment: _libraryEnvironment) - ..isNonNullableByDefault = isNonNullableByDefault; + parseLibrary(libraryUri, source, environment: _libraryEnvironment); library.name = "lib"; component = new Component(libraries: [coreLibrary, library]); coreTypes = new CoreTypes(component); diff --git a/pkg/kernel/lib/text/ast_to_text.dart b/pkg/kernel/lib/text/ast_to_text.dart index dd20d96c484..ba72be756a9 100644 --- a/pkg/kernel/lib/text/ast_to_text.dart +++ b/pkg/kernel/lib/text/ast_to_text.dart @@ -406,9 +406,6 @@ class Printer extends VisitorDefault with VisitorVoidMixin { if (library.isUnsupported) { flags.add('isUnsupported'); } - if (!library.isNonNullableByDefault) { - flags.add('isLegacy'); - } if (flags.isNotEmpty) { writeWord('/*${flags.join(',')}*/'); } @@ -1092,14 +1089,6 @@ class Printer extends VisitorDefault with VisitorVoidMixin { writeExpression(initializer); } List features = []; - if (node.enclosingLibrary.isNonNullableByDefault != - node.isNonNullableByDefault) { - if (node.isNonNullableByDefault) { - features.add("isNonNullableByDefault"); - } else { - features.add("isLegacy"); - } - } Class? enclosingClass = node.enclosingClass; if ((enclosingClass == null && node.enclosingLibrary.fileUri != node.fileUri) || @@ -1146,14 +1135,6 @@ class Printer extends VisitorDefault with VisitorVoidMixin { } writeWord(procedureKindToString(node.kind)); List features = []; - if (node.enclosingLibrary.isNonNullableByDefault != - node.isNonNullableByDefault) { - if (node.isNonNullableByDefault) { - features.add("isNonNullableByDefault"); - } else { - features.add("isLegacy"); - } - } Class? enclosingClass = node.enclosingClass; if ((enclosingClass == null && node.enclosingLibrary.fileUri != node.fileUri) || @@ -1200,14 +1181,6 @@ class Printer extends VisitorDefault with VisitorVoidMixin { writeModifier(node.isSynthetic, 'synthetic'); writeWord('constructor'); List features = []; - if (node.enclosingLibrary.isNonNullableByDefault != - node.isNonNullableByDefault) { - if (node.isNonNullableByDefault) { - features.add("isNonNullableByDefault"); - } else { - features.add("isLegacy"); - } - } if (features.isNotEmpty) { writeWord("/*${features.join(',')}*/"); } @@ -1753,7 +1726,7 @@ class Printer extends VisitorDefault with VisitorVoidMixin { @override void visitIsExpression(IsExpression node) { writeExpression(node.operand, Precedence.BITWISE_OR); - writeSpaced(!node.isForNonNullableByDefault ? 'is{ForLegacy}' : 'is'); + writeSpaced('is'); writeType(node.type); } @@ -1770,9 +1743,6 @@ class Printer extends VisitorDefault with VisitorVoidMixin { if (node.isForDynamic) { flags.add('ForDynamic'); } - if (!node.isForNonNullableByDefault) { - flags.add('ForLegacy'); - } if (node.isUnchecked) { flags.add('Unchecked'); } diff --git a/pkg/kernel/lib/type_environment.dart b/pkg/kernel/lib/type_environment.dart index 8a8f3c3627e..148e3494694 100644 --- a/pkg/kernel/lib/type_environment.dart +++ b/pkg/kernel/lib/type_environment.dart @@ -285,39 +285,36 @@ abstract class TypeEnvironment extends Types { } DartType getTypeOfSpecialCasedTernaryOperator( - DartType type1, DartType type2, DartType type3, Library clientLibrary) { - if (clientLibrary.isNonNullableByDefault) { - // Let e be a normal invocation of the form e1.clamp(e2, e3), where the - // static types of e1, e2 and e3 are T1, T2 and T3 respectively, and where - // T1, T2, and T3 are all non-Never subtypes of num. Then: - if (type1 is! NeverType && type2 is! NeverType && type3 is! NeverType - /* We skip the check that all types are subtypes of num because, if + DartType type1, DartType type2, DartType type3) { + // Let e be a normal invocation of the form e1.clamp(e2, e3), where the + // static types of e1, e2 and e3 are T1, T2 and T3 respectively, and where + // T1, T2, and T3 are all non-Never subtypes of num. Then: + if (type1 is! NeverType && type2 is! NeverType && type3 is! NeverType + /* We skip the check that all types are subtypes of num because, if not, we'll compute the static type to be num, anyway.*/ - ) { - if (isSubtypeOf(type1, coreTypes.intNonNullableRawType, - SubtypeCheckMode.withNullabilities) && - isSubtypeOf(type2, coreTypes.intNonNullableRawType, - SubtypeCheckMode.withNullabilities) && - isSubtypeOf(type3, coreTypes.intNonNullableRawType, - SubtypeCheckMode.withNullabilities)) { - // If T1, T2 and T3 are all subtypes of int, the static type of e is - // int. - return coreTypes.intNonNullableRawType; - } else if (isSubtypeOf(type1, coreTypes.doubleNonNullableRawType, - SubtypeCheckMode.withNullabilities) && - isSubtypeOf(type2, coreTypes.doubleNonNullableRawType, - SubtypeCheckMode.withNullabilities) && - isSubtypeOf(type3, coreTypes.doubleNonNullableRawType, - SubtypeCheckMode.withNullabilities)) { - // If T1, T2 and T3 are all subtypes of double, the static type of e - // is double. - return coreTypes.doubleNonNullableRawType; - } + ) { + if (isSubtypeOf(type1, coreTypes.intNonNullableRawType, + SubtypeCheckMode.withNullabilities) && + isSubtypeOf(type2, coreTypes.intNonNullableRawType, + SubtypeCheckMode.withNullabilities) && + isSubtypeOf(type3, coreTypes.intNonNullableRawType, + SubtypeCheckMode.withNullabilities)) { + // If T1, T2 and T3 are all subtypes of int, the static type of e is + // int. + return coreTypes.intNonNullableRawType; + } else if (isSubtypeOf(type1, coreTypes.doubleNonNullableRawType, + SubtypeCheckMode.withNullabilities) && + isSubtypeOf(type2, coreTypes.doubleNonNullableRawType, + SubtypeCheckMode.withNullabilities) && + isSubtypeOf(type3, coreTypes.doubleNonNullableRawType, + SubtypeCheckMode.withNullabilities)) { + // If T1, T2 and T3 are all subtypes of double, the static type of e + // is double. + return coreTypes.doubleNonNullableRawType; } - // Otherwise the static type of e is num. - return coreTypes.numNonNullableRawType; } - return coreTypes.numRawType(type1.nullability); + // Otherwise the static type of e is num. + return coreTypes.numNonNullableRawType; } bool _isRawTypeArgumentEquivalent( @@ -931,10 +928,6 @@ abstract class StaticTypeContext { /// For opt out libraries this is [Nullability.legacy]. Nullability get nullable; - /// Return `true` if the current library is opted in to non-nullable by - /// default. - bool get isNonNullableByDefault; - /// Returns the mode under which the current library was compiled. NonNullableByDefaultCompiledMode get nonNullableByDefaultCompiledMode; @@ -1004,11 +997,6 @@ class StaticTypeContextImpl implements StaticTypeContext { @override Nullability get nullable => _library.nullable; - /// Return `true` if the current library is opted in to non-nullable by - /// default. - @override - bool get isNonNullableByDefault => _library.isNonNullableByDefault; - /// Returns the mode under which the current library was compiled. @override NonNullableByDefaultCompiledMode get nonNullableByDefaultCompiledMode => @@ -1121,9 +1109,6 @@ class _FlatStatefulStaticTypeContext extends StatefulStaticTypeContext { @override Nullability get nullable => _library.nullable; - @override - bool get isNonNullableByDefault => _library.isNonNullableByDefault; - @override NonNullableByDefaultCompiledMode get nonNullableByDefaultCompiledMode => _library.nonNullableByDefaultCompiledMode; @@ -1226,9 +1211,6 @@ class _StackedStatefulStaticTypeContext extends StatefulStaticTypeContext { @override Nullability get nullable => _library.nullable; - @override - bool get isNonNullableByDefault => _library.isNonNullableByDefault; - @override NonNullableByDefaultCompiledMode get nonNullableByDefaultCompiledMode => _library.nonNullableByDefaultCompiledMode; diff --git a/pkg/kernel/test/binary/library_flags_test.dart b/pkg/kernel/test/binary/library_flags_test.dart index 15f5ac99be0..3671bbc7d5e 100644 --- a/pkg/kernel/test/binary/library_flags_test.dart +++ b/pkg/kernel/test/binary/library_flags_test.dart @@ -16,17 +16,6 @@ void main() { } } - void setNonNullableByDefault(Library lib, bool isNonNullableByDefault) { - lib.isNonNullableByDefault = isNonNullableByDefault; - } - - void verifyNonNullableByDefault(Library lib, bool isNonNullableByDefault) { - if (lib.isNonNullableByDefault != isNonNullableByDefault) { - throw "Serialized and re-read library had change in " - "isNonNullableByDefault flag."; - } - } - void setNonNullableByDefaultCompiledMode(Library lib, NonNullableByDefaultCompiledMode nonNullableByDefaultCompiledMode) { lib.nonNullableByDefaultCompiledMode = nonNullableByDefaultCompiledMode; @@ -59,12 +48,10 @@ void main() { Uri uri = Uri.parse("foo://bar.dart"); Library lib = new Library(uri, fileUri: uri); setSynthetic(lib, isSynthetic); - setNonNullableByDefault(lib, isNonNullableByDefault); setNonNullableByDefaultCompiledMode( lib, nonNullableByDefaultCompiledMode); Library lib2 = libRoundTrip(lib); verifySynthetic(lib2, isSynthetic); - verifyNonNullableByDefault(lib2, isNonNullableByDefault); verifyNonNullableByDefaultCompiledMode( lib2, nonNullableByDefaultCompiledMode); } diff --git a/pkg/kernel/test/class_hierarchy_test.dart b/pkg/kernel/test/class_hierarchy_test.dart index cf35b346816..729a4111605 100644 --- a/pkg/kernel/test/class_hierarchy_test.dart +++ b/pkg/kernel/test/class_hierarchy_test.dart @@ -1347,11 +1347,11 @@ class B extends self::A {} var b_int = new InterfaceType(b, Nullability.legacy, [int]); expect( hierarchy.getInterfaceTypeAsInstanceOfClass(b_int, a, - isNonNullableByDefault: library.isNonNullableByDefault), + isNonNullableByDefault: true), new InterfaceType(a, Nullability.legacy, [int, bool])); expect( hierarchy.getInterfaceTypeAsInstanceOfClass(b_int, objectClass, - isNonNullableByDefault: library.isNonNullableByDefault), + isNonNullableByDefault: true), new InterfaceType(objectClass, Nullability.legacy)); } diff --git a/pkg/kernel/test/type_parser.dart b/pkg/kernel/test/type_parser.dart index 4942a105b55..5af1edb0594 100644 --- a/pkg/kernel/test/type_parser.dart +++ b/pkg/kernel/test/type_parser.dart @@ -380,8 +380,7 @@ class LazyTypeEnvironment { LazyTypeEnvironment() { Uri uri = Uri.parse('file://dummy.dart'); - dummyLibrary = new Library(uri, fileUri: uri) - ..isNonNullableByDefault = true; + dummyLibrary = new Library(uri, fileUri: uri); component.libraries.add(dummyLibrary..parent = component); dummyLibrary.name = 'lib'; } diff --git a/pkg/vm/lib/modular/transformations/ffi/definitions.dart b/pkg/vm/lib/modular/transformations/ffi/definitions.dart index 639765901d5..f19926fc964 100644 --- a/pkg/vm/lib/modular/transformations/ffi/definitions.dart +++ b/pkg/vm/lib/modular/transformations/ffi/definitions.dart @@ -589,8 +589,7 @@ class _FfiDefinitionTransformer extends FfiTransformer { ], fileUri: node.fileUri, reference: reference) - ..fileOffset = node.fileOffset - ..isNonNullableByDefault = node.enclosingLibrary.isNonNullableByDefault; + ..fileOffset = node.fileOffset; // Struct objects are manufactured in the VM by being passed by value // in return position in FFI calls, and by value in arguments in FFI @@ -651,8 +650,7 @@ class _FfiDefinitionTransformer extends FfiTransformer { ], fileUri: node.fileUri, reference: reference) - ..fileOffset = node.fileOffset - ..isNonNullableByDefault = node.enclosingLibrary.isNonNullableByDefault; + ..fileOffset = node.fileOffset; node.addConstructor(ctor); } @@ -1001,7 +999,6 @@ class _FfiDefinitionTransformer extends FfiTransformer { reference: getterReference, ) ..fileOffset = fileOffset - ..isNonNullableByDefault = true ..isStatic = true ..isSynthetic = true ..annotations = []; @@ -1043,7 +1040,6 @@ class _FfiDefinitionTransformer extends FfiTransformer { reference: getterReference, ) ..fileOffset = field.fileOffset - ..isNonNullableByDefault = field.isNonNullableByDefault ..annotations = field.annotations; node.addProcedure(getter); @@ -1078,9 +1074,7 @@ class _FfiDefinitionTransformer extends FfiTransformer { ), fileUri: field.fileUri, reference: setterReference, - ) - ..fileOffset = field.fileOffset - ..isNonNullableByDefault = field.isNonNullableByDefault; + )..fileOffset = field.fileOffset; node.addProcedure(setter); } @@ -1110,8 +1104,7 @@ class _FfiDefinitionTransformer extends FfiTransformer { fileUri: compound.fileUri, reference: getterReference, isStatic: true) - ..fileOffset = compound.fileOffset - ..isNonNullableByDefault = true; + ..fileOffset = compound.fileOffset; addPragmaPreferInline(getter); compound.addProcedure(getter); } diff --git a/pkg/vm/lib/modular/transformations/ffi/native.dart b/pkg/vm/lib/modular/transformations/ffi/native.dart index a8249edd4c5..866178e021e 100644 --- a/pkg/vm/lib/modular/transformations/ffi/native.dart +++ b/pkg/vm/lib/modular/transformations/ffi/native.dart @@ -561,9 +561,7 @@ class FfiNativeTransformer extends FfiTransformer { isStatic: true, isExternal: true, reference: reference, - ) - ..isNonNullableByDefault = node.isNonNullableByDefault - ..fileOffset = node.fileOffset; + )..fileOffset = node.fileOffset; nonWrappedFfiNative.addAnnotation(pragmaConstant); // Add procedure to the parent the FfiNative function belongs to. diff --git a/pkg/vm/lib/transformations/mixin_deduplication.dart b/pkg/vm/lib/transformations/mixin_deduplication.dart index c50954a8b42..68f6d5f2f91 100644 --- a/pkg/vm/lib/transformations/mixin_deduplication.dart +++ b/pkg/vm/lib/transformations/mixin_deduplication.dart @@ -67,9 +67,6 @@ class _DeduplicateMixinKey { final otherImplemented = otherClass.implementedTypes; if (thisImplemented.length != otherImplemented.length) return false; - if (thisClass.enclosingLibrary.isNonNullableByDefault != - otherClass.enclosingLibrary.isNonNullableByDefault) return false; - // Non generic classes can use equalty compares of supertypes. if (thisParameters.isEmpty) { if (thisSupertype != otherSupertype) return false; diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc index 4a3f368e366..74008c1e505 100644 --- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc +++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc @@ -3958,8 +3958,6 @@ Fragment StreamingFlowGraphBuilder::BuildIsExpression(TokenPosition* p) { TokenPosition position = ReadPosition(); // read position. if (p != nullptr) *p = position; - ReadFlags(); - Fragment instructions = BuildExpression(); // read operand. const AbstractType& type = T.BuildType(); // read type. diff --git a/runtime/vm/compiler/frontend/kernel_fingerprints.cc b/runtime/vm/compiler/frontend/kernel_fingerprints.cc index c9f3b25c152..7d0697a1a2a 100644 --- a/runtime/vm/compiler/frontend/kernel_fingerprints.cc +++ b/runtime/vm/compiler/frontend/kernel_fingerprints.cc @@ -560,7 +560,6 @@ void KernelFingerprintHelper::CalculateExpressionFingerprint() { return; case kIsExpression: ReadPosition(); // read position. - BuildHash(ReadFlags()); // read flags. CalculateExpressionFingerprint(); // read operand. CalculateDartTypeFingerprint(); // read type. return; diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc index c841c209eb5..98bdcd2980b 100644 --- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc +++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc @@ -2738,7 +2738,6 @@ void KernelReaderHelper::SkipExpression() { return; case kIsExpression: ReadPosition(); // read position. - SkipFlags(); // read flags. SkipExpression(); // read operand. SkipDartType(); // read type. return; diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.h b/runtime/vm/compiler/frontend/kernel_translation_helper.h index 52923aa8e5f..4b5e6432fff 100644 --- a/runtime/vm/compiler/frontend/kernel_translation_helper.h +++ b/runtime/vm/compiler/frontend/kernel_translation_helper.h @@ -494,10 +494,9 @@ class FieldHelper { kIsGenericCovariantImpl = 1 << 4, kIsLate = 1 << 5, kExtensionMember = 1 << 6, - kLegacy = 1 << 7, - kInternalImplementation = 1 << 8, - kEnumElement = 1 << 9, - kExtensionTypeMember = 1 << 10, + kInternalImplementation = 1 << 7, + kEnumElement = 1 << 8, + kExtensionTypeMember = 1 << 9, }; explicit FieldHelper(KernelReaderHelper* helper) @@ -594,11 +593,10 @@ class ProcedureHelper { kExternal = 1 << 2, kConst = 1 << 3, // Only for external const factories. kExtensionMember = 1 << 4, - kIsLegacy = 1 << 5, - kSyntheticProcedure = 1 << 6, - kInternalImplementation = 1 << 7, - kExtensionTypeMember = 1 << 8, - kHasWeakTearoffReferencePragma = 1 << 9, + kSyntheticProcedure = 1 << 5, + kInternalImplementation = 1 << 6, + kExtensionTypeMember = 1 << 7, + kHasWeakTearoffReferencePragma = 1 << 8, }; explicit ProcedureHelper(KernelReaderHelper* helper) @@ -848,10 +846,9 @@ class LibraryHelper { enum Flag { kSynthetic = 1 << 0, - kIsLegacy = 1 << 1, - kNonNullableByDefaultCompiledModeBit1 = 1 << 2, - kNonNullableByDefaultCompiledModeBit2 = 1 << 3, - kUnsupported = 1 << 4, + kNonNullableByDefaultCompiledModeBit1 = 1 << 1, + kNonNullableByDefaultCompiledModeBit2 = 1 << 2, + kUnsupported = 1 << 3, }; explicit LibraryHelper(KernelReaderHelper* helper) @@ -867,7 +864,6 @@ class LibraryHelper { void SetJustRead(Field field) { next_read_ = field + 1; } bool IsSynthetic() const { return (flags_ & kSynthetic) != 0; } - bool IsNonNullableByDefault() const { return (flags_ & kIsLegacy) == 0; } NNBDCompiledMode GetNonNullableByDefaultCompiledMode() const { bool bit1 = (flags_ & kNonNullableByDefaultCompiledModeBit1) != 0; bool bit2 = (flags_ & kNonNullableByDefaultCompiledModeBit2) != 0; diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc index 579b8da49a5..7ddd14485b5 100644 --- a/runtime/vm/compiler/frontend/scope_builder.cc +++ b/runtime/vm/compiler/frontend/scope_builder.cc @@ -862,7 +862,6 @@ void ScopeBuilder::VisitExpression() { case kIsExpression: needs_expr_temp_ = true; helper_.ReadPosition(); // read position. - helper_.ReadFlags(); // read flags. VisitExpression(); // read operand. VisitDartType(); // read type. return; diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h index c44c50b862c..0dd3c2ba527 100644 --- a/runtime/vm/compiler/recognized_methods_list.h +++ b/runtime/vm/compiler/recognized_methods_list.h @@ -168,7 +168,7 @@ namespace dart { V(::, _byteDataByteOffsetCheck, ByteDataByteOffsetCheck, 0xbaf71484) \ V(::, copyRangeFromUint8ListToOneByteString, \ CopyRangeFromUint8ListToOneByteString, 0xcc3444c2) \ - V(_StringBase, _interpolate, StringBaseInterpolate, 0x3f22ce9e) \ + V(_StringBase, _interpolate, StringBaseInterpolate, 0xa2c902d2) \ V(_StringBase, codeUnitAt, StringBaseCodeUnitAt, 0x17dbf511) \ V(_SuspendState, get:_functionData, SuspendState_getFunctionData, \ 0x7272eaae) \ @@ -198,8 +198,8 @@ namespace dart { V(_Double, roundToDouble, DoubleRoundToDouble, 0x562cb240) \ V(_Double, toInt, DoubleToInteger, 0x675208e9) \ V(_Double, truncateToDouble, DoubleTruncateToDouble, 0x62b76e99) \ - V(::, min, MathMin, 0x21232beb) \ - V(::, max, MathMax, 0xcf067384) \ + V(::, min, MathMin, 0x63eb7469) \ + V(::, max, MathMax, 0xf9320c82) \ V(::, _doublePow, MathDoublePow, 0xaeabdc94) \ V(::, _intPow, MathIntPow, 0xab39e81a) \ V(::, _sin, MathSin, 0x17bdb243) \ @@ -399,7 +399,7 @@ namespace dart { V(_Double, >=, Double_greaterEqualThan, 0x4aa007b3) \ V(_Double, <, Double_lessThan, 0xd2fb73b4) \ V(_Double, <=, Double_lessEqualThan, 0x024aa595) \ - V(_Double, ==, Double_equal, 0x3694bad0) \ + V(_Double, ==, Double_equal, 0xe9189b0a) \ V(_Double, +, Double_add, 0xa7c8119f) \ V(_Double, -, Double_sub, 0x9ab51df0) \ V(_Double, *, Double_mul, 0xdc3c27ed) \ @@ -431,7 +431,7 @@ namespace dart { #define CORE_INTEGER_LIB_INTRINSIC_LIST(V) \ V(_IntegerImplementation, >, Integer_greaterThan, 0xd9c2551b) \ - V(_IntegerImplementation, ==, Integer_equal, 0xd4661e09) \ + V(_IntegerImplementation, ==, Integer_equal, 0x025d83d3) \ V(_IntegerImplementation, _equalToInteger, Integer_equalToInteger, \ 0x70f20102) \ V(_IntegerImplementation, <, Integer_lessThan, 0xd2fb73b4) \ @@ -485,8 +485,8 @@ namespace dart { V(_IntegerImplementation, +, Integer_add, 0x6ef8468c) \ V(_IntegerImplementation, -, Integer_sub, 0x6301557d) \ V(_IntegerImplementation, *, Integer_mul, 0x4670aa1a) \ - V(_IntegerImplementation, %, Integer_mod, 0x66f6edd5) \ - V(_IntegerImplementation, ~/, Integer_truncDivide, 0x70e91441) \ + V(_IntegerImplementation, %, Integer_mod, 0x708e28b9) \ + V(_IntegerImplementation, ~/, Integer_truncDivide, 0x29407b25) \ V(_IntegerImplementation, unary-, Integer_negate, 0x9140ec93) \ V(_IntegerImplementation, &, Integer_bitAnd, 0x42452d89) \ V(_IntegerImplementation, |, Integer_bitOr, 0x45efa741) \ diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h index de8da70004c..d2c07d35192 100644 --- a/runtime/vm/kernel_binary.h +++ b/runtime/vm/kernel_binary.h @@ -18,7 +18,7 @@ namespace kernel { // package:kernel/binary.md. static const uint32_t kMagicProgramFile = 0x90ABCDEFu; -static const uint32_t kSupportedKernelFormatVersion = 117; +static const uint32_t kSupportedKernelFormatVersion = 118; // Keep in sync with package:kernel/lib/binary/tag.dart #define KERNEL_TAG_LIST(V) \ @@ -233,13 +233,7 @@ enum AsExpressionFlags { kAsExpressionFlagTypeError = 1 << 0, kAsExpressionFlagCovarianceCheck = 1 << 1, kAsExpressionFlagForDynamic = 1 << 2, - kAsExpressionFlagForLegacy = 1 << 3, - kAsExpressionFlagUnchecked = 1 << 4, -}; - -// Keep in sync with package:kernel/lib/ast.dart -enum IsExpressionFlags { - kIsExpressionFlagForLegacy = 1 << 0, + kAsExpressionFlagUnchecked = 1 << 3, }; // Keep in sync with package:kernel/lib/ast.dart diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc index 5bff43a633b..52c3f1279cf 100644 --- a/runtime/vm/kernel_loader.cc +++ b/runtime/vm/kernel_loader.cc @@ -810,12 +810,6 @@ LibraryPtr KernelLoader::LoadLibrary(intptr_t index) { if (library.Loaded()) return library.ptr(); - if (!library_helper.IsNonNullableByDefault()) { - H.ReportError( - "Library '%s' was compiled without sound null safety (in weak mode) " - "and it cannot be used at runtime", - String::Handle(library.url()).ToCString()); - } const NNBDCompiledMode mode = library_helper.GetNonNullableByDefaultCompiledMode(); if (mode == NNBDCompiledMode::kInvalid) {