OLD | NEW |
(Empty) | |
| 1 import 'package:kernel/ast.dart' as kernel; |
| 2 import '../builder/shadow_ast.dart' as builder; |
| 3 import 'package:kernel/ast.dart' show DartType; |
| 4 |
| 5 class Block extends kernel.Block with builder.Block implements Statement { |
| 6 Block(List<Statement> statements) : super(statements); |
| 7 |
| 8 @override |
| 9 List<Statement> get shadowStatements => statements; |
| 10 } |
| 11 |
| 12 abstract class Expression implements kernel.Expression, builder.Expression {} |
| 13 |
| 14 class FunctionExpression extends kernel.FunctionExpression |
| 15 with builder.FunctionExpression |
| 16 implements Expression { |
| 17 FunctionExpression(kernel.FunctionNode function) : super(function); |
| 18 |
| 19 @override |
| 20 Statement get shadowBody => function.body; |
| 21 |
| 22 @override |
| 23 set shadowInferredReturnType(DartType type) { |
| 24 function.returnType = type; |
| 25 } |
| 26 |
| 27 @override |
| 28 bool get shadowIsAsync { |
| 29 // TODO(paulberry): is there a helper function in kernel that does this? |
| 30 var asyncMarker = function.asyncMarker; |
| 31 return asyncMarker == kernel.AsyncMarker.Async || |
| 32 asyncMarker == kernel.AsyncMarker.AsyncStar; |
| 33 } |
| 34 |
| 35 @override |
| 36 bool get shadowIsExpressionFunction => |
| 37 function.body is kernel.ReturnStatement; |
| 38 |
| 39 @override |
| 40 bool get shadowIsGenerator { |
| 41 // TODO(paulberry): is there a helper function in kernel that does this? |
| 42 var asyncMarker = function.asyncMarker; |
| 43 return asyncMarker == kernel.AsyncMarker.SyncStar || |
| 44 asyncMarker == kernel.AsyncMarker.AsyncStar; |
| 45 } |
| 46 |
| 47 @override |
| 48 DartType shadowMakeFunctionType() { |
| 49 return function.functionType; |
| 50 } |
| 51 } |
| 52 |
| 53 class IntLiteral extends kernel.IntLiteral |
| 54 with builder.IntLiteral |
| 55 implements Expression { |
| 56 IntLiteral(int value) : super(value); |
| 57 } |
| 58 |
| 59 class ListLiteral extends kernel.ListLiteral |
| 60 with builder.ListLiteral |
| 61 implements Expression { |
| 62 DartType _declaredTypeArgument; |
| 63 |
| 64 ListLiteral(List<Expression> expressions, |
| 65 {DartType typeArgument, bool isConst: false}) |
| 66 : _declaredTypeArgument = typeArgument, |
| 67 super.forMixin( |
| 68 expressions, typeArgument ?? const kernel.DynamicType(), isConst); |
| 69 @override |
| 70 kernel.DartType get declaredTypeArgumentForInference => _declaredTypeArgument; |
| 71 |
| 72 @override |
| 73 Iterable<Expression> get expressionsForInference { |
| 74 List<Expression> shadowExpressions = expressions; |
| 75 return shadowExpressions; |
| 76 } |
| 77 |
| 78 @override |
| 79 set inferredTypeArgument(kernel.DartType type) { |
| 80 typeArgument = type; |
| 81 } |
| 82 } |
| 83 |
| 84 class NullLiteral extends kernel.NullLiteral |
| 85 with builder.NullLiteral |
| 86 implements Expression {} |
| 87 |
| 88 class ReturnStatement extends kernel.ReturnStatement |
| 89 with builder.ReturnStatement |
| 90 implements Statement { |
| 91 ReturnStatement([Expression expression]) : super.forMixin(expression); |
| 92 |
| 93 @override |
| 94 Expression get expressionForInference => expression; |
| 95 } |
| 96 |
| 97 abstract class Statement extends kernel.Statement implements builder.Statement { |
| 98 } |
| 99 |
| 100 class VariableDeclaration extends kernel.VariableDeclaration |
| 101 with builder.VariableDeclaration |
| 102 implements Statement { |
| 103 DartType _declaredType; |
| 104 |
| 105 VariableDeclaration(String name, |
| 106 {Expression initializer, |
| 107 DartType type, |
| 108 bool isFinal: false, |
| 109 bool isConst: false}) |
| 110 : _declaredType = type, |
| 111 super.forMixin(name, initializer, type ?? const kernel.DynamicType(), |
| 112 null, isFinal, isConst); |
| 113 |
| 114 @override |
| 115 DartType get shadowDeclaredType => _declaredType; |
| 116 |
| 117 @override |
| 118 kernel.DartType get shadowInferredType => type; |
| 119 |
| 120 @override |
| 121 set shadowInferredType(kernel.DartType type) { |
| 122 super.type = type; |
| 123 } |
| 124 |
| 125 @override |
| 126 Expression get shadowInitializer => initializer; |
| 127 |
| 128 @override |
| 129 set type(kernel.DartType type) { |
| 130 super.type = _declaredType = type; |
| 131 } |
| 132 } |
| 133 |
| 134 class VariableGet extends kernel.VariableGet |
| 135 with builder.VariableGet |
| 136 implements Expression { |
| 137 VariableGet(kernel.VariableDeclaration variable, [DartType promotedType]) |
| 138 : super.forMixin(variable, promotedType); |
| 139 |
| 140 @override |
| 141 VariableDeclaration get shadowDeclaration => variable; |
| 142 } |
OLD | NEW |