OLD | NEW |
---|---|
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library fasta.kernel_field_builder; | 5 library fasta.kernel_field_builder; |
6 | 6 |
7 import 'package:front_end/src/fasta/kernel/body_builder.dart' show BodyBuilder; | 7 import 'package:front_end/src/fasta/kernel/body_builder.dart' show BodyBuilder; |
8 | 8 |
9 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart' | 9 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart' |
10 show KernelField; | 10 show KernelField; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
66 @override | 66 @override |
67 void prepareInitializerInference( | 67 void prepareInitializerInference( |
68 SourceLibraryBuilder library, ClassBuilder currentClass) { | 68 SourceLibraryBuilder library, ClassBuilder currentClass) { |
69 if (initializerToken != null) { | 69 if (initializerToken != null) { |
70 var memberScope = | 70 var memberScope = |
71 currentClass == null ? library.scope : currentClass.scope; | 71 currentClass == null ? library.scope : currentClass.scope; |
72 // TODO(paulberry): Is it correct to pass library.uri into BodyBuilder, or | 72 // TODO(paulberry): Is it correct to pass library.uri into BodyBuilder, or |
73 // should it be the part URI? | 73 // should it be the part URI? |
74 var typeInferenceEngine = library.loader.typeInferenceEngine; | 74 var typeInferenceEngine = library.loader.typeInferenceEngine; |
75 var listener = new TypeInferenceListener(); | 75 var listener = new TypeInferenceListener(); |
76 var typeInferrer = | 76 var typeInferrer = typeInferenceEngine.createTopLevelTypeInferrer( |
77 typeInferenceEngine.createTopLevelTypeInferrer(field, listener); | 77 field, listener, field.enclosingClass?.thisType); |
scheglov
2017/06/05 17:40:02
Nit: The order is not logical - it would be better
Paul Berry
2017/06/05 18:37:16
Thanks. Fixed.
| |
78 var bodyBuilder = new BodyBuilder( | 78 var bodyBuilder = new BodyBuilder( |
79 library, | 79 library, |
80 this, | 80 this, |
81 memberScope, | 81 memberScope, |
82 null, | 82 null, |
83 typeInferenceEngine.classHierarchy, | 83 typeInferenceEngine.classHierarchy, |
84 typeInferenceEngine.coreTypes, | 84 typeInferenceEngine.coreTypes, |
85 currentClass, | 85 currentClass, |
86 isInstanceMember, | 86 isInstanceMember, |
87 library.uri, | 87 library.uri, |
88 typeInferrer); | 88 typeInferrer); |
89 Parser parser = new Parser(bodyBuilder); | 89 Parser parser = new Parser(bodyBuilder); |
90 Token token = parser.parseExpression(initializerToken); | 90 Token token = parser.parseExpression(initializerToken); |
91 Expression expression = bodyBuilder.popForValue(); | 91 Expression expression = bodyBuilder.popForValue(); |
92 bodyBuilder.checkEmpty(token.charOffset); | 92 bodyBuilder.checkEmpty(token.charOffset); |
93 initializer = expression; | 93 initializer = expression; |
94 } | 94 } |
95 } | 95 } |
96 | 96 |
97 @override | 97 @override |
98 DartType get builtType => field.type; | 98 DartType get builtType => field.type; |
99 } | 99 } |
OLD | NEW |