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.diet_listener; | 5 library fasta.diet_listener; |
6 | 6 |
7 import 'package:kernel/ast.dart' | 7 import 'package:kernel/ast.dart' |
8 show AsyncMarker, Class, InterfaceType, Typedef; | 8 show AsyncMarker, Class, InterfaceType, Typedef; |
9 import 'package:kernel/ast.dart'; | 9 import 'package:kernel/ast.dart'; |
10 | 10 |
(...skipping 18 matching lines...) Expand all Loading... |
29 | 29 |
30 import '../parser.dart' show MemberKind, Parser, closeBraceTokenFor, optional; | 30 import '../parser.dart' show MemberKind, Parser, closeBraceTokenFor, optional; |
31 | 31 |
32 import '../problems.dart' show internalProblem; | 32 import '../problems.dart' show internalProblem; |
33 | 33 |
34 import '../type_inference/type_inference_engine.dart' show TypeInferenceEngine; | 34 import '../type_inference/type_inference_engine.dart' show TypeInferenceEngine; |
35 | 35 |
36 import '../type_inference/type_inference_listener.dart' | 36 import '../type_inference/type_inference_listener.dart' |
37 show TypeInferenceListener; | 37 show TypeInferenceListener; |
38 | 38 |
39 import '../type_inference/type_inferrer.dart' show TypeInferrerDisabled; | |
40 | |
41 import '../util/link.dart' show Link; | 39 import '../util/link.dart' show Link; |
42 | 40 |
43 import 'source_library_builder.dart' show SourceLibraryBuilder; | 41 import 'source_library_builder.dart' show SourceLibraryBuilder; |
44 | 42 |
45 import 'stack_listener.dart' show NullValue, StackListener; | 43 import 'stack_listener.dart' show NullValue, StackListener; |
46 | 44 |
47 class DietListener extends StackListener { | 45 class DietListener extends StackListener { |
48 final SourceLibraryBuilder library; | 46 final SourceLibraryBuilder library; |
49 | 47 |
50 final ClassHierarchy hierarchy; | 48 final ClassHierarchy hierarchy; |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 [Scope formalParameterScope, TypeInferenceListener listener]) { | 425 [Scope formalParameterScope, TypeInferenceListener listener]) { |
428 listener ??= new TypeInferenceListener(); | 426 listener ??= new TypeInferenceListener(); |
429 InterfaceType thisType; | 427 InterfaceType thisType; |
430 if (builder.isClassMember) { | 428 if (builder.isClassMember) { |
431 // Note: we set thisType regardless of whether we are building a static | 429 // Note: we set thisType regardless of whether we are building a static |
432 // member, since that provides better error recovery. | 430 // member, since that provides better error recovery. |
433 Class cls = builder.parent.target; | 431 Class cls = builder.parent.target; |
434 thisType = cls.thisType; | 432 thisType = cls.thisType; |
435 } | 433 } |
436 var typeInferrer = library.disableTypeInference | 434 var typeInferrer = library.disableTypeInference |
437 ? new TypeInferrerDisabled() | 435 ? typeInferenceEngine.createDisabledTypeInferrer() |
438 : typeInferenceEngine.createLocalTypeInferrer(uri, listener, thisType); | 436 : typeInferenceEngine.createLocalTypeInferrer(uri, listener, thisType); |
439 return new BodyBuilder(library, builder, memberScope, formalParameterScope, | 437 return new BodyBuilder(library, builder, memberScope, formalParameterScope, |
440 hierarchy, coreTypes, currentClass, isInstanceMember, uri, typeInferrer) | 438 hierarchy, coreTypes, currentClass, isInstanceMember, uri, typeInferrer) |
441 ..constantExpressionRequired = builder.isConstructor && builder.isConst; | 439 ..constantExpressionRequired = builder.isConstructor && builder.isConst; |
442 } | 440 } |
443 | 441 |
444 void buildFunctionBody( | 442 void buildFunctionBody( |
445 Token token, ProcedureBuilder builder, MemberKind kind, Token metadata) { | 443 Token token, ProcedureBuilder builder, MemberKind kind, Token metadata) { |
446 Scope typeParameterScope = builder.computeTypeParameterScope(memberScope); | 444 Scope typeParameterScope = builder.computeTypeParameterScope(memberScope); |
447 Scope formalParameterScope = | 445 Scope formalParameterScope = |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 void addAnnotation(Expression annotation)) { | 660 void addAnnotation(Expression annotation)) { |
663 if (metadata != null) { | 661 if (metadata != null) { |
664 var listener = createListener(builder, memberScope, false); | 662 var listener = createListener(builder, memberScope, false); |
665 var parser = new Parser(listener); | 663 var parser = new Parser(listener); |
666 parser.parseMetadataStar(metadata); | 664 parser.parseMetadataStar(metadata); |
667 List<Expression> metadataConstants = listener.finishMetadata(); | 665 List<Expression> metadataConstants = listener.finishMetadata(); |
668 metadataConstants.forEach(addAnnotation); | 666 metadataConstants.forEach(addAnnotation); |
669 } | 667 } |
670 } | 668 } |
671 } | 669 } |
OLD | NEW |