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.outline_builder; | 5 library fasta.outline_builder; |
6 | 6 |
7 import 'package:kernel/ast.dart' show ProcedureKind; | 7 import 'package:kernel/ast.dart' show ProcedureKind; |
8 | 8 |
9 import '../fasta_codes.dart' show Message, codeExpectedBlockToSkip; | |
10 | |
11 import '../parser/parser.dart' show FormalParameterType, MemberKind, optional; | |
12 | |
13 import '../parser/identifier_context.dart' show IdentifierContext; | |
14 | |
15 import '../../scanner/token.dart' show Token; | 9 import '../../scanner/token.dart' show Token; |
16 | 10 |
17 import '../util/link.dart' show Link; | 11 import '../builder/builder.dart'; |
18 | 12 |
19 import '../combinator.dart' show Combinator; | 13 import '../combinator.dart' show Combinator; |
20 | 14 |
21 import '../deprecated_problems.dart' show deprecated_internalProblem; | 15 import '../fasta_codes.dart' show Message, codeExpectedBlockToSkip; |
22 | |
23 import '../builder/builder.dart'; | |
24 | 16 |
25 import '../modifier.dart' show abstractMask, externalMask, Modifier; | 17 import '../modifier.dart' show abstractMask, externalMask, Modifier; |
26 | 18 |
27 import 'source_library_builder.dart' show SourceLibraryBuilder; | |
28 | |
29 import 'unhandled_listener.dart' show NullValue, Unhandled, UnhandledListener; | |
30 | |
31 import '../parser/native_support.dart' | |
32 show extractNativeMethodName, removeNativeClause, skipNativeClause; | |
33 | |
34 import '../operator.dart' | 19 import '../operator.dart' |
35 show | 20 show |
36 Operator, | 21 Operator, |
37 operatorFromString, | 22 operatorFromString, |
38 operatorToString, | 23 operatorToString, |
39 operatorRequiredArgumentCount; | 24 operatorRequiredArgumentCount; |
40 | 25 |
| 26 import '../parser/identifier_context.dart' show IdentifierContext; |
| 27 |
| 28 import '../parser/native_support.dart' |
| 29 show extractNativeMethodName, removeNativeClause, skipNativeClause; |
| 30 |
| 31 import '../parser/parser.dart' show FormalParameterType, MemberKind, optional; |
| 32 |
| 33 import '../problems.dart' show unhandled, unimplemented; |
| 34 |
41 import '../quote.dart' show unescapeString; | 35 import '../quote.dart' show unescapeString; |
42 | 36 |
| 37 import '../util/link.dart' show Link; |
| 38 |
| 39 import 'source_library_builder.dart' show SourceLibraryBuilder; |
| 40 |
| 41 import 'unhandled_listener.dart' show NullValue, Unhandled, UnhandledListener; |
| 42 |
43 enum MethodBody { | 43 enum MethodBody { |
44 Abstract, | 44 Abstract, |
45 Regular, | 45 Regular, |
46 RedirectingFactoryBody, | 46 RedirectingFactoryBody, |
47 } | 47 } |
48 | 48 |
49 class OutlineBuilder extends UnhandledListener { | 49 class OutlineBuilder extends UnhandledListener { |
50 final SourceLibraryBuilder library; | 50 final SourceLibraryBuilder library; |
51 | 51 |
52 final bool enableNative; | 52 final bool enableNative; |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 } | 199 } |
200 | 200 |
201 @override | 201 @override |
202 void endLiteralString(int interpolationCount, Token endToken) { | 202 void endLiteralString(int interpolationCount, Token endToken) { |
203 debugEvent("endLiteralString"); | 203 debugEvent("endLiteralString"); |
204 if (interpolationCount == 0) { | 204 if (interpolationCount == 0) { |
205 Token token = pop(); | 205 Token token = pop(); |
206 push(unescapeString(token.lexeme)); | 206 push(unescapeString(token.lexeme)); |
207 push(token.charOffset); | 207 push(token.charOffset); |
208 } else { | 208 } else { |
209 deprecated_internalProblem("String interpolation not implemented."); | 209 unimplemented("string interpolation", endToken.charOffset, uri); |
210 } | 210 } |
211 } | 211 } |
212 | 212 |
213 @override | 213 @override |
214 void handleStringJuxtaposition(int literalCount) { | 214 void handleStringJuxtaposition(int literalCount) { |
215 debugEvent("StringJuxtaposition"); | 215 debugEvent("StringJuxtaposition"); |
216 List<String> list = | 216 List<String> list = |
217 new List<String>.filled(literalCount, null, growable: false); | 217 new List<String>.filled(literalCount, null, growable: false); |
218 int charOffset = -1; | 218 int charOffset = -1; |
219 for (int i = literalCount - 1; i >= 0; i--) { | 219 for (int i = literalCount - 1; i >= 0; i--) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 List<MetadataBuilder> metadata = pop(); | 288 List<MetadataBuilder> metadata = pop(); |
289 library.addClass(metadata, modifiers, name, typeVariables, supertype, | 289 library.addClass(metadata, modifiers, name, typeVariables, supertype, |
290 interfaces, charOffset); | 290 interfaces, charOffset); |
291 checkEmpty(beginToken.charOffset); | 291 checkEmpty(beginToken.charOffset); |
292 } | 292 } |
293 | 293 |
294 ProcedureKind computeProcedureKind(Token token) { | 294 ProcedureKind computeProcedureKind(Token token) { |
295 if (token == null) return ProcedureKind.Method; | 295 if (token == null) return ProcedureKind.Method; |
296 if (optional("get", token)) return ProcedureKind.Getter; | 296 if (optional("get", token)) return ProcedureKind.Getter; |
297 if (optional("set", token)) return ProcedureKind.Setter; | 297 if (optional("set", token)) return ProcedureKind.Setter; |
298 return deprecated_internalProblem("Unhandled: ${token.lexeme}"); | 298 return unhandled( |
| 299 token.lexeme, "computeProcedureKind", token.charOffset, uri); |
299 } | 300 } |
300 | 301 |
301 @override | 302 @override |
302 void beginTopLevelMethod(Token token, Token name) { | 303 void beginTopLevelMethod(Token token, Token name) { |
303 library.beginNestedDeclaration(name.lexeme, hasMembers: false); | 304 library.beginNestedDeclaration(name.lexeme, hasMembers: false); |
304 } | 305 } |
305 | 306 |
306 @override | 307 @override |
307 void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) { | 308 void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) { |
308 debugEvent("endTopLevelMethod"); | 309 debugEvent("endTopLevelMethod"); |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
875 Link<Token> handleMemberName(Link<Token> identifiers) { | 876 Link<Token> handleMemberName(Link<Token> identifiers) { |
876 if (!enableNative || identifiers.isEmpty) return identifiers; | 877 if (!enableNative || identifiers.isEmpty) return identifiers; |
877 return removeNativeClause(identifiers, stringExpectedAfterNative); | 878 return removeNativeClause(identifiers, stringExpectedAfterNative); |
878 } | 879 } |
879 | 880 |
880 @override | 881 @override |
881 void debugEvent(String name) { | 882 void debugEvent(String name) { |
882 // printEvent(name); | 883 // printEvent(name); |
883 } | 884 } |
884 } | 885 } |
OLD | NEW |