| 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 |