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/ast/token.dart' show Token, TokenType; | 11 import 'package:analyzer/dart/ast/token.dart' show Token, TokenType; |
12 import 'package:analyzer/dart/element/element.dart' show Element; | 12 import 'package:analyzer/dart/element/element.dart' show Element; |
13 import 'package:front_end/src/fasta/parser/parser.dart' | 13 import 'package:front_end/src/fasta/parser/parser.dart' |
14 show FormalParameterType, MemberKind, Parser; | 14 show Assert, FormalParameterType, MemberKind, Parser; |
15 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; | 15 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; |
16 import 'package:front_end/src/fasta/scanner/token.dart' show CommentToken; | 16 import 'package:front_end/src/fasta/scanner/token.dart' show CommentToken; |
17 import 'package:front_end/src/scanner/token.dart' as analyzer; | 17 import 'package:front_end/src/scanner/token.dart' as analyzer; |
18 | 18 |
19 import 'package:front_end/src/fasta/errors.dart' show internalError; | 19 import 'package:front_end/src/fasta/errors.dart' show internalError; |
20 import 'package:front_end/src/fasta/fasta_codes.dart' | 20 import 'package:front_end/src/fasta/fasta_codes.dart' |
21 show FastaMessage, codeExpectedExpression, codeExpectedFunctionBody; | 21 show FastaMessage, codeExpectedExpression, codeExpectedFunctionBody; |
22 import 'package:front_end/src/fasta/kernel/kernel_builder.dart' | 22 import 'package:front_end/src/fasta/kernel/kernel_builder.dart' |
23 show Builder, KernelLibraryBuilder, ProcedureBuilder, Scope; | 23 show Builder, KernelLibraryBuilder, ProcedureBuilder, Scope; |
24 import 'package:front_end/src/fasta/parser/identifier_context.dart' | 24 import 'package:front_end/src/fasta/parser/identifier_context.dart' |
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 debugEvent("Type"); | 675 debugEvent("Type"); |
676 TypeArgumentList arguments = pop(); | 676 TypeArgumentList arguments = pop(); |
677 Identifier name = pop(); | 677 Identifier name = pop(); |
678 // TODO(paulberry,ahe): what if the type doesn't resolve to a class | 678 // TODO(paulberry,ahe): what if the type doesn't resolve to a class |
679 // element? Try to share code with BodyBuilder.builderToFirstExpression. | 679 // element? Try to share code with BodyBuilder.builderToFirstExpression. |
680 KernelClassElement cls = name.staticElement; | 680 KernelClassElement cls = name.staticElement; |
681 push(ast.typeName(name, arguments)..type = cls?.rawType); | 681 push(ast.typeName(name, arguments)..type = cls?.rawType); |
682 } | 682 } |
683 | 683 |
684 @override | 684 @override |
685 void handleAssertStatement(Token assertKeyword, Token leftParenthesis, | 685 void endAssert(Token assertKeyword, Assert kind, Token leftParenthesis, |
686 Token comma, Token rightParenthesis, Token semicolon) { | 686 Token comma, Token rightParenthesis, Token semicolon) { |
687 debugEvent("AssertStatement"); | 687 debugEvent("Assert"); |
688 Expression message = popIfNotNull(comma); | 688 Expression message = popIfNotNull(comma); |
689 Expression condition = pop(); | 689 Expression condition = pop(); |
690 push(ast.assertStatement(assertKeyword, leftParenthesis, condition, comma, | 690 push(ast.assertStatement(assertKeyword, leftParenthesis, condition, comma, |
691 message, rightParenthesis, semicolon)); | 691 message, rightParenthesis, semicolon)); |
692 } | 692 } |
693 | 693 |
694 void handleAsOperator(Token operator, Token endToken) { | 694 void handleAsOperator(Token operator, Token endToken) { |
695 debugEvent("AsOperator"); | 695 debugEvent("AsOperator"); |
696 TypeAnnotation type = pop(); | 696 TypeAnnotation type = pop(); |
697 Expression expression = pop(); | 697 Expression expression = pop(); |
(...skipping 1323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2021 } else if (identical('var', s)) { | 2021 } else if (identical('var', s)) { |
2022 finalConstOrVarKeyword = token; | 2022 finalConstOrVarKeyword = token; |
2023 } else if (identical('covariant', s)) { | 2023 } else if (identical('covariant', s)) { |
2024 covariantKeyword = token; | 2024 covariantKeyword = token; |
2025 } else { | 2025 } else { |
2026 internalError('Unhandled modifier: $s'); | 2026 internalError('Unhandled modifier: $s'); |
2027 } | 2027 } |
2028 } | 2028 } |
2029 } | 2029 } |
2030 } | 2030 } |
OLD | NEW |