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

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

Issue 2768533002: Fasta type inference prototype #2
Patch Set: Merge origin/master Created 3 years, 9 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
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698