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.analyzer.ast_builder; | 5 library fasta.analyzer.ast_builder; |
6 | 6 |
7 import 'package:analyzer/analyzer.dart'; | 7 import 'package:analyzer/analyzer.dart'; |
8 import 'package:analyzer/dart/ast/ast_factory.dart' show AstFactory; | 8 import 'package:analyzer/dart/ast/ast_factory.dart' show AstFactory; |
9 import 'package:analyzer/dart/ast/standard_ast_factory.dart' as standard; | 9 import 'package:analyzer/dart/ast/standard_ast_factory.dart' as standard; |
10 import 'package:analyzer/dart/ast/token.dart' as analyzer show Token; | 10 import 'package:analyzer/dart/ast/token.dart' as analyzer show Token; |
11 import 'package:analyzer/dart/element/element.dart' show Element; | 11 import 'package:analyzer/dart/element/element.dart' show Element; |
12 import 'package:front_end/src/fasta/parser/parser.dart' | 12 import 'package:front_end/src/fasta/parser/parser.dart' |
13 show FormalParameterType; | 13 show FormalParameterType; |
14 import 'package:front_end/src/fasta/scanner/token.dart' | 14 import 'package:front_end/src/fasta/scanner/token.dart' |
15 show BeginGroupToken, Token; | 15 show BeginGroupToken, Token; |
16 | 16 |
17 import 'package:front_end/src/fasta/errors.dart' show internalError; | 17 import 'package:front_end/src/fasta/errors.dart' show internalError; |
| 18 import 'package:front_end/src/fasta/fasta_codes.dart' |
| 19 show FastaMessage, codeExpectedExpression; |
18 import 'package:front_end/src/fasta/kernel/kernel_builder.dart' | 20 import 'package:front_end/src/fasta/kernel/kernel_builder.dart' |
19 show Builder, KernelLibraryBuilder, ProcedureBuilder; | 21 show Builder, KernelLibraryBuilder, ProcedureBuilder; |
20 import 'package:front_end/src/fasta/parser/identifier_context.dart' | 22 import 'package:front_end/src/fasta/parser/identifier_context.dart' |
21 show IdentifierContext; | 23 show IdentifierContext; |
22 import 'package:front_end/src/fasta/quote.dart'; | 24 import 'package:front_end/src/fasta/quote.dart'; |
23 import 'package:front_end/src/fasta/source/scope_listener.dart' | 25 import 'package:front_end/src/fasta/source/scope_listener.dart' |
24 show JumpTargetKind, NullValue, Scope, ScopeListener; | 26 show JumpTargetKind, NullValue, Scope, ScopeListener; |
25 import 'analyzer.dart' show toKernel; | 27 import 'analyzer.dart' show toKernel; |
26 import 'element_store.dart' | 28 import 'element_store.dart' |
27 show | 29 show |
28 AnalyzerLocalVariableElemment, | 30 AnalyzerLocalVariableElemment, |
29 AnalyzerParameterElement, | 31 AnalyzerParameterElement, |
30 ElementStore, | 32 ElementStore, |
31 KernelClassElement; | 33 KernelClassElement; |
32 import 'package:analyzer/src/dart/error/syntactic_errors.dart'; | 34 import 'package:analyzer/src/dart/error/syntactic_errors.dart'; |
33 import 'package:front_end/src/fasta/parser/error_kind.dart'; | |
34 import 'token_utils.dart' show toAnalyzerToken, toAnalyzerCommentToken; | 35 import 'token_utils.dart' show toAnalyzerToken, toAnalyzerCommentToken; |
35 | 36 |
36 class AstBuilder extends ScopeListener { | 37 class AstBuilder extends ScopeListener { |
37 final AstFactory ast = standard.astFactory; | 38 final AstFactory ast = standard.astFactory; |
38 | 39 |
39 final ErrorReporter errorReporter; | 40 final ErrorReporter errorReporter; |
40 final KernelLibraryBuilder library; | 41 final KernelLibraryBuilder library; |
41 final Builder member; | 42 final Builder member; |
42 final ElementStore elementStore; | 43 final ElementStore elementStore; |
43 | 44 |
(...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1039 toAnalyzerToken(closeCurlyBracket))); | 1040 toAnalyzerToken(closeCurlyBracket))); |
1040 } | 1041 } |
1041 } | 1042 } |
1042 | 1043 |
1043 @override | 1044 @override |
1044 void handleInvalidExpression(Token token) { | 1045 void handleInvalidExpression(Token token) { |
1045 debugEvent("InvalidExpression"); | 1046 debugEvent("InvalidExpression"); |
1046 } | 1047 } |
1047 | 1048 |
1048 @override | 1049 @override |
1049 Token handleUnrecoverableError(Token token, ErrorKind kind, Map arguments) { | 1050 Token handleUnrecoverableError(Token token, FastaMessage message) { |
1050 if (kind == ErrorKind.ExpectedExpression) { | 1051 if (message.code == codeExpectedExpression) { |
1051 String lexeme = token.lexeme; | 1052 String lexeme = token.lexeme; |
1052 if (identical('async', lexeme) || identical('yield', lexeme)) { | 1053 if (identical('async', lexeme) || identical('yield', lexeme)) { |
1053 errorReporter?.reportErrorForOffset( | 1054 errorReporter?.reportErrorForOffset( |
1054 ParserErrorCode.ASYNC_KEYWORD_USED_AS_IDENTIFIER, | 1055 ParserErrorCode.ASYNC_KEYWORD_USED_AS_IDENTIFIER, |
1055 token.charOffset, | 1056 token.charOffset, |
1056 token.charCount); | 1057 token.charCount); |
1057 push(ast.simpleIdentifier(toAnalyzerToken(token))); | 1058 push(ast.simpleIdentifier(toAnalyzerToken(token))); |
1058 return token; | 1059 return token; |
1059 } | 1060 } |
1060 } | 1061 } |
1061 return super.handleUnrecoverableError(token, kind, arguments); | 1062 return super.handleUnrecoverableError(token, message); |
1062 } | 1063 } |
1063 | 1064 |
1064 void handleUnaryPrefixExpression(Token token) { | 1065 void handleUnaryPrefixExpression(Token token) { |
1065 debugEvent("UnaryPrefixExpression"); | 1066 debugEvent("UnaryPrefixExpression"); |
1066 push(ast.prefixExpression(toAnalyzerToken(token), pop())); | 1067 push(ast.prefixExpression(toAnalyzerToken(token), pop())); |
1067 } | 1068 } |
1068 | 1069 |
1069 void handleUnaryPrefixAssignmentExpression(Token token) { | 1070 void handleUnaryPrefixAssignmentExpression(Token token) { |
1070 debugEvent("UnaryPrefixAssignmentExpression"); | 1071 debugEvent("UnaryPrefixAssignmentExpression"); |
1071 push(ast.prefixExpression(toAnalyzerToken(token), pop())); | 1072 push(ast.prefixExpression(toAnalyzerToken(token), pop())); |
(...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1944 } else if (identical('static', s)) { | 1945 } else if (identical('static', s)) { |
1945 staticKeyword = token; | 1946 staticKeyword = token; |
1946 } else if (identical('var', s)) { | 1947 } else if (identical('var', s)) { |
1947 finalConstOrVarKeyword = token; | 1948 finalConstOrVarKeyword = token; |
1948 } else { | 1949 } else { |
1949 internalError('Unhandled modifier: $s'); | 1950 internalError('Unhandled modifier: $s'); |
1950 } | 1951 } |
1951 } | 1952 } |
1952 } | 1953 } |
1953 } | 1954 } |
OLD | NEW |