Change link methods to take a DeclaredVariables object.
Change-Id: I6cc36f9152fb90642ec3261418e60ac3bdbe5acf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96922
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index 5b85508..9c82bd8 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -173,7 +173,7 @@
}, (String uri) {
UnlinkedUnit unlinkedUnit = store.unlinkedMap[uri];
return unlinkedUnit;
- }, (_) => null, analysisContext.analysisOptions);
+ }, DeclaredVariables(), analysisContext.analysisOptions);
logger.writeln('Linked ${linkedLibraries.length} libraries.');
});
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart
index c7e24ab..d38b602 100644
--- a/pkg/analyzer/lib/src/summary/link.dart
+++ b/pkg/analyzer/lib/src/summary/link.dart
@@ -55,6 +55,7 @@
///
/// - Where possible, we favor method dispatch instead of "is" and "as"
/// checks. E.g. see [ReferenceableElementForLink.asConstructor].
+import 'package:analyzer/dart/analysis/declared_variables.dart';
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/standard_ast_factory.dart';
@@ -114,11 +115,11 @@
Set<String> libraryUris,
GetDependencyCallback getDependency,
GetUnitCallback getUnit,
- GetDeclaredVariable getDeclaredVariable,
+ DeclaredVariables declaredVariables,
AnalysisOptions analysisOptions,
[GetAstCallback getAst]) {
Map<String, LinkedLibraryBuilder> linkedLibraries =
- setupForLink(libraryUris, getUnit, getDeclaredVariable);
+ setupForLink(libraryUris, getUnit, declaredVariables);
_relink(linkedLibraries, getDependency, getUnit, getAst, analysisOptions);
return linkedLibraries;
}
@@ -131,7 +132,7 @@
/// of the libraries in this build unit, and whose values are the corresponding
/// [LinkedLibraryBuilder]s.
Map<String, LinkedLibraryBuilder> setupForLink(Set<String> libraryUris,
- GetUnitCallback getUnit, GetDeclaredVariable getDeclaredVariable) {
+ GetUnitCallback getUnit, DeclaredVariables declaredVariables) {
Map<String, LinkedLibraryBuilder> linkedLibraries =
<String, LinkedLibraryBuilder>{};
for (String absoluteUri in libraryUris) {
@@ -140,7 +141,7 @@
getUnit(absoluteUri),
getUnit,
(String absoluteUri) => getUnit(absoluteUri)?.publicNamespace,
- getDeclaredVariable);
+ declaredVariables);
}
return linkedLibraries;
}
diff --git a/pkg/analyzer/lib/src/summary/prelink.dart b/pkg/analyzer/lib/src/summary/prelink.dart
index 6bda8fd..1785442 100644
--- a/pkg/analyzer/lib/src/summary/prelink.dart
+++ b/pkg/analyzer/lib/src/summary/prelink.dart
@@ -2,6 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+import 'package:analyzer/dart/analysis/declared_variables.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
@@ -21,19 +22,13 @@
UnlinkedUnit definingUnit,
GetPartCallback getPart,
GetImportCallback getImport,
- GetDeclaredVariable getDeclaredVariable) {
- return new _Prelinker(definingUnitUri, definingUnit, getPart, getImport,
- getDeclaredVariable)
+ DeclaredVariables declaredVariables) {
+ return new _Prelinker(
+ definingUnitUri, definingUnit, getPart, getImport, declaredVariables)
.prelink();
}
/**
- * Return the raw string value of the variable with the given [name],
- * or `null` of the variable is not defined.
- */
-typedef String GetDeclaredVariable(String name);
-
-/**
* Type of the callback used by the prelinker to obtain public namespace
* information about libraries with the given [absoluteUri] imported by the
* library to be prelinked (and the transitive closure of parts and exports
@@ -219,7 +214,7 @@
final UnlinkedUnit definingUnit;
final GetPartCallback getPart;
final GetImportCallback getImport;
- final GetDeclaredVariable getDeclaredVariable;
+ final DeclaredVariables declaredVariables;
/**
* Cache of values returned by [getImport].
@@ -263,7 +258,7 @@
final Map<String, _ExportNamespace> exportNamespaces = {};
_Prelinker(this.definingUnitUri, this.definingUnit, this.getPart,
- this.getImport, this.getDeclaredVariable) {
+ this.getImport, this.declaredVariables) {
partCache[definingUnitUri] = definingUnit;
importCache[definingUnitUri] = definingUnit.publicNamespace;
}
@@ -719,7 +714,7 @@
String _selectUri(
String defaultUri, List<UnlinkedConfiguration> configurations) {
for (UnlinkedConfiguration configuration in configurations) {
- if (getDeclaredVariable(configuration.name) == configuration.value) {
+ if (declaredVariables.get(configuration.name) == configuration.value) {
return configuration.uri;
}
}
diff --git a/pkg/analyzer/lib/src/summary/summary_file_builder.dart b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
index 5f2a56b..f774d2a 100644
--- a/pkg/analyzer/lib/src/summary/summary_file_builder.dart
+++ b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
@@ -4,6 +4,7 @@
import 'dart:collection';
+import 'package:analyzer/dart/analysis/declared_variables.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/error/listener.dart';
@@ -90,9 +91,7 @@
throw new StateError('Unable to find unresolved unit $uri.');
}
return unlinked;
- }, (String name) {
- throw new StateError('Unexpected call to GetDeclaredVariable($name).');
- }, context.analysisOptions);
+ }, DeclaredVariables(), context.analysisOptions);
map.forEach(bundleAssembler.addLinkedLibrary);
return bundleAssembler.assemble().toBuffer();
diff --git a/pkg/analyzer/test/src/summary/test_strategies.dart b/pkg/analyzer/test/src/summary/test_strategies.dart
index 0d08da6..bfbe9fe 100644
--- a/pkg/analyzer/test/src/summary/test_strategies.dart
+++ b/pkg/analyzer/test/src/summary/test_strategies.dart
@@ -176,7 +176,7 @@
.toSet();
Map<String, LinkedLibrary> linkedSummaries = link(nonSdkLibraryUris,
- getDependency, getUnit, declaredVariables.get, analysisOptions);
+ getDependency, getUnit, declaredVariables, analysisOptions);
var analysisContext = RestrictedAnalysisContext(
analysisOptions,
@@ -250,7 +250,7 @@
UnlinkedUnit definingUnit = _getUnlinkedUnit(librarySource);
if (definingUnit != null) {
LinkedLibraryBuilder linkedLibrary = prelink(librarySource.uri.toString(),
- definingUnit, getPart, getImport, declaredVariables.get);
+ definingUnit, getPart, getImport, declaredVariables);
linkedLibrary.dependencies.skip(1).forEach((LinkedDependency d) {
Source source = sourceFactory.forUri(d.uri);
_serializeLibrary(source);
@@ -377,11 +377,12 @@
}
linked = new LinkedLibrary.fromBuffer(prelink(
- _linkerInputs._testDartUri.toString(),
- _linkerInputs._unlinkedDefiningUnit,
- getPart,
- getImport,
- (String declaredVariable) => null).toBuffer());
+ _linkerInputs._testDartUri.toString(),
+ _linkerInputs._unlinkedDefiningUnit,
+ getPart,
+ getImport,
+ DeclaredVariables())
+ .toBuffer());
_validateLinkedLibrary(linked);
}
}
@@ -441,7 +442,7 @@
Map<String, LinkedLibraryBuilder> linkedLibraries = setupForLink(
_linkerInputs.linkedLibraries,
_linkerInputs.getUnit,
- _linkerInputs.getDeclaredVariable);
+ _linkerInputs.declaredVariables);
linker = new Linker(linkedLibraries, _linkerInputs.getDependency,
_linkerInputs.getUnit, null, analysisOptions);
}
@@ -481,11 +482,9 @@
this._dependentLinkedLibraries,
this._dependentUnlinkedUnits);
- Set<String> get linkedLibraries => _uriToUnit.keys.toSet();
+ DeclaredVariables get declaredVariables => DeclaredVariables();
- String getDeclaredVariable(String name) {
- return null;
- }
+ Set<String> get linkedLibraries => _uriToUnit.keys.toSet();
LinkedLibrary getDependency(String absoluteUri) {
Map<String, LinkedLibrary> sdkLibraries =
@@ -555,7 +554,7 @@
linkerInputs.linkedLibraries,
linkerInputs.getDependency,
linkerInputs.getUnit,
- linkerInputs.getDeclaredVariable,
+ linkerInputs.declaredVariables,
analysisOptions);
linkedLibraries.forEach(assembler.addLinkedLibrary);
linkerInputs._uriToUnit.forEach((String uri, UnlinkedUnit unit) {
@@ -620,7 +619,7 @@
_linkerInputs.linkedLibraries,
_linkerInputs.getDependency,
_linkerInputs.getUnit,
- (name) => null,
+ DeclaredVariables(),
analysisOptions)[_linkerInputs._testDartUri.toString()];
expect(linked, isNotNull);
_validateLinkedLibrary(linked);
diff --git a/pkg/analyzer_cli/lib/src/build_mode.dart b/pkg/analyzer_cli/lib/src/build_mode.dart
index d8df284..ca4002a 100644
--- a/pkg/analyzer_cli/lib/src/build_mode.dart
+++ b/pkg/analyzer_cli/lib/src/build_mode.dart
@@ -358,7 +358,7 @@
libraryUris,
getDependency,
getUnit,
- analysisDriver.declaredVariables.get,
+ analysisDriver.declaredVariables,
analysisOptions);
linkResult.forEach(assembler.addLinkedLibrary);
});
diff --git a/pkg/dev_compiler/lib/src/analyzer/driver.dart b/pkg/dev_compiler/lib/src/analyzer/driver.dart
index 4728fb1..a4fd216 100644
--- a/pkg/dev_compiler/lib/src/analyzer/driver.dart
+++ b/pkg/dev_compiler/lib/src/analyzer/driver.dart
@@ -233,7 +233,7 @@
libraryUris.toSet(),
(uri) => summaryData.linkedMap[uri],
(uri) => summaryData.unlinkedMap[uri] ?? uriToUnit[uri],
- declaredVariables.get,
+ declaredVariables,
analysisOptions);
linkResult.forEach(assembler.addLinkedLibrary);