Index: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart |
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart |
index 87f4778fe8da8db0f8b4d4ebec27b818ff46d505..a324802aa42e1ce8e7f9d18a02c7f9f2f65ab3c7 100644 |
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart |
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart |
@@ -556,21 +556,21 @@ class KernelDirectPropertyGet extends DirectPropertyGet |
KernelDirectPropertyGet(Expression receiver, Member target) |
: super(receiver, target); |
- KernelDirectPropertyGet.byReference( |
- Expression receiver, Reference targetReference) |
- : super.byReference(receiver, targetReference); |
- |
@override |
void _collectDependencies(KernelDependencyCollector collector) { |
- // TODO(paulberry): Determine the right thing to do here. |
- throw 'TODO(paulberry)'; |
+ // DirectPropertyGet can only occur as a result of a use of `super`, and |
+ // `super` can't appear inside a field initializer. So this code should |
+ // never be reached. |
+ internalError( |
+ 'Unexpected call to _collectDependencies for DirectPropertyGet'); |
} |
@override |
DartType _inferExpression( |
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
- // TODO(scheglov): implement. |
- return typeNeeded ? const DynamicType() : null; |
+ return inferrer.inferPropertyGet( |
+ this, receiver, fileOffset, typeContext, typeNeeded, |
+ propertyName: target.name); |
} |
} |
@@ -1381,14 +1381,9 @@ class KernelNullAwarePropertyGet extends Let implements KernelExpression { |
@override |
DartType _inferExpression( |
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
- var inferredType = inferrer.inferPropertyGet( |
- this, |
- variable.initializer, |
- fileOffset, |
- _desugaredGet, |
- typeContext, |
- typeNeeded || inferrer.strongMode, |
- receiverVariable: variable); |
+ var inferredType = inferrer.inferPropertyGet(this, variable.initializer, |
+ fileOffset, typeContext, typeNeeded || inferrer.strongMode, |
+ receiverVariable: variable, desugaredGet: _desugaredGet); |
if (inferrer.strongMode) { |
body.staticType = inferredType; |
} |
@@ -1562,7 +1557,8 @@ class KernelPropertyGet extends PropertyGet implements KernelExpression { |
DartType _inferExpression( |
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
return inferrer.inferPropertyGet( |
- this, receiver, fileOffset, this, typeContext, typeNeeded); |
+ this, receiver, fileOffset, typeContext, typeNeeded, |
+ desugaredGet: this); |
} |
} |
@@ -1796,10 +1792,6 @@ class KernelSuperMethodInvocation extends SuperMethodInvocation |
[Procedure interfaceTarget]) |
: super(name, arguments, interfaceTarget); |
- KernelSuperMethodInvocation.byReference( |
- Name name, Arguments arguments, Reference interfaceTargetReference) |
- : super.byReference(name, arguments, interfaceTargetReference); |
- |
@override |
void _collectDependencies(KernelDependencyCollector collector) { |
// Super expressions should never occur in top level type inference. |
@@ -1826,10 +1818,6 @@ class KernelSuperPropertyGet extends SuperPropertyGet |
KernelSuperPropertyGet(Name name, [Member interfaceTarget]) |
: super(name, interfaceTarget); |
- KernelSuperPropertyGet.byReference( |
- Name name, Reference interfaceTargetReference) |
- : super.byReference(name, interfaceTargetReference); |
- |
@override |
void _collectDependencies(KernelDependencyCollector collector) { |
// Super expressions should never occur in top level type inference. |
@@ -1840,8 +1828,9 @@ class KernelSuperPropertyGet extends SuperPropertyGet |
@override |
DartType _inferExpression( |
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
- // TODO(scheglov): implement. |
- return typeNeeded ? const DynamicType() : null; |
+ return inferrer.inferPropertyGet( |
+ this, new KernelThisExpression(), fileOffset, typeContext, typeNeeded, |
+ propertyName: name); |
} |
} |