Chromium Code Reviews| 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; |