1
0
mirror of https://github.com/dart-lang/sdk synced 2024-07-08 20:16:39 +00:00

[cfe] Remove LibraryBuilder.nullableBuilder et al.

Change-Id: I36b2a8c25568d4df90a6a1b039d15519d244be96
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/371123
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
Johnni Winther 2024-06-14 10:10:20 +00:00 committed by Commit Queue
parent b807dbd0cd
commit 289bba506e
18 changed files with 103 additions and 138 deletions

View File

@ -49,7 +49,7 @@ mixin DeclarationBuilderMixin implements IDeclarationBuilder {
{required bool hasExplicitTypeArguments}) {
return buildAliasedTypeWithBuiltArguments(
library,
nullabilityBuilder.build(library),
nullabilityBuilder.build(),
buildAliasedTypeArguments(library, arguments, hierarchy),
typeUse,
fileUri,

View File

@ -26,7 +26,7 @@ abstract class BuiltinTypeDeclarationBuilder extends TypeDeclarationBuilderImpl
int charOffset,
ClassHierarchyBase? hierarchy,
{required bool hasExplicitTypeArguments}) {
return type.withDeclaredNullability(nullabilityBuilder.build(library));
return type.withDeclaredNullability(nullabilityBuilder.build());
}
@override

View File

@ -379,7 +379,7 @@ abstract class ClassBuilderImpl extends DeclarationBuilderImpl
}
return buildAliasedTypeWithBuiltArguments(
library,
nullabilityBuilder.build(library),
nullabilityBuilder.build(),
buildAliasedTypeArguments(library, arguments, hierarchy),
typeUse,
fileUri,

View File

@ -175,8 +175,8 @@ abstract class FunctionTypeBuilderImpl extends FunctionTypeBuilder {
t.bound?.build(library, TypeUse.typeParameterBound);
}
}
return new FunctionType(positionalParameters, builtReturnType,
nullabilityBuilder.build(library),
return new FunctionType(
positionalParameters, builtReturnType, nullabilityBuilder.build(),
namedParameters: namedParameters ?? const <NamedType>[],
typeParameters: typeParameters ?? const <StructuralParameter>[],
requiredParameterCount: requiredParameterCount);

View File

@ -33,7 +33,7 @@ class FutureOrTypeDeclarationBuilder extends BuiltinTypeDeclarationBuilder {
return new FutureOrType(
arguments!.single
.buildAliased(library, TypeUse.typeArgument, hierarchy),
nullabilityBuilder.build(library));
nullabilityBuilder.build());
}
@override

View File

