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:front_end/src/fasta/type_inference/type_inference_engine.dart' | 7 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart' |
8 show TypeInferenceEngine; | 8 show TypeInferenceEngine; |
9 | 9 |
10 import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart' | 10 import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart' |
(...skipping 27 matching lines...) Expand all Loading... |
38 | 38 |
39 import 'source_library_builder.dart' show SourceLibraryBuilder; | 39 import 'source_library_builder.dart' show SourceLibraryBuilder; |
40 | 40 |
41 class DietListener extends StackListener { | 41 class DietListener extends StackListener { |
42 final SourceLibraryBuilder library; | 42 final SourceLibraryBuilder library; |
43 | 43 |
44 final ClassHierarchy hierarchy; | 44 final ClassHierarchy hierarchy; |
45 | 45 |
46 final CoreTypes coreTypes; | 46 final CoreTypes coreTypes; |
47 | 47 |
48 final bool isDartLibrary; | 48 final bool enableNative; |
49 | 49 |
50 final TypeInferenceEngine typeInferenceEngine; | 50 final TypeInferenceEngine typeInferenceEngine; |
51 | 51 |
52 ClassBuilder currentClass; | 52 ClassBuilder currentClass; |
53 | 53 |
54 /// For top-level declarations, this is the library scope. For class members, | 54 /// For top-level declarations, this is the library scope. For class members, |
55 /// this is the instance scope of [currentClass]. | 55 /// this is the instance scope of [currentClass]. |
56 Scope memberScope; | 56 Scope memberScope; |
57 | 57 |
58 @override | 58 @override |
59 Uri uri; | 59 Uri uri; |
60 | 60 |
61 DietListener(SourceLibraryBuilder library, this.hierarchy, this.coreTypes, | 61 DietListener(SourceLibraryBuilder library, this.hierarchy, this.coreTypes, |
62 this.typeInferenceEngine) | 62 this.typeInferenceEngine) |
63 : library = library, | 63 : library = library, |
64 uri = library.fileUri, | 64 uri = library.fileUri, |
65 memberScope = library.scope, | 65 memberScope = library.scope, |
66 isDartLibrary = library.uri.scheme == "dart"; | 66 enableNative = (library.uri.scheme == "dart" || library.isPatch); |
67 | 67 |
68 void discard(int n) { | 68 void discard(int n) { |
69 for (int i = 0; i < n; i++) { | 69 for (int i = 0; i < n; i++) { |
70 pop(); | 70 pop(); |
71 } | 71 } |
72 } | 72 } |
73 | 73 |
74 @override | 74 @override |
75 void endMetadataStar(int count, bool forParameter) { | 75 void endMetadataStar(int count, bool forParameter) { |
76 debugEvent("MetadataStar"); | 76 debugEvent("MetadataStar"); |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 @override | 480 @override |
481 void endNamedMixinApplication(Token beginToken, Token classKeyword, | 481 void endNamedMixinApplication(Token beginToken, Token classKeyword, |
482 Token equals, Token implementsKeyword, Token endToken) { | 482 Token equals, Token implementsKeyword, Token endToken) { |
483 debugEvent("NamedMixinApplication"); | 483 debugEvent("NamedMixinApplication"); |
484 pop(); // Name. | 484 pop(); // Name. |
485 checkEmpty(beginToken.charOffset); | 485 checkEmpty(beginToken.charOffset); |
486 } | 486 } |
487 | 487 |
488 @override | 488 @override |
489 Token handleUnrecoverableError(Token token, FastaMessage message) { | 489 Token handleUnrecoverableError(Token token, FastaMessage message) { |
490 if (isDartLibrary && message.code == codeExpectedBlockToSkip) { | 490 if (enableNative && message.code == codeExpectedBlockToSkip) { |
491 Token recover = library.loader.target.skipNativeClause(token); | 491 Token recover = library.loader.target.skipNativeClause(token); |
492 if (recover != null) return recover; | 492 if (recover != null) return recover; |
493 } | 493 } |
494 return super.handleUnrecoverableError(token, message); | 494 return super.handleUnrecoverableError(token, message); |
495 } | 495 } |
496 | 496 |
497 @override | 497 @override |
498 Link<Token> handleMemberName(Link<Token> identifiers) { | 498 Link<Token> handleMemberName(Link<Token> identifiers) { |
499 if (!isDartLibrary || identifiers.isEmpty) return identifiers; | 499 if (!enableNative || identifiers.isEmpty) return identifiers; |
500 return removeNativeClause(identifiers); | 500 return removeNativeClause(identifiers); |
501 } | 501 } |
502 | 502 |
503 AsyncMarker getAsyncMarker(StackListener listener) => listener.pop(); | 503 AsyncMarker getAsyncMarker(StackListener listener) => listener.pop(); |
504 | 504 |
505 void parseFunctionBody(StackListener listener, Token token, MemberKind kind) { | 505 void parseFunctionBody(StackListener listener, Token token, MemberKind kind) { |
506 try { | 506 try { |
507 Parser parser = new Parser(listener); | 507 Parser parser = new Parser(listener); |
508 token = parser.parseFormalParametersOpt(token, kind); | 508 token = parser.parseFormalParametersOpt(token, kind); |
509 var formals = listener.pop(); | 509 var formals = listener.pop(); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 fileUri: message.uri, | 577 fileUri: message.uri, |
578 // We assume this error has already been reported by OutlineBuilder. | 578 // We assume this error has already been reported by OutlineBuilder. |
579 silent: true); | 579 silent: true); |
580 } | 580 } |
581 | 581 |
582 @override | 582 @override |
583 void debugEvent(String name) { | 583 void debugEvent(String name) { |
584 // printEvent(name); | 584 // printEvent(name); |
585 } | 585 } |
586 } | 586 } |
OLD | NEW |