Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Unified Diff: pkg/kernel/lib/analyzer/loader.dart

Issue 2665723002: Implement canonical name scheme in kernel. (Closed)
Patch Set: Address comments Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/kernel/lib/analyzer/loader.dart
diff --git a/pkg/kernel/lib/analyzer/loader.dart b/pkg/kernel/lib/analyzer/loader.dart
index d3743af2cf6ff6a73f5252b2571e89953c42d8eb..82fc133786b8426fa543447819c36ff9c57794f6 100644
--- a/pkg/kernel/lib/analyzer/loader.dart
+++ b/pkg/kernel/lib/analyzer/loader.dart
@@ -22,7 +22,6 @@ import 'package:package_config/discovery.dart';
import 'package:package_config/packages.dart';
import '../ast.dart' as ast;
-import '../repository.dart';
import '../target/targets.dart' show Target;
import '../type_algebra.dart';
import 'analyzer.dart';
@@ -85,7 +84,7 @@ abstract class ReferenceLevelLoader {
}
class DartLoader implements ReferenceLevelLoader {
- final Repository repository;
+ final ast.Program program;
final ApplicationRoot applicationRoot;
final Bimap<ClassElement, ast.Class> _classes =
new Bimap<ClassElement, ast.Class>();
@@ -107,10 +106,9 @@ class DartLoader implements ReferenceLevelLoader {
bool get strongMode => context.analysisOptions.strongMode;
- DartLoader(this.repository, DartOptions options, Packages packages,
+ DartLoader(this.program, DartOptions options, Packages packages,
{DartSdk dartSdk, AnalysisContext context})
- : this.context =
- context ?? createContext(options, packages, dartSdk: dartSdk),
+ : this.context = context ?? createContext(options, packages, dartSdk: dartSdk),
this.applicationRoot = options.applicationRoot;
String getLibraryName(LibraryElement element) {
@@ -119,7 +117,7 @@ class DartLoader implements ReferenceLevelLoader {
ast.Library getLibraryReference(LibraryElement element) {
var uri = applicationRoot.relativeUri(element.source.uri);
- return repository.getLibraryReference(uri)
+ return program.getLibraryReference(uri)
..name ??= getLibraryName(element)
..fileUri = '${element.source.uri}';
}
@@ -339,9 +337,9 @@ class DartLoader implements ReferenceLevelLoader {
mixedInType: freshParameters.substituteSuper(mixinType),
fileUri: classNode.fileUri)..fileOffset = element.nameOffset;
mixinClass.level = ast.ClassLevel.Type;
+ addMixinClassToLibrary(mixinClass, classNode.enclosingLibrary);
supertype = new ast.Supertype(mixinClass,
classNode.typeParameters.map(makeTypeParameterType).toList());
- addMixinClassToLibrary(mixinClass, classNode.enclosingLibrary);
// This class cannot be used from anywhere else, so don't try to
// generate shared mixin applications using it.
useSharedMixin = false;
@@ -409,25 +407,27 @@ class DartLoader implements ReferenceLevelLoader {
ast.Member _buildMemberReference(Element element) {
assert(element != null);
- var node = _buildOrphanedMemberReference(element);
+ var member = _buildOrphanedMemberReference(element);
// Set the parent pointer and store it in the enclosing class or library.
// If the enclosing library is being built from the AST, do not add the
// member, since the AST builder will put it in there.
var parent = element.enclosingElement;
if (parent is ClassElement) {
var class_ = getClassReference(parent);
- node.parent = class_;
+ member.parent = class_;
if (!isLibraryBeingLoaded(element.library)) {
- class_.addMember(node);
+ class_.addMember(member);
}
+ class_.canonicalName.getChildFromMember(member).bindTo(member);
} else {
var library = getLibraryReference(element.library);
- node.parent = library;
+ member.parent = library;
if (!isLibraryBeingLoaded(element.library)) {
- library.addMember(node);
+ library.addMember(member);
}
+ library.canonicalName.getChildFromMember(member).bindTo(member);
}
- return node;
+ return member;
}
ast.Member _buildOrphanedMemberReference(Element element) {
@@ -658,8 +658,8 @@ class DartLoader implements ReferenceLevelLoader {
}
}
}
- for (int i = 0; i < repository.libraries.length; ++i) {
- var library = repository.libraries[i];
+ for (int i = 0; i < program.libraries.length; ++i) {
+ var library = program.libraries[i];
if (compileSdk || library.importUri.scheme != 'dart') {
ensureLibraryIsLoaded(library);
}
@@ -671,7 +671,7 @@ class DartLoader implements ReferenceLevelLoader {
/// This operation may be expensive and should only be used for diagnostics.
List<String> getLoadedFileNames() {
var list = <String>[];
- for (var library in repository.libraries) {
+ for (var library in program.libraries) {
LibraryElement element = context.computeLibraryElement(context
.sourceFactory
.forUri2(applicationRoot.absoluteUri(library.importUri)));
@@ -716,11 +716,10 @@ class DartLoader implements ReferenceLevelLoader {
ast.Program loadProgram(Uri mainLibrary, {Target target, bool compileSdk}) {
Uri uri = applicationRoot.relativeUri(mainLibrary);
- ast.Library library = repository.getLibraryReference(uri);
+ ast.Library library = program.getLibraryReference(uri);
ensureLibraryIsLoaded(library);
var mainMethod = _getMainMethod(mainLibrary);
loadEverything(target: target, compileSdk: compileSdk);
- var program = new ast.Program(repository.libraries);
if (mainMethod == null) {
mainMethod = _makeMissingMainMethod(library);
}
@@ -746,7 +745,7 @@ class DartLoader implements ReferenceLevelLoader {
ast.Library loadLibrary(Uri uri) {
ast.Library library =
- repository.getLibraryReference(applicationRoot.relativeUri(uri));
+ program.getLibraryReference(applicationRoot.relativeUri(uri));
ensureLibraryIsLoaded(library);
return library;
}
@@ -777,7 +776,7 @@ class DartLoaderBatch {
String lastPackagePath;
bool lastStrongMode;
- Future<DartLoader> getLoader(Repository repository, DartOptions options,
+ Future<DartLoader> getLoader(ast.Program program, DartOptions options,
{String packageDiscoveryPath}) async {
if (dartSdk == null ||
lastSdk != options.sdk ||
@@ -793,7 +792,7 @@ class DartLoaderBatch {
packages = await createPackages(options.packagePath,
discoveryPath: packageDiscoveryPath);
}
- return new DartLoader(repository, options, packages, dartSdk: dartSdk);
+ return new DartLoader(program, options, packages, dartSdk: dartSdk);
}
}

Powered by Google App Engine
This is Rietveld 408576698