Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: pkg/front_end/lib/src/fasta/source/diet_listener.dart

Issue 2895983002: Read SDK and patches from a JSON file. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/kernel/kernel_ast_factory.dart' 7 import 'package:front_end/src/fasta/kernel/kernel_ast_factory.dart'
8 show KernelAstFactory; 8 show KernelAstFactory;
9 9
10 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart' 10 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart'
(...skipping 30 matching lines...) Expand all
41 41
42 import 'source_library_builder.dart' show SourceLibraryBuilder; 42 import 'source_library_builder.dart' show SourceLibraryBuilder;
43 43
44 class DietListener extends StackListener { 44 class DietListener extends StackListener {
45 final SourceLibraryBuilder library; 45 final SourceLibraryBuilder library;
46 46
47 final ClassHierarchy hierarchy; 47 final ClassHierarchy hierarchy;
48 48
49 final CoreTypes coreTypes; 49 final CoreTypes coreTypes;
50 50
51 final bool isDartLibrary; 51 final bool enableNative;
52 52
53 final TypeInferenceEngine typeInferenceEngine; 53 final TypeInferenceEngine typeInferenceEngine;
54 54
55 ClassBuilder currentClass; 55 ClassBuilder currentClass;
56 56
57 /// For top-level declarations, this is the library scope. For class members, 57 /// For top-level declarations, this is the library scope. For class members,
58 /// this is the instance scope of [currentClass]. 58 /// this is the instance scope of [currentClass].
59 Scope memberScope; 59 Scope memberScope;
60 60
61 @override 61 @override
62 Uri uri; 62 Uri uri;
63 63
64 DietListener(SourceLibraryBuilder library, this.hierarchy, this.coreTypes, 64 DietListener(SourceLibraryBuilder library, this.hierarchy, this.coreTypes,
65 this.typeInferenceEngine) 65 this.typeInferenceEngine)
66 : library = library, 66 : library = library,
67 uri = library.fileUri, 67 uri = library.fileUri,
68 memberScope = library.scope, 68 memberScope = library.scope,
69 isDartLibrary = library.uri.scheme == "dart"; 69 enableNative = (library.uri.scheme == "dart" || library.isPatch);
70 70
71 void discard(int n) { 71 void discard(int n) {
72 for (int i = 0; i < n; i++) { 72 for (int i = 0; i < n; i++) {
73 pop(); 73 pop();
74 } 74 }
75 } 75 }
76 76
77 @override 77 @override
78 void endMetadataStar(int count, bool forParameter) { 78 void endMetadataStar(int count, bool forParameter) {
79 debugEvent("MetadataStar"); 79 debugEvent("MetadataStar");
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 @override 493 @override
494 void endNamedMixinApplication(Token beginToken, Token classKeyword, 494 void endNamedMixinApplication(Token beginToken, Token classKeyword,
495 Token equals, Token implementsKeyword, Token endToken) { 495 Token equals, Token implementsKeyword, Token endToken) {
496 debugEvent("NamedMixinApplication"); 496 debugEvent("NamedMixinApplication");
497 pop(); // Name. 497 pop(); // Name.
498 checkEmpty(beginToken.charOffset); 498 checkEmpty(beginToken.charOffset);
499 } 499 }
500 500
501 @override 501 @override
502 Token handleUnrecoverableError(Token token, FastaMessage message) { 502 Token handleUnrecoverableError(Token token, FastaMessage message) {
503 if (isDartLibrary && message.code == codeExpectedBlockToSkip) { 503 if (enableNative && message.code == codeExpectedBlockToSkip) {
504 Token recover = library.loader.target.skipNativeClause(token); 504 Token recover = library.loader.target.skipNativeClause(token);
505 if (recover != null) return recover; 505 if (recover != null) return recover;
506 } 506 }
507 return super.handleUnrecoverableError(token, message); 507 return super.handleUnrecoverableError(token, message);
508 } 508 }
509 509
510 @override 510 @override
511 Link<Token> handleMemberName(Link<Token> identifiers) { 511 Link<Token> handleMemberName(Link<Token> identifiers) {
512 if (!isDartLibrary || identifiers.isEmpty) return identifiers; 512 if (!enableNative || identifiers.isEmpty) return identifiers;
513 return removeNativeClause(identifiers); 513 return removeNativeClause(identifiers);
514 } 514 }
515 515
516 AsyncMarker getAsyncMarker(StackListener listener) => listener.pop(); 516 AsyncMarker getAsyncMarker(StackListener listener) => listener.pop();
517 517
518 void parseFunctionBody(StackListener listener, Token token, MemberKind kind) { 518 void parseFunctionBody(StackListener listener, Token token, MemberKind kind) {
519 try { 519 try {
520 Parser parser = new Parser(listener); 520 Parser parser = new Parser(listener);
521 token = parser.parseFormalParametersOpt(token, kind); 521 token = parser.parseFormalParametersOpt(token, kind);
522 var formals = listener.pop(); 522 var formals = listener.pop();
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 return inputError(uri, token.charOffset, "Duplicated name: $name"); 582 return inputError(uri, token.charOffset, "Duplicated name: $name");
583 } 583 }
584 return builder; 584 return builder;
585 } 585 }
586 586
587 @override 587 @override
588 void debugEvent(String name) { 588 void debugEvent(String name) {
589 // printEvent(name); 589 // printEvent(name);
590 } 590 }
591 } 591 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698