OLD | NEW |
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/type_inference/type_promotion.dart'; |
5 import 'package:kernel/ast.dart'; | 6 import 'package:kernel/ast.dart'; |
6 | 7 |
7 import '../builder/ast_factory.dart'; | 8 import '../builder/ast_factory.dart'; |
8 import 'kernel_shadow_ast.dart'; | 9 import 'kernel_shadow_ast.dart'; |
9 | 10 |
10 /// Concrete implementation of [builder.AstFactory] for building a kernel AST. | 11 /// Concrete implementation of [builder.AstFactory] for building a kernel AST. |
11 class KernelAstFactory implements AstFactory { | 12 class KernelAstFactory implements AstFactory<VariableDeclaration> { |
12 @override | 13 @override |
13 KernelBlock block(List<Statement> statements, int charOffset) { | 14 KernelBlock block(List<Statement> statements, int charOffset) { |
14 return new KernelBlock(statements)..fileOffset = charOffset; | 15 return new KernelBlock(statements)..fileOffset = charOffset; |
15 } | 16 } |
16 | 17 |
17 @override | 18 @override |
| 19 ExpressionStatement expressionStatement(Expression expression) { |
| 20 return new KernelExpressionStatement(expression); |
| 21 } |
| 22 |
| 23 @override |
18 Field field(Name name, int charOffset, {String fileUri}) { | 24 Field field(Name name, int charOffset, {String fileUri}) { |
19 return new KernelField(name, fileUri: fileUri)..fileOffset = charOffset; | 25 return new KernelField(name, fileUri: fileUri)..fileOffset = charOffset; |
20 } | 26 } |
21 | 27 |
22 @override | 28 @override |
| 29 FunctionExpression functionExpression(FunctionNode function, int charOffset) { |
| 30 return new KernelFunctionExpression(function)..fileOffset = charOffset; |
| 31 } |
| 32 |
| 33 @override |
| 34 Statement ifStatement( |
| 35 Expression condition, Statement thenPart, Statement elsePart) { |
| 36 return new KernelIfStatement(condition, thenPart, elsePart); |
| 37 } |
| 38 |
| 39 @override |
23 KernelIntLiteral intLiteral(value, int charOffset) { | 40 KernelIntLiteral intLiteral(value, int charOffset) { |
24 return new KernelIntLiteral(value)..fileOffset = charOffset; | 41 return new KernelIntLiteral(value)..fileOffset = charOffset; |
25 } | 42 } |
26 | 43 |
27 @override | 44 @override |
| 45 Expression isExpression( |
| 46 Expression expression, DartType type, int charOffset, bool isInverted) { |
| 47 if (isInverted) { |
| 48 return new KernelIsNotExpression(expression, type, charOffset); |
| 49 } else { |
| 50 return new KernelIsExpression(expression, type)..fileOffset = charOffset; |
| 51 } |
| 52 } |
| 53 |
| 54 @override |
28 KernelListLiteral listLiteral(List<Expression> expressions, | 55 KernelListLiteral listLiteral(List<Expression> expressions, |
29 DartType typeArgument, bool isConst, int charOffset) { | 56 DartType typeArgument, bool isConst, int charOffset) { |
30 return new KernelListLiteral(expressions, | 57 return new KernelListLiteral(expressions, |
31 typeArgument: typeArgument, isConst: isConst) | 58 typeArgument: typeArgument, isConst: isConst) |
32 ..fileOffset = charOffset; | 59 ..fileOffset = charOffset; |
33 } | 60 } |
34 | 61 |
35 @override | 62 @override |
36 KernelNullLiteral nullLiteral(int charOffset) { | 63 KernelNullLiteral nullLiteral(int charOffset) { |
37 return new KernelNullLiteral()..fileOffset = charOffset; | 64 return new KernelNullLiteral()..fileOffset = charOffset; |
38 } | 65 } |
39 | 66 |
40 @override | 67 @override |
41 KernelReturnStatement returnStatement(Expression expression, int charOffset) { | 68 KernelReturnStatement returnStatement(Expression expression, int charOffset) { |
42 return new KernelReturnStatement(expression)..fileOffset = charOffset; | 69 return new KernelReturnStatement(expression)..fileOffset = charOffset; |
43 } | 70 } |
44 | 71 |
45 @override | 72 @override |
46 StaticGet staticGet(Member readTarget, int offset) { | 73 StaticGet staticGet(Member readTarget, int offset) { |
47 return new KernelStaticGet(readTarget)..fileOffset = offset; | 74 return new KernelStaticGet(readTarget)..fileOffset = offset; |
48 } | 75 } |
49 | 76 |
50 @override | 77 @override |
51 KernelVariableDeclaration variableDeclaration(String name, int charOffset, | 78 VariableDeclaration variableDeclaration( |
| 79 String name, int charOffset, int functionNestingLevel, |
52 {DartType type, | 80 {DartType type, |
53 Expression initializer, | 81 Expression initializer, |
54 int equalsCharOffset = TreeNode.noOffset, | 82 int equalsCharOffset = TreeNode.noOffset, |
55 bool isFinal: false, | 83 bool isFinal: false, |
56 bool isConst: false}) { | 84 bool isConst: false}) { |
57 return new KernelVariableDeclaration(name, | 85 return new KernelVariableDeclaration(name, functionNestingLevel, |
58 type: type, | 86 type: type, |
59 initializer: initializer, | 87 initializer: initializer, |
60 isFinal: isFinal, | 88 isFinal: isFinal, |
61 isConst: isConst) | 89 isConst: isConst) |
62 ..fileOffset = charOffset | 90 ..fileOffset = charOffset |
63 ..fileEqualsOffset = equalsCharOffset; | 91 ..fileEqualsOffset = equalsCharOffset; |
64 } | 92 } |
| 93 |
| 94 @override |
| 95 VariableGet variableGet( |
| 96 VariableDeclaration variable, |
| 97 TypePromotionFact<VariableDeclaration> fact, |
| 98 TypePromotionScope scope, |
| 99 int charOffset) { |
| 100 return new KernelVariableGet(variable, fact, scope) |
| 101 ..fileOffset = charOffset; |
| 102 } |
65 } | 103 } |
OLD | NEW |