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:
parent
b807dbd0cd
commit
289bba506e
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -379,7 +379,7 @@ abstract class ClassBuilderImpl extends DeclarationBuilderImpl
|
|||
}
|
||||
return buildAliasedTypeWithBuiltArguments(
|
||||
library,
|
||||
nullabilityBuilder.build(library),
|
||||
nullabilityBuilder.build(),
|
||||
buildAliasedTypeArguments(library, arguments, hierarchy),
|
||||
typeUse,
|
||||
fileUri,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -33,7 +33,7 @@ class FutureOrTypeDeclarationBuilder extends BuiltinTypeDeclarationBuilder {
|
|||
return new FutureOrType(
|
||||
arguments!.single
|
||||
.buildAliased(library, TypeUse.typeArgument, hierarchy),
|
||||
nullabilityBuilder.build(library));
|
||||
nullabilityBuilder.build());
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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%.
|
||||
|
|
Loading…
Reference in New Issue
Block a user