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

Unified Diff: pkg/analyzer/lib/src/summary/link.dart

Issue 1892913002: Add LibraryElementForLink.context getter. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « no previous file | pkg/analyzer/test/src/summary/linker_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/summary/link.dart
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart
index 81e3e3a303ac1641073b595aa1829f2830bd80aa..9e9d19e838b779772cd74d2d4c1c84a8723cbd4d 100644
--- a/pkg/analyzer/lib/src/summary/link.dart
+++ b/pkg/analyzer/lib/src/summary/link.dart
@@ -64,6 +64,7 @@ import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/constant/value.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/summary/format.dart';
@@ -1410,6 +1411,22 @@ class ConstVariableNode extends ConstNode {
}
/**
+ * Stub implementation of [AnalysisContext] which provides just those methods
+ * needed during linking.
+ */
+class ContextForLink implements AnalysisContext {
+ final Linker _linker;
+
+ ContextForLink(this._linker);
+
+ @override
+ TypeSystem get typeSystem => _linker.typeSystem;
+
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+/**
* An instance of [DependencyWalker] contains the core algorithms for
* walking a dependency graph and evaluating nodes in a safe order.
*/
@@ -1553,6 +1570,7 @@ abstract class ExecutableElementForLink extends Object
List<TypeParameterElementForLink> _typeParameters;
String _name;
List<ParameterElementForLink> _parameters;
+ String _displayName;
/**
* TODO(paulberry): this won't always be a class element.
@@ -1569,6 +1587,17 @@ abstract class ExecutableElementForLink extends Object
enclosingElement.enclosingElement;
@override
+ String get displayName {
+ if (_displayName == null) {
+ _displayName = _unlinkedExecutable.name;
+ if (_unlinkedExecutable.kind == UnlinkedExecutableKind.setter) {
+ _displayName = _displayName.substring(0, _displayName.length - 1);
+ }
+ }
+ return _displayName;
+ }
+
+ @override
TypeParameterizedElementForLink get enclosingTypeParameterContext =>
enclosingElement;
@@ -2653,6 +2682,9 @@ abstract class LibraryElementForLink<
}
}
+ @override
+ ContextForLink get context => _linker.context;
+
/**
* Get the [UnlinkedUnit] for the defining compilation unit of this library.
*/
@@ -2934,6 +2966,7 @@ class Linker {
SpecialTypeElementForLink _voidElement;
SpecialTypeElementForLink _dynamicElement;
SpecialTypeElementForLink _bottomElement;
+ ContextForLink _context;
Linker(Map<String, LinkedLibraryBuilder> linkedLibraries, this.getDependency,
this.getUnit, this.strongMode) {
@@ -2960,6 +2993,12 @@ class Linker {
new SpecialTypeElementForLink(this, BottomTypeImpl.instance);
/**
+ * Get a stub implementation of [AnalysisContext] which can be used during
+ * linking.
+ */
+ get context => _context ??= new ContextForLink(this);
+
+ /**
* Get the library element for `dart:core`.
*/
LibraryElementForLink get coreLibrary =>
« no previous file with comments | « no previous file | pkg/analyzer/test/src/summary/linker_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698