Index: pkg/analyzer/lib/src/kernel/resynthesize.dart |
diff --git a/pkg/analyzer/lib/src/kernel/resynthesize.dart b/pkg/analyzer/lib/src/kernel/resynthesize.dart |
index 3b21fbc5252436c7759638407267cfbec98a7dce..7fc95a00e6e41bdfbbab97bc99012a426ab3719f 100644 |
--- a/pkg/analyzer/lib/src/kernel/resynthesize.dart |
+++ b/pkg/analyzer/lib/src/kernel/resynthesize.dart |
@@ -73,8 +73,9 @@ class KernelResynthesizer { |
*/ |
class _ExprBuilder { |
final _KernelLibraryResynthesizerContextImpl _context; |
+ final ElementImpl _contextElement; |
- _ExprBuilder(this._context); |
+ _ExprBuilder(this._context, this._contextElement); |
Expression build(kernel.Expression expr) { |
if (expr is kernel.NullLiteral) { |
@@ -196,7 +197,7 @@ class _ExprBuilder { |
var element = _getElement(expr.targetReference); |
var kernelType = expr.getStaticType(_context._resynthesizer._types); |
- var type = _context.getType(null, kernelType); |
+ var type = _context.getType(_contextElement, kernelType); |
TypeName typeName = _buildType(type); |
var constructorName = AstTestFactory.constructorName( |
@@ -210,7 +211,7 @@ class _ExprBuilder { |
} |
if (expr is kernel.TypeLiteral) { |
- var type = _context.getType(null, expr.type); |
+ var type = _context.getType(_contextElement, expr.type); |
var identifier = AstTestFactory.identifier3(type.element.name); |
identifier.staticElement = type.element; |
identifier.staticType = _context._resynthesizer.typeType; |
@@ -303,10 +304,10 @@ class _ExprBuilder { |
return AstTestFactory.typeName3(name, arguments)..type = type; |
} |
if (type is DynamicTypeImpl) { |
- var name = AstTestFactory.identifier3('dynamic') |
+ var identifier = AstTestFactory.identifier3('dynamic') |
..staticElement = type.element |
..staticType = type; |
- return AstTestFactory.typeName3(name)..type = type; |
+ return AstTestFactory.typeName3(identifier)..type = type; |
} |
// TODO(scheglov) Implement for other types. |
throw new UnimplementedError('type: (${type.runtimeType}) $type'); |
@@ -316,7 +317,7 @@ class _ExprBuilder { |
int length = kernels.length; |
var types = new List<TypeAnnotation>(length); |
for (int i = 0; i < length; i++) { |
- DartType type = _context.getType(null, kernels[i]); |
+ DartType type = _context.getType(_contextElement, kernels[i]); |
TypeAnnotation typeAnnotation = _buildType(type); |
types[i] = typeAnnotation; |
} |
@@ -487,12 +488,12 @@ class _KernelLibraryResynthesizerContextImpl |
k is kernel.SuperInitializer && k.isSynthetic) { |
return null; |
} |
- return new _ExprBuilder(this).buildInitializer(k); |
+ return new _ExprBuilder(this, constructor).buildInitializer(k); |
} |
@override |
- Expression getExpression(kernel.Expression expression) { |
- return new _ExprBuilder(this).build(expression); |
+ Expression getExpression(ElementImpl context, kernel.Expression expression) { |
+ return new _ExprBuilder(this, context).build(expression); |
} |
@override |
@@ -593,7 +594,7 @@ class _KernelLibraryResynthesizerContextImpl |
ElementAnnotationImpl _buildAnnotation( |
CompilationUnitElementImpl unit, kernel.Expression expression) { |
ElementAnnotationImpl elementAnnotation = new ElementAnnotationImpl(unit); |
- Expression constExpr = getExpression(expression); |
+ Expression constExpr = getExpression(unit, expression); |
if (constExpr is Identifier) { |
elementAnnotation.element = constExpr.staticElement; |
elementAnnotation.annotationAst = AstTestFactory.annotation(constExpr); |