mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:42:11 +00:00
[cfe] Move libraryTypeParameterScopeBuilder to SourceCompilationUnit
Change-Id: Ie56319e75d276d6598c06648fadedced7d0b2c73 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/372504 Commit-Queue: Johnni Winther <johnniwinther@google.com> Reviewed-by: Jens Johansen <jensj@google.com>
This commit is contained in:
parent
3f977f0ca6
commit
874c6104fd
|
@ -118,6 +118,9 @@ abstract class SourceCompilationUnit implements CompilationUnit {
|
|||
// TODO(johnniwinther): Remove this.
|
||||
SourceLibraryBuilder get sourceLibraryBuilder;
|
||||
|
||||
// TODO(johnniwinther): Remove this.
|
||||
TypeParameterScopeBuilder get libraryTypeParameterScopeBuilder;
|
||||
|
||||
abstract OffsetMap offsetMap;
|
||||
|
||||
LibraryFeatures get libraryFeatures;
|
||||
|
|
|
@ -1144,7 +1144,8 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
// should not shadow these unresolved types.
|
||||
compilationUnit.currentTypeParameterScopeBuilder.resolveNamedTypes(
|
||||
compilationUnit.currentTypeParameterScopeBuilder.typeVariables,
|
||||
_libraryBuilder);
|
||||
_libraryBuilder,
|
||||
compilationUnit);
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -1337,7 +1338,7 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
compilationUnit
|
||||
.endNestedDeclaration(
|
||||
TypeParameterScopeKind.classDeclaration, "<syntax-error>")
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder, compilationUnit);
|
||||
} else {
|
||||
Identifier identifier = name as Identifier;
|
||||
final int startCharOffset =
|
||||
|
@ -1444,7 +1445,7 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
compilationUnit
|
||||
.endNestedDeclaration(
|
||||
TypeParameterScopeKind.mixinDeclaration, "<syntax-error>")
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder, compilationUnit);
|
||||
} else {
|
||||
Identifier identifier = name as Identifier;
|
||||
int startOffset =
|
||||
|
@ -1743,7 +1744,8 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
_
|
||||
) = _createSyntheticTypeVariables(
|
||||
compilationUnit.currentTypeParameterScopeBuilder, scopeBuilder, null);
|
||||
scopeBuilder.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
scopeBuilder.resolveNamedTypes(
|
||||
typeVariables, _libraryBuilder, compilationUnit);
|
||||
|
||||
compilationUnit.addPrimaryConstructor(
|
||||
offsetMap: _offsetMap,
|
||||
|
@ -1826,7 +1828,7 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
checkEmpty(beginToken.charOffset);
|
||||
compilationUnit
|
||||
.endNestedDeclaration(TypeParameterScopeKind.topLevelMethod, "#method")
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder, compilationUnit);
|
||||
if (identifier is Identifier) {
|
||||
final int startCharOffset =
|
||||
metadata == null ? beginToken.charOffset : metadata.first.charOffset;
|
||||
|
@ -2152,7 +2154,8 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
"Unexpected identifier $identifier (${identifier.runtimeType})");
|
||||
nativeMethodName = null;
|
||||
inConstructor = false;
|
||||
declarationBuilder.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
declarationBuilder.resolveNamedTypes(
|
||||
typeVariables, _libraryBuilder, compilationUnit);
|
||||
popDeclarationContext();
|
||||
return;
|
||||
}
|
||||
|
@ -2346,7 +2349,8 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
}
|
||||
}
|
||||
|
||||
declarationBuilder.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
declarationBuilder.resolveNamedTypes(
|
||||
typeVariables, _libraryBuilder, compilationUnit);
|
||||
if (constructorName != null) {
|
||||
if (isConst &&
|
||||
bodyKind != MethodBody.Abstract &&
|
||||
|
@ -2520,7 +2524,7 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
compilationUnit
|
||||
.endNestedDeclaration(
|
||||
TypeParameterScopeKind.namedMixinApplication, "<syntax-error>")
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder, compilationUnit);
|
||||
} else {
|
||||
Identifier identifier = name as Identifier;
|
||||
String classNameForErrors = identifier.name;
|
||||
|
@ -3100,7 +3104,7 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
compilationUnit
|
||||
.endNestedDeclaration(
|
||||
TypeParameterScopeKind.enumDeclaration, "<syntax-error>")
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder, compilationUnit);
|
||||
}
|
||||
|
||||
compilationUnit.endIndexedContainer();
|
||||
|
@ -3300,7 +3304,7 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
compilationUnit
|
||||
.endNestedDeclaration(
|
||||
TypeParameterScopeKind.typedef, "<syntax-error>")
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder, compilationUnit);
|
||||
popDeclarationContext(DeclarationContext.Typedef);
|
||||
return;
|
||||
}
|
||||
|
@ -3327,7 +3331,7 @@ class OutlineBuilder extends StackListenerImpl {
|
|||
compilationUnit
|
||||
.endNestedDeclaration(
|
||||
TypeParameterScopeKind.functionType, "<syntax-error>")
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _libraryBuilder, compilationUnit);
|
||||
popDeclarationContext(DeclarationContext.Typedef);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -125,6 +125,9 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
|
||||
SourceLibraryBuilder? _libraryBuilder;
|
||||
|
||||
@override
|
||||
final TypeParameterScopeBuilder libraryTypeParameterScopeBuilder;
|
||||
|
||||
/// Map used to find objects created in the [OutlineBuilder] from within
|
||||
/// the [DietListener].
|
||||
///
|
||||
|
@ -138,7 +141,8 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
|
||||
final List<Export> exports = <Export>[];
|
||||
|
||||
SourceCompilationUnitImpl(this._sourceLibraryBuilder);
|
||||
SourceCompilationUnitImpl(
|
||||
this._sourceLibraryBuilder, this.libraryTypeParameterScopeBuilder);
|
||||
|
||||
@override
|
||||
SourceLibraryBuilder get sourceLibraryBuilder => _sourceLibraryBuilder;
|
||||
|
@ -930,7 +934,7 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
// Nested declaration began in `OutlineBuilder.beginEnum`.
|
||||
TypeParameterScopeBuilder declaration =
|
||||
endNestedDeclaration(TypeParameterScopeKind.enumDeclaration, name)
|
||||
..resolveNamedTypes(typeVariables, _sourceLibraryBuilder);
|
||||
..resolveNamedTypes(typeVariables, _sourceLibraryBuilder, this);
|
||||
Map<String, Builder> members = declaration.members!;
|
||||
Map<String, MemberBuilder> constructors = declaration.constructors!;
|
||||
Map<String, MemberBuilder> setters = declaration.setters!;
|
||||
|
@ -1085,9 +1089,8 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
// Nested declaration began in `OutlineBuilder.beginClassDeclaration`.
|
||||
TypeParameterScopeBuilder declaration =
|
||||
endNestedDeclaration(kind, className)
|
||||
..resolveNamedTypes(typeVariables, _sourceLibraryBuilder);
|
||||
assert(declaration.parent ==
|
||||
_sourceLibraryBuilder._libraryTypeParameterScopeBuilder);
|
||||
..resolveNamedTypes(typeVariables, _sourceLibraryBuilder, this);
|
||||
assert(declaration.parent == libraryTypeParameterScopeBuilder);
|
||||
Map<String, Builder> members = declaration.members!;
|
||||
Map<String, MemberBuilder> constructors = declaration.constructors!;
|
||||
Map<String, MemberBuilder> setters = declaration.setters!;
|
||||
|
@ -1211,7 +1214,7 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
required bool isMixinClass}) {
|
||||
// Nested declaration began in `OutlineBuilder.beginNamedMixinApplication`.
|
||||
endNestedDeclaration(TypeParameterScopeKind.namedMixinApplication, name)
|
||||
.resolveNamedTypes(typeVariables, _sourceLibraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _sourceLibraryBuilder, this);
|
||||
supertype = _applyMixins(supertype, mixinApplication, startCharOffset,
|
||||
charOffset, charEndOffset, name, false,
|
||||
metadata: metadata,
|
||||
|
@ -1460,7 +1463,7 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
TypeParameterScopeKind.unnamedMixinApplication,
|
||||
"mixin application");
|
||||
mixinDeclaration.resolveNamedTypes(
|
||||
applicationTypeVariables, _sourceLibraryBuilder);
|
||||
applicationTypeVariables, _sourceLibraryBuilder, this);
|
||||
|
||||
applicationTypeArguments = <TypeBuilder>[];
|
||||
for (NominalVariableBuilder typeVariable in typeVariables) {
|
||||
|
@ -1577,9 +1580,8 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
// `OutlineBuilder.beginExtensionDeclarationPrelude`.
|
||||
TypeParameterScopeBuilder declaration =
|
||||
endNestedDeclaration(TypeParameterScopeKind.extensionDeclaration, name)
|
||||
..resolveNamedTypes(typeVariables, _sourceLibraryBuilder);
|
||||
assert(declaration.parent ==
|
||||
_sourceLibraryBuilder._libraryTypeParameterScopeBuilder);
|
||||
..resolveNamedTypes(typeVariables, _sourceLibraryBuilder, this);
|
||||
assert(declaration.parent == libraryTypeParameterScopeBuilder);
|
||||
Map<String, Builder> members = declaration.members!;
|
||||
Map<String, MemberBuilder> constructors = declaration.constructors!;
|
||||
Map<String, MemberBuilder> setters = declaration.setters!;
|
||||
|
@ -1664,9 +1666,8 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
// Nested declaration began in `OutlineBuilder.beginExtensionDeclaration`.
|
||||
TypeParameterScopeBuilder declaration = endNestedDeclaration(
|
||||
TypeParameterScopeKind.extensionTypeDeclaration, name)
|
||||
..resolveNamedTypes(typeVariables, _sourceLibraryBuilder);
|
||||
assert(declaration.parent ==
|
||||
_sourceLibraryBuilder._libraryTypeParameterScopeBuilder);
|
||||
..resolveNamedTypes(typeVariables, _sourceLibraryBuilder, this);
|
||||
assert(declaration.parent == libraryTypeParameterScopeBuilder);
|
||||
Map<String, Builder> members = declaration.members!;
|
||||
Map<String, MemberBuilder> constructors = declaration.constructors!;
|
||||
Map<String, MemberBuilder> setters = declaration.setters!;
|
||||
|
@ -1771,7 +1772,7 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
_checkTypeVariables(typeVariables, typedefBuilder);
|
||||
// Nested declaration began in `OutlineBuilder.beginFunctionTypeAlias`.
|
||||
endNestedDeclaration(TypeParameterScopeKind.typedef, "#typedef")
|
||||
.resolveNamedTypes(typeVariables, _sourceLibraryBuilder);
|
||||
.resolveNamedTypes(typeVariables, _sourceLibraryBuilder, this);
|
||||
_sourceLibraryBuilder.addBuilder(name, typedefBuilder, charOffset,
|
||||
getterReference: referenceFrom?.reference);
|
||||
}
|
||||
|
@ -2100,7 +2101,7 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
_sourceLibraryBuilder.currentTypeParameterScopeBuilder = savedDeclaration;
|
||||
|
||||
factoryDeclaration.resolveNamedTypes(
|
||||
procedureBuilder.typeVariables, _sourceLibraryBuilder);
|
||||
procedureBuilder.typeVariables, _sourceLibraryBuilder, this);
|
||||
_sourceLibraryBuilder.addBuilder(
|
||||
procedureName, procedureBuilder, charOffset,
|
||||
getterReference: constructorReference);
|
||||
|
@ -2720,15 +2721,11 @@ class SourceCompilationUnitImpl implements SourceCompilationUnit {
|
|||
}
|
||||
|
||||
class SourceLibraryBuilder extends LibraryBuilderImpl {
|
||||
late final SourceCompilationUnit compilationUnit =
|
||||
new SourceCompilationUnitImpl(this);
|
||||
late final SourceCompilationUnit compilationUnit;
|
||||
|
||||
@override
|
||||
final SourceLoader loader;
|
||||
|
||||
// TODO(johnniwinther): Move this to [SourceCompilationUnitImpl].
|
||||
final TypeParameterScopeBuilder _libraryTypeParameterScopeBuilder;
|
||||
|
||||
final List<ConstructorReferenceBuilder> constructorReferences =
|
||||
<ConstructorReferenceBuilder>[];
|
||||
|
||||
|
@ -2914,7 +2911,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
this.fileUri,
|
||||
this._packageUri,
|
||||
this.packageLanguageVersion,
|
||||
this._libraryTypeParameterScopeBuilder,
|
||||
TypeParameterScopeBuilder libraryTypeParameterScopeBuilder,
|
||||
this.importScope,
|
||||
SourceLibraryBuilder? origin,
|
||||
this.library,
|
||||
|
@ -2925,7 +2922,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
required bool isPatch,
|
||||
Map<String, Builder>? omittedTypes})
|
||||
: _languageVersion = packageLanguageVersion,
|
||||
currentTypeParameterScopeBuilder = _libraryTypeParameterScopeBuilder,
|
||||
currentTypeParameterScopeBuilder = libraryTypeParameterScopeBuilder,
|
||||
_immediateOrigin = origin,
|
||||
_omittedTypeDeclarationBuilders = omittedTypes,
|
||||
libraryName = new LibraryName(library.reference),
|
||||
|
@ -2933,7 +2930,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
isPatchLibrary = isPatch,
|
||||
super(
|
||||
fileUri,
|
||||
_libraryTypeParameterScopeBuilder.toScope(importScope,
|
||||
libraryTypeParameterScopeBuilder.toScope(importScope,
|
||||
omittedTypeDeclarationBuilders: omittedTypes),
|
||||
origin?.exportScope ?? new Scope.top(kind: ScopeKind.library)) {
|
||||
assert(
|
||||
|
@ -2946,6 +2943,8 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
!importUri.isScheme('dart') || _packageUri == null,
|
||||
"Package uri '$_packageUri' set on dart: library with import uri "
|
||||
"'${importUri}'.");
|
||||
compilationUnit =
|
||||
new SourceCompilationUnitImpl(this, libraryTypeParameterScopeBuilder);
|
||||
}
|
||||
|
||||
MergedLibraryScope get mergedScope {
|
||||
|
@ -3138,7 +3137,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
}
|
||||
|
||||
List<NamedTypeBuilder> get unresolvedNamedTypes =>
|
||||
_libraryTypeParameterScopeBuilder.unresolvedNamedTypes;
|
||||
compilationUnit.libraryTypeParameterScopeBuilder.unresolvedNamedTypes;
|
||||
|
||||
@override
|
||||
bool get isSynthetic => accessProblem != null;
|
||||
|
@ -3253,7 +3252,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
if (declaration is SourceExtensionBuilder &&
|
||||
declaration.isUnnamedExtension) {
|
||||
assert(currentTypeParameterScopeBuilder ==
|
||||
_libraryTypeParameterScopeBuilder);
|
||||
compilationUnit.libraryTypeParameterScopeBuilder);
|
||||
declaration.parent = this;
|
||||
currentTypeParameterScopeBuilder.extensions!.add(declaration);
|
||||
return declaration;
|
||||
|
@ -3264,7 +3263,8 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
if (setterReference != null) {
|
||||
loader.buildersCreatedWithReferences[setterReference] = declaration;
|
||||
}
|
||||
if (currentTypeParameterScopeBuilder == _libraryTypeParameterScopeBuilder) {
|
||||
if (currentTypeParameterScopeBuilder ==
|
||||
compilationUnit.libraryTypeParameterScopeBuilder) {
|
||||
if (declaration is MemberBuilder) {
|
||||
declaration.parent = this;
|
||||
} else if (declaration is TypeDeclarationBuilder) {
|
||||
|
@ -3277,7 +3277,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
}
|
||||
} else {
|
||||
assert(currentTypeParameterScopeBuilder.parent ==
|
||||
_libraryTypeParameterScopeBuilder);
|
||||
compilationUnit.libraryTypeParameterScopeBuilder);
|
||||
}
|
||||
bool isConstructor = declaration is FunctionBuilder &&
|
||||
(declaration.isConstructor || declaration.isFactory);
|
||||
|
@ -4689,7 +4689,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
}
|
||||
|
||||
for (Builder? declaration
|
||||
in _libraryTypeParameterScopeBuilder.members!.values) {
|
||||
in compilationUnit.libraryTypeParameterScopeBuilder.members!.values) {
|
||||
while (declaration != null) {
|
||||
if (declaration is TypeAliasBuilder &&
|
||||
declaration.typeVariablesCount > 0) {
|
||||
|
@ -5017,15 +5017,15 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
}
|
||||
|
||||
for (Builder declaration
|
||||
in _libraryTypeParameterScopeBuilder.members!.values) {
|
||||
in compilationUnit.libraryTypeParameterScopeBuilder.members!.values) {
|
||||
computeDefaultValuesForDeclaration(declaration);
|
||||
}
|
||||
for (Builder declaration
|
||||
in _libraryTypeParameterScopeBuilder.setters!.values) {
|
||||
in compilationUnit.libraryTypeParameterScopeBuilder.setters!.values) {
|
||||
computeDefaultValuesForDeclaration(declaration);
|
||||
}
|
||||
for (ExtensionBuilder declaration
|
||||
in _libraryTypeParameterScopeBuilder.extensions!) {
|
||||
in compilationUnit.libraryTypeParameterScopeBuilder.extensions!) {
|
||||
if (declaration is SourceExtensionBuilder &&
|
||||
declaration.isUnnamedExtension) {
|
||||
computeDefaultValuesForDeclaration(declaration);
|
||||
|
@ -6208,8 +6208,11 @@ class TypeParameterScopeBuilder {
|
|||
|
||||
/// Resolves type variables in [unresolvedNamedTypes] and propagate other
|
||||
/// types to [parent].
|
||||
void resolveNamedTypes(List<NominalVariableBuilder>? typeVariables,
|
||||
SourceLibraryBuilder library) {
|
||||
void resolveNamedTypes(
|
||||
List<NominalVariableBuilder>? typeVariables,
|
||||
// TODO(johnniwinther): Remove [library]:
|
||||
SourceLibraryBuilder library,
|
||||
SourceCompilationUnit compilationUnit) {
|
||||
Map<String, NominalVariableBuilder>? map;
|
||||
if (typeVariables != null) {
|
||||
map = <String, NominalVariableBuilder>{};
|
||||
|
@ -6240,7 +6243,7 @@ class TypeParameterScopeBuilder {
|
|||
int nameLength = typeName.fullNameLength;
|
||||
Message message = templateNotAPrefixInTypeAnnotation.withArguments(
|
||||
qualifier, typeName.name);
|
||||
library.addProblem(
|
||||
compilationUnit.addProblem(
|
||||
message, nameOffset, nameLength, namedTypeBuilder.fileUri!);
|
||||
namedTypeBuilder.bind(
|
||||
library,
|
||||
|
|
Loading…
Reference in a new issue