@ -5,17 +5,11 @@
library fasta.library_builder;
import 'package:_fe_analyzer_shared/src/messages/severity.dart' show Severity;
import 'package:kernel/ast.dart' show Class, Library, Nullability;
import 'package:kernel/ast.dart' show Class, Library;
import '../combinator.dart' show CombinatorBuilder;
import '../problems.dart' show internalProblem;
import '../export.dart' show Export;
import '../loader.dart' show Loader;
import '../messages.dart'
show
FormattedMessage,
@ -24,9 +18,8 @@ import '../messages.dart'
templateInternalProblemConstructorNotFound,
templateInternalProblemNotFoundIn,
templateInternalProblemPrivateConstructorAccess;
import '../problems.dart' show internalProblem;
import '../scope.dart';
import '../source/name_scheme.dart';
import '../source/offset_map.dart';
import '../source/source_class_builder.dart';
@ -39,7 +32,6 @@ import 'inferable_type_builder.dart';
import 'member_builder.dart';
import 'modifier_builder.dart';
import 'name_iterator.dart';
import 'nullability_builder.dart';
import 'prefix_builder.dart';
import 'type_builder.dart';
@ -268,17 +260,6 @@ abstract class LibraryBuilder implements Builder {
void recordAccess(
CompilationUnit accessor, int charOffset, int length, Uri fileUri);
Nullability get nullable;
Nullability nullableIfTrue(bool isNullable);
NullabilityBuilder get nullableBuilder;
NullabilityBuilder get nonNullableBuilder;
/// Unused in interface; left in on purpose.
NullabilityBuilder nullableBuilderIfTrue(bool isNullable);
/// Returns `true` if [cls] is the 'Function' class defined in [coreLibrary].
static bool isFunction(Class cls, LibraryBuilder coreLibrary) {
return cls.name == 'Function' && _isCoreClass(cls, coreLibrary);
@ -474,33 +455,6 @@ abstract class LibraryBuilderImpl extends ModifierBuilderImpl
void recordAccess(
CompilationUnit accessor, int charOffset, int length, Uri fileUri) {}
@override
Nullability get nullable {
return Nullability.nullable;
}
@override
Nullability nullableIfTrue(bool isNullable) {
return isNullable ? Nullability.nullable : Nullability.nonNullable;
}
@override
NullabilityBuilder get nullableBuilder {
return const NullabilityBuilder.nullable();
}
@override
NullabilityBuilder get nonNullableBuilder {
return const NullabilityBuilder.omitted();
}
@override
NullabilityBuilder nullableBuilderIfTrue(bool isNullable) {
return isNullable
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted();
}
@override
StringBuffer printOn(StringBuffer buffer) {
return buffer..write(isPart || isAugmenting ? fileUri : importUri);

View File

@ -34,7 +34,7 @@ class NeverTypeDeclarationBuilder extends BuiltinTypeDeclarationBuilder {
int charOffset,
ClassHierarchyBase? hierarchy,
{required bool hasExplicitTypeArguments}) {
return type.withDeclaredNullability(nullabilityBuilder.build(library));
return type.withDeclaredNullability(nullabilityBuilder.build());
}
@override

View File

@ -4,8 +4,6 @@
import 'package:kernel/ast.dart';
import 'library_builder.dart';
/// Represents the nullability modifiers encountered while parsing the types.
///
/// The syntactic nullability needs to be interpreted, that is, built, into the
@ -48,7 +46,7 @@ class NullabilityBuilder {
}
}
Nullability build(LibraryBuilder libraryBuilder) {
Nullability build() {
switch (_syntacticNullability) {
case SyntacticNullability.nullable:
return Nullability.nullable;

View File

@ -256,8 +256,8 @@ abstract class RecordTypeBuilderImpl extends RecordTypeBuilder {
// TODO(johnniwinther): Should we create an [InvalidType] if there is <= 1
// entries?
return new RecordType(positionalEntries, namedEntries ?? [],
nullabilityBuilder.build(library));
return new RecordType(
positionalEntries, namedEntries ?? [], nullabilityBuilder.build());
}
@override

View File

@ -182,7 +182,7 @@ abstract class TypeAliasBuilderImpl extends TypeDeclarationBuilderImpl
DartType thisType = buildThisType();
if (thisType is InvalidType) return thisType;
Nullability nullability = nullabilityBuilder.build(library);
Nullability nullability = nullabilityBuilder.build();
return buildAliasedTypeWithBuiltArguments(
library,
nullability,
@ -373,7 +373,7 @@ abstract class TypeAliasBuilderImpl extends TypeDeclarationBuilderImpl
if (typeVariables != null)
for (NominalVariableBuilder typeVariable in typeVariables!)
new NamedTypeBuilderImpl.fromTypeDeclarationBuilder(
typeVariable, libraryBuilder.nonNullableBuilder,
typeVariable, const NullabilityBuilder.omitted(),
arguments: const [],
fileUri: fileUri,
charOffset: charOffset,

View File

@ -366,7 +366,7 @@ class NominalVariableBuilder extends TypeVariableBuilderBase {
nullability = nullabilityFromParameterBound;
}
} else {
nullability = nullabilityBuilder.build(library);
nullability = nullabilityBuilder.build();
}
TypeParameterType type = buildAliasedTypeWithBuiltArguments(
library, nullability, null, typeUse, fileUri, charOffset,
@ -403,7 +403,7 @@ class NominalVariableBuilder extends TypeVariableBuilderBase {
if (isAugmenting) return;
DartType objectType = object.buildAliasedType(
library,
library.nullableBuilder,
const NullabilityBuilder.nullable(),
/* arguments = */ null,
TypeUse.typeParameterBound,
fileUri ?? missingUri,
@ -705,7 +705,7 @@ class StructuralVariableBuilder extends TypeVariableBuilderBase {
StructuralParameterType.computeNullabilityFromBound(parameter);
}
} else {
nullability = nullabilityBuilder.build(library);
nullability = nullabilityBuilder.build();
}
StructuralParameterType type = buildAliasedTypeWithBuiltArguments(
library, nullability, null, typeUse, fileUri, charOffset,
@ -753,7 +753,7 @@ class StructuralVariableBuilder extends TypeVariableBuilderBase {
if (isAugmenting) return;
DartType objectType = object.buildAliasedType(
library,
library.nullableBuilder,
const NullabilityBuilder.nullable(),
/* arguments = */ null,
TypeUse.typeParameterBound,
fileUri ?? missingUri,

View File

@ -5052,7 +5052,9 @@ class BodyBuilder extends StackListenerImpl
if (prefix is ParserErrorGenerator) {
// An error have already been issued.
push(prefix.buildTypeWithResolvedArgumentsDoNotAddProblem(
libraryBuilder.nullableBuilderIfTrue(isMarkedAsNullable)));
isMarkedAsNullable
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted()));
return;
} else if (prefix is Generator) {
name = prefix.qualifiedLookup(suffix);
@ -5065,7 +5067,9 @@ class BodyBuilder extends StackListenerImpl
message, offset, lengthOfSpan(beginToken, suffix), uri);
push(new NamedTypeBuilderImpl.forInvalidType(
name,
libraryBuilder.nullableBuilderIfTrue(isMarkedAsNullable),
isMarkedAsNullable
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
message.withLocation(
uri, offset, lengthOfSpan(beginToken, suffix))));
return;
@ -5080,7 +5084,10 @@ class BodyBuilder extends StackListenerImpl
allowPotentiallyConstantType = inIsOrAsOperatorType;
}
result = name.buildTypeWithResolvedArguments(
libraryBuilder.nullableBuilderIfTrue(isMarkedAsNullable), arguments,
isMarkedAsNullable
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
arguments,
allowPotentiallyConstantType: allowPotentiallyConstantType,
performTypeCanonicalization: constantContext != ConstantContext.none);
} else if (name is ProblemBuilder) {
@ -5089,7 +5096,9 @@ class BodyBuilder extends StackListenerImpl
name.message, name.charOffset, name.name.length, name.fileUri);
result = new NamedTypeBuilderImpl.forInvalidType(
name.name,
libraryBuilder.nullableBuilderIfTrue(isMarkedAsNullable),
isMarkedAsNullable
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
name.message
.withLocation(name.fileUri, name.charOffset, name.name.length));
} else {
@ -5178,8 +5187,8 @@ class BodyBuilder extends StackListenerImpl
positionalFields,
namedFields,
questionMark != null
? libraryBuilder.nullableBuilder
: libraryBuilder.nonNullableBuilder,
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
uri,
leftBracket.charOffset,
));
@ -5235,7 +5244,9 @@ class BodyBuilder extends StackListenerImpl
pop() as List<StructuralVariableBuilder>?;
TypeBuilder type = formals.toFunctionType(
returnType ?? const ImplicitTypeBuilder(),
libraryBuilder.nullableBuilderIfTrue(questionMark != null),
questionMark != null
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
structuralVariableBuilders: typeVariables,
hasFunctionFormalParameterSyntax: false);
exitLocalScope();
@ -5547,7 +5558,9 @@ class BodyBuilder extends StackListenerImpl
pop() as List<StructuralVariableBuilder>?;
TypeBuilder type = formals.toFunctionType(
returnType ?? const ImplicitTypeBuilder(),
libraryBuilder.nullableBuilderIfTrue(question != null),
question != null
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
structuralVariableBuilders: typeVariables,
hasFunctionFormalParameterSyntax: true);
exitLocalScope();
@ -9297,7 +9310,7 @@ class BodyBuilder extends StackListenerImpl
expression = new Let(
new VariableDeclaration.forValue(argument,
isFinal: true,
type: coreTypes.objectRawType(libraryBuilder.nullable)),
type: coreTypes.objectRawType(Nullability.nullable)),
expression);
}
return expression;

View File

@ -3064,7 +3064,7 @@ class TypeUseGenerator extends AbstractReadOnlyAccessGenerator {
offsetForToken(token),
_helper.buildDartType(
buildTypeWithResolvedArguments(
_helper.libraryBuilder.nonNullableBuilder, typeArguments,
const NullabilityBuilder.omitted(), typeArguments,
allowPotentiallyConstantType: true,
performTypeCanonicalization: true),
TypeUse.typeLiteral,

View File

@ -118,7 +118,7 @@ class TypeBuilderIdentifier extends IdentifierImpl {
NullabilityBuilder nullabilityBuilder, List<DartType> typeArguments) {
return typeBuilder.declaration!.buildAliasedTypeWithBuiltArguments(
libraryBuilder,
nullabilityBuilder.build(libraryBuilder),
nullabilityBuilder.build(),
typeArguments,
TypeUse.macroTypeArgument,
// TODO(johnniwinther): How should handle malbounded types here? Should
@ -180,7 +180,7 @@ class TypeDeclarationBuilderIdentifier extends IdentifierImpl {
NullabilityBuilder nullabilityBuilder, List<DartType> typeArguments) {
return typeDeclarationBuilder.buildAliasedTypeWithBuiltArguments(
libraryBuilder,
nullabilityBuilder.build(libraryBuilder),
nullabilityBuilder.build(),
// TODO(johnniwinther): How should handle malbounded types here? Should
// we report an error on the annotation?
typeArguments,

View File

@ -1327,8 +1327,7 @@ class OutlineBuilder extends StackListenerImpl {
String classNameForErrors = identifier.name;
if (supertype != null) {
if (supertype.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (supertype.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableSuperclassError
.withArguments(supertype.fullNameForErrors),
@ -1340,8 +1339,7 @@ class OutlineBuilder extends StackListenerImpl {
if (mixinApplication != null) {
List<TypeBuilder>? mixins = mixinApplication.mixins;
for (TypeBuilder mixin in mixins) {
if (mixin.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (mixin.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableMixinError
.withArguments(mixin.fullNameForErrors),
@ -1353,8 +1351,7 @@ class OutlineBuilder extends StackListenerImpl {
}
if (interfaces != null) {
for (TypeBuilder interface in interfaces) {
if (interface.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (interface.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableInterfaceError
.withArguments(interface.fullNameForErrors),
@ -1437,8 +1434,7 @@ class OutlineBuilder extends StackListenerImpl {
String classNameForErrors = identifier.name;
if (supertypeConstraints != null) {
for (TypeBuilder supertype in supertypeConstraints) {
if (supertype.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (supertype.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableSuperclassError
.withArguments(supertype.fullNameForErrors),
@ -1450,8 +1446,7 @@ class OutlineBuilder extends StackListenerImpl {
}
if (interfaces != null) {
for (TypeBuilder interface in interfaces) {
if (interface.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (interface.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableInterfaceError
.withArguments(interface.fullNameForErrors),
@ -2515,8 +2510,7 @@ class OutlineBuilder extends StackListenerImpl {
mixinApplication as MixinApplicationBuilder;
List<TypeBuilder> mixins = mixinApplicationBuilder.mixins;
if (supertype is TypeBuilder && supertype is! MixinApplicationBuilder) {
if (supertype.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (supertype.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableSuperclassError
.withArguments(supertype.fullNameForErrors),
@ -2526,8 +2520,7 @@ class OutlineBuilder extends StackListenerImpl {
}
}
for (TypeBuilder mixin in mixins) {
if (mixin.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (mixin.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableMixinError.withArguments(mixin.fullNameForErrors),
identifier.nameOffset,
@ -2537,8 +2530,7 @@ class OutlineBuilder extends StackListenerImpl {
}
if (interfaces != null) {
for (TypeBuilder interface in interfaces) {
if (interface.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (interface.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableInterfaceError
.withArguments(interface.fullNameForErrors),
@ -2622,7 +2614,9 @@ class OutlineBuilder extends StackListenerImpl {
Identifier identifier = name as Identifier;
push(libraryBuilder.addNamedType(
identifier.typeName,
libraryBuilder.nullableBuilderIfTrue(isMarkedAsNullable),
isMarkedAsNullable
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
arguments,
identifier.qualifierOffset,
instanceTypeVariableAccess:
@ -3059,8 +3053,7 @@ class OutlineBuilder extends StackListenerImpl {
}
if (interfaces != null) {
for (TypeBuilder interface in interfaces) {
if (interface.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (interface.nullabilityBuilder.build() == Nullability.nullable) {
libraryBuilder.addProblem(
templateNullableInterfaceError
.withArguments(interface.fullNameForErrors),
@ -3150,8 +3143,8 @@ class OutlineBuilder extends StackListenerImpl {
positionalFields,
namedFields,
questionMark != null
? libraryBuilder.nullableBuilder
: libraryBuilder.nonNullableBuilder,
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
uri,
leftBracket.charOffset,
));
@ -3208,7 +3201,9 @@ class OutlineBuilder extends StackListenerImpl {
returnType ?? const ImplicitTypeBuilder(),
typeVariables,
formals,
libraryBuilder.nullableBuilderIfTrue(questionMark != null),
questionMark != null
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
uri,
functionToken.charOffset,
hasFunctionFormalParameterSyntax: false));
@ -3227,7 +3222,9 @@ class OutlineBuilder extends StackListenerImpl {
returnType ?? const ImplicitTypeBuilder(),
typeVariables,
formals,
libraryBuilder.nullableBuilderIfTrue(question != null),
question != null
? const NullabilityBuilder.nullable()
: const NullabilityBuilder.omitted(),
uri,
formalsOffset,
hasFunctionFormalParameterSyntax: true));
@ -3311,8 +3308,7 @@ class OutlineBuilder extends StackListenerImpl {
identifier = name as Identifier;
if (type is FunctionTypeBuilder &&
!libraryFeatures.nonfunctionTypeAliases.isEnabled) {
if (type.nullabilityBuilder.build(libraryBuilder) ==
Nullability.nullable) {
if (type.nullabilityBuilder.build() == Nullability.nullable) {
// The error is reported when the non-nullable experiment is enabled.
// Otherwise, the attempt to use a nullable type will be reported
// elsewhere.

View File

@ -2194,7 +2194,9 @@ class InferenceVisitorImpl extends InferenceVisitorBase
element.expression,
new InterfaceType(
coreTypes.iterableClass,
libraryBuilder.nullableIfTrue(element.isNullAware),
element.isNullAware
? Nullability.nullable
: Nullability.nonNullable,
<DartType>[inferredTypeArgument]),
isVoidAllowed: true);
element.expression = spreadResult.expression..parent = element;
@ -2601,8 +2603,9 @@ class InferenceVisitorImpl extends InferenceVisitorBase
DartType? spreadType = inferredSpreadTypes[item.expression];
if (spreadType is DynamicType) {
Expression expression = ensureAssignable(
coreTypes.iterableRawType(
libraryBuilder.nullableIfTrue(item.isNullAware)),
coreTypes.iterableRawType(item.isNullAware
? Nullability.nullable
: Nullability.nonNullable),
spreadType,
item.expression);
item.expression = expression..parent = item;
@ -3032,7 +3035,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
temp = _createVariable(
value,
typeSchemaEnvironment.iterableType(
elementType, libraryBuilder.nullable));
elementType, Nullability.nullable));
body.add(temp);
value = _createNullCheckedVariableGet(temp);
}
@ -3059,7 +3062,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
temp = _createVariable(
value,
typeSchemaEnvironment.iterableType(
const DynamicType(), libraryBuilder.nullable));
const DynamicType(), Nullability.nullable));
body.add(temp);
value = _createNullCheckedVariableGet(temp);
}
@ -3382,7 +3385,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
temp = _createVariable(
value,
typeSchemaEnvironment.mapType(
keyType, valueType, libraryBuilder.nullable));
keyType, valueType, Nullability.nullable));
body.add(temp);
value = _createNullCheckedVariableGet(temp);
}
@ -3408,7 +3411,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
temp = _createVariable(
value,
typeSchemaEnvironment.mapType(const DynamicType(),
const DynamicType(), libraryBuilder.nullable));
const DynamicType(), Nullability.nullable));
body.add(temp);
value = _createNullCheckedVariableGet(temp);
}
@ -3510,7 +3513,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
VariableDeclaration temp = _createVariable(
spreadExpression,
typeSchemaEnvironment.iterableType(
elementType, libraryBuilder.nullable));
elementType, Nullability.nullable));
parts.add(_createNullAwareGuard(element.fileOffset, temp,
makeLiteral(element.fileOffset, []), iterableType));
} else {
@ -3584,7 +3587,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
Expression spreadExpression = entry.expression;
if (entry.isNullAware) {
VariableDeclaration temp = _createVariable(spreadExpression,
collectionType.withDeclaredNullability(libraryBuilder.nullable));
collectionType.withDeclaredNullability(Nullability.nullable));
parts.add(_createNullAwareGuard(entry.fileOffset, temp,
makeLiteral(entry.fileOffset, []), collectionType));
} else {
@ -4045,11 +4048,11 @@ class InferenceVisitorImpl extends InferenceVisitorBase
bool isMap = typeSchemaEnvironment.isSubtypeOf(
spreadType,
coreTypes.mapRawType(libraryBuilder.nullable),
coreTypes.mapRawType(Nullability.nullable),
SubtypeCheckMode.withNullabilities);
bool isIterable = typeSchemaEnvironment.isSubtypeOf(
spreadType,
coreTypes.iterableRawType(libraryBuilder.nullable),
coreTypes.iterableRawType(Nullability.nullable),
SubtypeCheckMode.withNullabilities);
if (isMap && !isIterable) {
offsets.mapSpreadOffset = entry.fileOffset;
@ -4530,8 +4533,9 @@ class InferenceVisitorImpl extends InferenceVisitorBase
DartType? spreadType = inferredSpreadTypes[entry.expression];
if (spreadType is DynamicType) {
Expression expression = ensureAssignable(
coreTypes
.mapRawType(libraryBuilder.nullableIfTrue(entry.isNullAware)),
coreTypes.mapRawType(entry.isNullAware
? Nullability.nullable
: Nullability.nonNullable),
spreadType,
entry.expression);
entry.expression = expression..parent = entry;
@ -6072,7 +6076,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
DartType rightType =
operations.getNullableType(equalsTarget.getBinaryOperandType(this));
DartType contextType =
rightType.withDeclaredNullability(libraryBuilder.nullable);
rightType.withDeclaredNullability(Nullability.nullable);
rightResult = ensureAssignableResult(contextType, rightResult,
errorTemplate: templateArgumentTypeNotAssignable,
nullabilityErrorTemplate: templateArgumentTypeNotAssignableNullability,
@ -8986,7 +8990,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
CheckLibraryIsLoaded node, DartType typeContext) {
// TODO(cstefantsova): Figure out the suitable nullability for that.
return new ExpressionInferenceResult(
coreTypes.objectRawType(libraryBuilder.nullable), node);
coreTypes.objectRawType(Nullability.nullable), node);
}
ExpressionInferenceResult visitEquals(

View File

@ -2097,7 +2097,7 @@ abstract class InferenceVisitorBase implements InferenceVisitor {
formalTypesFromContext[i]!);
if (typeSchemaEnvironment.isSubtypeOf(inferredType, const NullType(),
SubtypeCheckMode.withNullabilities)) {
inferredType = coreTypes.objectRawType(libraryBuilder.nullable);
inferredType = coreTypes.objectRawType(Nullability.nullable);
}
} else {
inferredType = const DynamicType();
@ -3381,7 +3381,7 @@ abstract class InferenceVisitorBase implements InferenceVisitor {
// operator == always allows nullable arguments.
functionType = new FunctionType([
functionType.positionalParameters.single
.withDeclaredNullability(libraryBuilder.nullable)
.withDeclaredNullability(Nullability.nullable)
], functionType.returnType, functionType.declaredNullability);
}
InvocationInferenceResult result = inferInvocation(

View File

@ -185,9 +185,9 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
hitCount: 17,
missCount: 3,
),
// 80.85106382978722%.
// 79.7752808988764%.
"package:front_end/src/fasta/builder/library_builder.dart": (
hitCount: 76,
hitCount: 71,
missCount: 18,
),
// 97.38562091503267%.
@ -250,9 +250,9 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
hitCount: 151,
missCount: 44,
),
// 78.99159663865547%.
// 78.8135593220339%.
"package:front_end/src/fasta/builder/type_alias_builder.dart": (
hitCount: 188,
hitCount: 186,
missCount: 50,
),
// 77.77777777777779%.
@ -265,9 +265,9 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
hitCount: 9,
missCount: 1,
),
// 78.42227378190255%.
// 78.32167832167832%.
"package:front_end/src/fasta/builder/type_variable_builder.dart": (
hitCount: 338,
hitCount: 336,
missCount: 93,
),
// 100.0%.
@ -421,9 +421,9 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
hitCount: 0,
missCount: 128,
),
// 91.26941617568292%.
// 91.24832214765101%.
"package:front_end/src/fasta/kernel/body_builder.dart": (
hitCount: 6816,
hitCount: 6798,
missCount: 652,
),
// 70.40816326530613%.
@ -471,9 +471,9 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
hitCount: 478,
missCount: 163,
),
// 79.56411876184461%.
// 79.54473601011698%.
"package:front_end/src/fasta/kernel/expression_generator.dart": (
hitCount: 2519,
hitCount: 2516,
missCount: 647,
),
// 100.0%.
@ -589,7 +589,7 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
// 0.0%.
"package:front_end/src/fasta/kernel/macro/identifiers.dart": (
hitCount: 0,
missCount: 134,
missCount: 132,
),
// 0.0%.
"package:front_end/src/fasta/kernel/macro/introspectors.dart": (
@ -706,9 +706,9 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
hitCount: 118,
missCount: 6,
),
// 91.45299145299145%.
// 91.38284776364382%.
"package:front_end/src/fasta/source/outline_builder.dart": (
hitCount: 2247,
hitCount: 2227,
missCount: 210,
),
// 94.44444444444444%.
@ -827,14 +827,14 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
hitCount: 166,
missCount: 29,
),
// 90.25658807212206%.
// 90.25040575005796%.
"package:front_end/src/fasta/type_inference/inference_visitor.dart": (
hitCount: 7809,
missCount: 843,
hitCount: 7785,
missCount: 841,
),
// 84.56303724928367%.
// 84.54088952654233%.
"package:front_end/src/fasta/type_inference/inference_visitor_base.dart": (
hitCount: 2361,
hitCount: 2357,
missCount: 431,
),
// 80.26509572901325%.