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

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

Issue 2976543002: Reapply "Tweak public APIs and use them in patch_sdk, dart2js, and kernel-service."" (Closed)
Patch Set: fix Created 3 years, 5 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/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'
11 show TypeInferenceListener; 11 show TypeInferenceListener;
12 12
13 import 'package:front_end/src/fasta/type_inference/type_inferrer.dart' 13 import 'package:front_end/src/fasta/type_inference/type_inferrer.dart'
14 show TypeInferrerDisabled; 14 show TypeInferrerDisabled;
15 15
16 import 'package:kernel/ast.dart' show AsyncMarker, Class, InterfaceType; 16 import 'package:kernel/ast.dart' show AsyncMarker, Class, InterfaceType;
17 17
18 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; 18 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
19 19
20 import 'package:kernel/core_types.dart' show CoreTypes; 20 import 'package:kernel/core_types.dart' show CoreTypes;
21 21
22 import '../fasta_codes.dart' show FastaMessage, codeExpectedBlockToSkip; 22 import '../fasta_codes.dart' show FastaMessage, codeExpectedBlockToSkip;
23 23
24 import '../parser/parser.dart' show MemberKind, Parser, optional; 24 import '../parser/parser.dart' show MemberKind, Parser, optional;
25 25
26 import '../../scanner/token.dart' show BeginToken, Token; 26 import '../../scanner/token.dart' show BeginToken, Token;
27 27
28 import '../parser/dart_vm_native.dart' show removeNativeClause; 28 import '../parser/native_support.dart'
29 show removeNativeClause, skipNativeClause;
29 30
30 import '../util/link.dart' show Link; 31 import '../util/link.dart' show Link;
31 32
32 import '../errors.dart' show Crash, InputError, inputError, internalError; 33 import '../errors.dart' show Crash, InputError, inputError, internalError;
33 34
34 import 'stack_listener.dart' show NullValue, StackListener; 35 import 'stack_listener.dart' show NullValue, StackListener;
35 36
36 import '../kernel/body_builder.dart' show BodyBuilder; 37 import '../kernel/body_builder.dart' show BodyBuilder;
37 38
38 import '../builder/builder.dart'; 39 import '../builder/builder.dart';
39 40
40 import 'source_library_builder.dart' show SourceLibraryBuilder; 41 import 'source_library_builder.dart' show SourceLibraryBuilder;
41 42
42 class DietListener extends StackListener { 43 class DietListener extends StackListener {
43 final SourceLibraryBuilder library; 44 final SourceLibraryBuilder library;
44 45
45 final ClassHierarchy hierarchy; 46 final ClassHierarchy hierarchy;
46 47
47 final CoreTypes coreTypes; 48 final CoreTypes coreTypes;
48 49
49 final bool enableNative; 50 final bool enableNative;
50 51
52 final bool stringExpectedAfterNative;
53
51 final TypeInferenceEngine typeInferenceEngine; 54 final TypeInferenceEngine typeInferenceEngine;
52 55
53 ClassBuilder currentClass; 56 ClassBuilder currentClass;
54 57
55 /// For top-level declarations, this is the library scope. For class members, 58 /// For top-level declarations, this is the library scope. For class members,
56 /// this is the instance scope of [currentClass]. 59 /// this is the instance scope of [currentClass].
57 Scope memberScope; 60 Scope memberScope;
58 61
59 @override 62 @override
60 Uri uri; 63 Uri uri;
61 64
62 DietListener(SourceLibraryBuilder library, this.hierarchy, this.coreTypes, 65 DietListener(SourceLibraryBuilder library, this.hierarchy, this.coreTypes,
63 this.typeInferenceEngine) 66 this.typeInferenceEngine)
64 : library = library, 67 : library = library,
65 uri = library.fileUri, 68 uri = library.fileUri,
66 memberScope = library.scope, 69 memberScope = library.scope,
67 enableNative = library.loader.target.enableNative(library); 70 enableNative =
71 library.loader.target.backendTarget.enableNative(library.uri),
72 stringExpectedAfterNative =
73 library.loader.target.backendTarget.nativeExtensionExpectsString;
68 74
69 void discard(int n) { 75 void discard(int n) {
70 for (int i = 0; i < n; i++) { 76 for (int i = 0; i < n; i++) {
71 pop(); 77 pop();
72 } 78 }
73 } 79 }
74 80
75 @override 81 @override
76 void endMetadataStar(int count, bool forParameter) { 82 void endMetadataStar(int count, bool forParameter) {
77 debugEvent("MetadataStar"); 83 debugEvent("MetadataStar");
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 void endNamedMixinApplication(Token beginToken, Token classKeyword, 514 void endNamedMixinApplication(Token beginToken, Token classKeyword,
509 Token equals, Token implementsKeyword, Token endToken) { 515 Token equals, Token implementsKeyword, Token endToken) {
510 debugEvent("NamedMixinApplication"); 516 debugEvent("NamedMixinApplication");
511 discard(2); // Name and metadata. 517 discard(2); // Name and metadata.
512 checkEmpty(beginToken.charOffset); 518 checkEmpty(beginToken.charOffset);
513 } 519 }
514 520
515 @override 521 @override
516 Token handleUnrecoverableError(Token token, FastaMessage message) { 522 Token handleUnrecoverableError(Token token, FastaMessage message) {
517 if (enableNative && message.code == codeExpectedBlockToSkip) { 523 if (enableNative && message.code == codeExpectedBlockToSkip) {
518 Token recover = library.loader.target.skipNativeClause(token); 524 Token recover = skipNativeClause(token, stringExpectedAfterNative);
519 if (recover != null) return recover; 525 if (recover != null) return recover;
520 } 526 }
521 return super.handleUnrecoverableError(token, message); 527 return super.handleUnrecoverableError(token, message);
522 } 528 }
523 529
524 @override 530 @override
525 Link<Token> handleMemberName(Link<Token> identifiers) { 531 Link<Token> handleMemberName(Link<Token> identifiers) {
526 if (!enableNative || identifiers.isEmpty) return identifiers; 532 if (!enableNative || identifiers.isEmpty) return identifiers;
527 return removeNativeClause(identifiers); 533 return removeNativeClause(identifiers, stringExpectedAfterNative);
528 } 534 }
529 535
530 AsyncMarker getAsyncMarker(StackListener listener) => listener.pop(); 536 AsyncMarker getAsyncMarker(StackListener listener) => listener.pop();
531 537
532 void parseFunctionBody( 538 void parseFunctionBody(
533 StackListener listener, Token token, Token metadata, MemberKind kind) { 539 StackListener listener, Token token, Token metadata, MemberKind kind) {
534 try { 540 try {
535 Parser parser = new Parser(listener); 541 Parser parser = new Parser(listener);
536 List metadataConstants; 542 List metadataConstants;
537 if (metadata != null) { 543 if (metadata != null) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 fileUri: message.uri, 615 fileUri: message.uri,
610 // We assume this error has already been reported by OutlineBuilder. 616 // We assume this error has already been reported by OutlineBuilder.
611 silent: true); 617 silent: true);
612 } 618 }
613 619
614 @override 620 @override
615 void debugEvent(String name) { 621 void debugEvent(String name) {
616 // printEvent(name); 622 // printEvent(name);
617 } 623 }
618 } 624 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698