diff --git a/pkg/front_end/lib/src/fasta/builder/declaration.dart b/pkg/front_end/lib/src/fasta/builder/declaration.dart index fa1f97b1ae7..f68699ee9cf 100644 --- a/pkg/front_end/lib/src/fasta/builder/declaration.dart +++ b/pkg/front_end/lib/src/fasta/builder/declaration.dart @@ -4,9 +4,7 @@ library fasta.declaration; -import '../problems.dart' show unhandled, unsupported; - -import 'library_builder.dart' show LibraryBuilder; +import '../problems.dart' show unsupported; abstract class Declaration { /// Used when multiple things with the same name are declared within the same @@ -62,15 +60,6 @@ abstract class Declaration { bool get isTypeVariable => false; - Uri computeLibraryUri() { - Declaration declaration = this; - do { - if (declaration is LibraryBuilder) return declaration.uri; - declaration = declaration.parent; - } while (declaration != null); - return unhandled("no library parent", "${runtimeType}", -1, null); - } - /// Applies [patch] to this declaration. void applyPatch(Declaration patch) { unsupported("${runtimeType}.applyPatch", charOffset, fileUri); diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart index 34ab1901c29..c5291dfc85b 100644 --- a/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart @@ -890,10 +890,10 @@ class KernelLibraryBuilder if (scope.local[name] == declaration) { isLocal = true; preferred = declaration; - hiddenUri = other.computeLibraryUri(); + hiddenUri = computeLibraryUri(other); } else { - uri = declaration.computeLibraryUri(); - otherUri = other.computeLibraryUri(); + uri = computeLibraryUri(declaration); + otherUri = computeLibraryUri(other); if (declaration is LoadLibraryBuilder) { isLoadLibrary = true; preferred = declaration; @@ -1139,3 +1139,13 @@ class KernelLibraryBuilder addToExportScope(name, member); } } + +Uri computeLibraryUri(Declaration declaration) { + Declaration current = declaration; + do { + if (current is LibraryBuilder) return current.uri; + current = current.parent; + } while (current != null); + return unhandled("no library parent", "${declaration.runtimeType}", + declaration.charOffset, declaration.fileUri); +}