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

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/kernel_ast_factory.dart

Issue 2841863002: Change accessors and AstFactory to use tokens rather than file offsets. (Closed)
Patch Set: Address code review comments, rebase Created 3 years, 7 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 import 'package:front_end/src/fasta/kernel/utils.dart';
6 import 'package:front_end/src/fasta/scanner/token.dart' show Token;
5 import 'package:front_end/src/fasta/type_inference/type_promotion.dart'; 7 import 'package:front_end/src/fasta/type_inference/type_promotion.dart';
6 import 'package:kernel/ast.dart'; 8 import 'package:kernel/ast.dart';
7 9
8 import '../builder/ast_factory.dart'; 10 import '../builder/ast_factory.dart';
9 import 'kernel_shadow_ast.dart'; 11 import 'kernel_shadow_ast.dart';
10 12
11 /// Concrete implementation of [builder.AstFactory] for building a kernel AST. 13 /// Concrete implementation of [builder.AstFactory] for building a kernel AST.
12 class KernelAstFactory implements AstFactory<VariableDeclaration> { 14 class KernelAstFactory implements AstFactory<VariableDeclaration> {
13 @override 15 @override
14 KernelBlock block(List<Statement> statements, int charOffset) { 16 KernelBlock block(List<Statement> statements, Token beginToken) {
15 return new KernelBlock(statements)..fileOffset = charOffset; 17 return new KernelBlock(statements)..fileOffset = offsetForToken(beginToken);
16 } 18 }
17 19
18 @override 20 @override
19 ExpressionStatement expressionStatement(Expression expression) { 21 ExpressionStatement expressionStatement(Expression expression) {
20 return new KernelExpressionStatement(expression); 22 return new KernelExpressionStatement(expression);
21 } 23 }
22 24
23 @override 25 @override
24 Field field(Name name, int charOffset, {String fileUri}) { 26 Field field(Name name, int charOffset, {String fileUri}) {
25 return new KernelField(name, fileUri: fileUri)..fileOffset = charOffset; 27 return new KernelField(name, fileUri: fileUri)..fileOffset = charOffset;
26 } 28 }
27 29
28 @override 30 @override
29 FunctionExpression functionExpression(FunctionNode function, int charOffset) { 31 FunctionExpression functionExpression(FunctionNode function, Token token) {
30 return new KernelFunctionExpression(function)..fileOffset = charOffset; 32 return new KernelFunctionExpression(function)
33 ..fileOffset = offsetForToken(token);
31 } 34 }
32 35
33 @override 36 @override
34 Statement ifStatement( 37 Statement ifStatement(
35 Expression condition, Statement thenPart, Statement elsePart) { 38 Expression condition, Statement thenPart, Statement elsePart) {
36 return new KernelIfStatement(condition, thenPart, elsePart); 39 return new KernelIfStatement(condition, thenPart, elsePart);
37 } 40 }
38 41
39 @override 42 @override
40 KernelIntLiteral intLiteral(value, int charOffset) { 43 KernelIntLiteral intLiteral(value, Token token) {
41 return new KernelIntLiteral(value)..fileOffset = charOffset; 44 return new KernelIntLiteral(value)..fileOffset = offsetForToken(token);
42 } 45 }
43 46
44 @override 47 @override
45 Expression isExpression( 48 Expression isExpression(
46 Expression expression, DartType type, int charOffset, bool isInverted) { 49 Expression expression, DartType type, Token token, bool isInverted) {
47 if (isInverted) { 50 if (isInverted) {
48 return new KernelIsNotExpression(expression, type, charOffset); 51 return new KernelIsNotExpression(expression, type, offsetForToken(token));
49 } else { 52 } else {
50 return new KernelIsExpression(expression, type)..fileOffset = charOffset; 53 return new KernelIsExpression(expression, type)
54 ..fileOffset = offsetForToken(token);
51 } 55 }
52 } 56 }
53 57
54 @override 58 @override
55 KernelListLiteral listLiteral(List<Expression> expressions, 59 KernelListLiteral listLiteral(List<Expression> expressions,
56 DartType typeArgument, bool isConst, int charOffset) { 60 DartType typeArgument, bool isConst, Token token) {
57 return new KernelListLiteral(expressions, 61 return new KernelListLiteral(expressions,
58 typeArgument: typeArgument, isConst: isConst) 62 typeArgument: typeArgument, isConst: isConst)
59 ..fileOffset = charOffset; 63 ..fileOffset = offsetForToken(token);
60 } 64 }
61 65
62 @override 66 @override
63 KernelNullLiteral nullLiteral(int charOffset) { 67 KernelNullLiteral nullLiteral(Token token) {
64 return new KernelNullLiteral()..fileOffset = charOffset; 68 return new KernelNullLiteral()..fileOffset = offsetForToken(token);
65 } 69 }
66 70
67 @override 71 @override
68 KernelReturnStatement returnStatement(Expression expression, int charOffset) { 72 KernelReturnStatement returnStatement(Expression expression, Token token) {
69 return new KernelReturnStatement(expression)..fileOffset = charOffset; 73 return new KernelReturnStatement(expression)
74 ..fileOffset = offsetForToken(token);
70 } 75 }
71 76
72 @override 77 @override
73 StaticGet staticGet(Member readTarget, int offset) { 78 StaticGet staticGet(Member readTarget, Token token) {
74 return new KernelStaticGet(readTarget)..fileOffset = offset; 79 return new KernelStaticGet(readTarget)..fileOffset = offsetForToken(token);
75 } 80 }
76 81
77 @override 82 @override
78 VariableDeclaration variableDeclaration( 83 VariableDeclaration variableDeclaration(
79 String name, int charOffset, int functionNestingLevel, 84 String name, Token token, int functionNestingLevel,
80 {DartType type, 85 {DartType type,
81 Expression initializer, 86 Expression initializer,
82 int equalsCharOffset = TreeNode.noOffset, 87 Token equalsToken,
83 bool isFinal: false, 88 bool isFinal: false,
84 bool isConst: false}) { 89 bool isConst: false}) {
85 return new KernelVariableDeclaration(name, functionNestingLevel, 90 return new KernelVariableDeclaration(name, functionNestingLevel,
86 type: type, 91 type: type,
87 initializer: initializer, 92 initializer: initializer,
88 isFinal: isFinal, 93 isFinal: isFinal,
89 isConst: isConst) 94 isConst: isConst)
90 ..fileOffset = charOffset 95 ..fileOffset = offsetForToken(token)
91 ..fileEqualsOffset = equalsCharOffset; 96 ..fileEqualsOffset = offsetForToken(equalsToken);
92 } 97 }
93 98
94 @override 99 @override
95 VariableGet variableGet( 100 VariableGet variableGet(
96 VariableDeclaration variable, 101 VariableDeclaration variable,
97 TypePromotionFact<VariableDeclaration> fact, 102 TypePromotionFact<VariableDeclaration> fact,
98 TypePromotionScope scope, 103 TypePromotionScope scope,
99 int charOffset) { 104 Token token) {
100 return new KernelVariableGet(variable, fact, scope) 105 return new KernelVariableGet(variable, fact, scope)
101 ..fileOffset = charOffset; 106 ..fileOffset = offsetForToken(token);
102 } 107 }
103 } 108 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/frontend_accessors.dart ('k') | pkg/front_end/lib/src/fasta/kernel/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698