Index: pkg/front_end/lib/src/fasta/source/diet_listener.dart |
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
index ab460fb3c76dd2472d150b57363e1c4281c6b40a..80d49e6ea2b904f9d2a281f17e3daec2dd18a4b9 100644 |
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
@@ -10,7 +10,7 @@ import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart' |
import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart' |
show TypeInferenceListener; |
-import 'package:kernel/ast.dart' show AsyncMarker; |
+import 'package:kernel/ast.dart' show AsyncMarker, Class, InterfaceType; |
import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; |
@@ -403,8 +403,14 @@ class DietListener extends StackListener { |
MemberBuilder builder, Scope memberScope, bool isInstanceMember, |
[Scope formalParameterScope]) { |
var listener = new TypeInferenceListener(); |
+ var parent = builder.parent; |
+ InterfaceType thisType; |
+ if (parent is ClassBuilder) { |
ahe
2017/06/06 11:16:52
How about:
if (builder.isClassMember) {
Class c
Paul Berry
2017/06/06 16:50:33
Done.
|
+ Class class_ = parent.target; |
+ thisType = class_.thisType; |
+ } |
var typeInferrer = |
- typeInferenceEngine.createLocalTypeInferrer(uri, listener); |
+ typeInferenceEngine.createLocalTypeInferrer(uri, listener, thisType); |
return new BodyBuilder(library, builder, memberScope, formalParameterScope, |
hierarchy, coreTypes, currentClass, isInstanceMember, uri, typeInferrer) |
..constantExpressionRequired = builder.isConstructor && builder.isConst; |