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

Side by Side Diff: pkg/analyzer/lib/src/fasta/ast_builder.dart

Issue 2981693002: Start copying resolution/inference data from front end to analyzer ASTs. (Closed)
Patch Set: Address code review comments. 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.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;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 bool parseGenericMethodComments = false; 55 bool parseGenericMethodComments = false;
56 56
57 /// The name of the class currently being parsed, or `null` if no class is 57 /// The name of the class currently being parsed, or `null` if no class is
58 /// being parsed. 58 /// being parsed.
59 String className; 59 String className;
60 60
61 /// If true, this is building a full AST. Otherwise, only create method 61 /// If true, this is building a full AST. Otherwise, only create method
62 /// bodies. 62 /// bodies.
63 final bool isFullAst; 63 final bool isFullAst;
64 64
65 final bool generateKernel;
66
65 AstBuilder(this.errorReporter, this.library, this.member, this.elementStore, 67 AstBuilder(this.errorReporter, this.library, this.member, this.elementStore,
66 Scope scope, this.isFullAst, 68 Scope scope, this.isFullAst, this.generateKernel,
67 [Uri uri]) 69 [Uri uri])
68 : uri = uri ?? library.fileUri, 70 : uri = uri ?? library.fileUri,
69 super(scope); 71 super(scope);
70 72
71 createJumpTarget(JumpTargetKind kind, int charOffset) { 73 createJumpTarget(JumpTargetKind kind, int charOffset) {
72 // TODO(ahe): Implement jump targets. 74 // TODO(ahe): Implement jump targets.
73 return null; 75 return null;
74 } 76 }
75 77
76 void beginLiteralString(Token token) { 78 void beginLiteralString(Token token) {
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 void finishFunction(annotations, formals, asyncModifier, FunctionBody body) { 293 void finishFunction(annotations, formals, asyncModifier, FunctionBody body) {
292 debugEvent("finishFunction"); 294 debugEvent("finishFunction");
293 Statement bodyStatement; 295 Statement bodyStatement;
294 if (body is EmptyFunctionBody) { 296 if (body is EmptyFunctionBody) {
295 bodyStatement = ast.emptyStatement(body.semicolon); 297 bodyStatement = ast.emptyStatement(body.semicolon);
296 } else if (body is ExpressionFunctionBody) { 298 } else if (body is ExpressionFunctionBody) {
297 bodyStatement = ast.returnStatement(null, body.expression, null); 299 bodyStatement = ast.returnStatement(null, body.expression, null);
298 } else { 300 } else {
299 bodyStatement = (body as BlockFunctionBody).block; 301 bodyStatement = (body as BlockFunctionBody).block;
300 } 302 }
301 var kernel = toKernel(bodyStatement, elementStore, library.library, scope); 303 if (generateKernel) {
302 if (member is ProcedureBuilder) { 304 var kernel =
303 ProcedureBuilder builder = member; 305 toKernel(bodyStatement, elementStore, library.library, scope);
304 builder.body = kernel; 306 if (member is ProcedureBuilder) {
305 } else { 307 ProcedureBuilder builder = member;
306 unexpected("procedure", "${member.runtimeType}", member.charOffset, uri); 308 builder.body = kernel;
309 } else {
310 unexpected(
311 "procedure", "${member.runtimeType}", member.charOffset, uri);
312 }
307 } 313 }
308 } 314 }
309 315
310 void beginCascade(Token token) { 316 void beginCascade(Token token) {
311 debugEvent("beginCascade"); 317 debugEvent("beginCascade");
312 Expression expression = pop(); 318 Expression expression = pop();
313 push(token); 319 push(token);
314 if (expression is CascadeExpression) { 320 if (expression is CascadeExpression) {
315 push(expression); 321 push(expression);
316 } else { 322 } else {
(...skipping 1704 matching lines...) Expand 10 before | Expand all | Expand 10 after
2021 } else if (identical('var', s)) { 2027 } else if (identical('var', s)) {
2022 finalConstOrVarKeyword = token; 2028 finalConstOrVarKeyword = token;
2023 } else if (identical('covariant', s)) { 2029 } else if (identical('covariant', s)) {
2024 covariantKeyword = token; 2030 covariantKeyword = token;
2025 } else { 2031 } else {
2026 unhandled("$s", "modifier", token.charOffset, null); 2032 unhandled("$s", "modifier", token.charOffset, null);
2027 } 2033 }
2028 } 2034 }
2029 } 2035 }
2030 } 2036 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698