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

Side by Side Diff: pkg/compiler/lib/src/kernel/constant_visitor.dart

Issue 2669703003: Refactor ConstantExpression/ConstantConstructor to use entities. (Closed)
Patch Set: Created 3 years, 10 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 import 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 6
7 import '../constants/expressions.dart'; 7 import '../constants/expressions.dart';
8 import '../elements/elements.dart' show ConstructorElement;
8 import 'kernel.dart'; 9 import 'kernel.dart';
9 10
10 /// Visitor that converts a [ConstantExpression] into a kernel constant 11 /// Visitor that converts a [ConstantExpression] into a kernel constant
11 /// expression. 12 /// expression.
12 class ConstantVisitor extends ConstantExpressionVisitor<ir.Node, Kernel> { 13 class ConstantVisitor extends ConstantExpressionVisitor<ir.Node, Kernel> {
13 const ConstantVisitor(); 14 const ConstantVisitor();
14 15
15 @override 16 @override
16 ir.Node visitNamed(NamedArgumentReference exp, Kernel kernel) { 17 ir.Node visitNamed(NamedArgumentReference exp, Kernel kernel) {
17 throw new UnsupportedError( 18 throw new UnsupportedError(
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 ir.Node visitBinary(BinaryConstantExpression exp, Kernel kernel) { 72 ir.Node visitBinary(BinaryConstantExpression exp, Kernel kernel) {
72 throw new UnimplementedError('${exp.toStructuredText()} is not supported.'); 73 throw new UnimplementedError('${exp.toStructuredText()} is not supported.');
73 } 74 }
74 75
75 @override 76 @override
76 ir.Node visitFunction(FunctionConstantExpression exp, Kernel kernel) { 77 ir.Node visitFunction(FunctionConstantExpression exp, Kernel kernel) {
77 throw new UnimplementedError('${exp.toStructuredText()} is not supported.'); 78 throw new UnimplementedError('${exp.toStructuredText()} is not supported.');
78 } 79 }
79 80
80 @override 81 @override
81 ir.Node visitVariable(VariableConstantExpression exp, Kernel kernel) { 82 ir.Node visitField(FieldConstantExpression exp, Kernel kernel) {
82 return new ir.StaticGet(kernel.fieldToIr(exp.element)); 83 return new ir.StaticGet(kernel.fieldToIr(exp.element));
83 } 84 }
84 85
85 @override 86 @override
87 ir.Node visitLocalVariable(
88 LocalVariableConstantExpression exp, Kernel kernel) {
89 throw new UnimplementedError('${exp.toStructuredText()} is not supported.');
90 }
91
92 @override
86 ir.Node visitType(TypeConstantExpression exp, Kernel kernel) { 93 ir.Node visitType(TypeConstantExpression exp, Kernel kernel) {
87 throw new UnimplementedError('${exp.toStructuredText()} is not supported.'); 94 throw new UnimplementedError('${exp.toStructuredText()} is not supported.');
88 } 95 }
89 96
90 @override 97 @override
91 ir.Node visitSymbol(SymbolConstantExpression exp, Kernel kernel) { 98 ir.Node visitSymbol(SymbolConstantExpression exp, Kernel kernel) {
92 throw new UnimplementedError('${exp.toStructuredText()} is not supported.'); 99 throw new UnimplementedError('${exp.toStructuredText()} is not supported.');
93 } 100 }
94 101
95 @override 102 @override
(...skipping 11 matching lines...) Expand all
107 ir.Expression argument = visit(exp.arguments[index], kernel); 114 ir.Expression argument = visit(exp.arguments[index], kernel);
108 if (index < exp.callStructure.positionalArgumentCount) { 115 if (index < exp.callStructure.positionalArgumentCount) {
109 positional.add(argument); 116 positional.add(argument);
110 } else { 117 } else {
111 named.add(new ir.NamedExpression( 118 named.add(new ir.NamedExpression(
112 exp.callStructure.namedArguments[index - positionalCount], 119 exp.callStructure.namedArguments[index - positionalCount],
113 argument)); 120 argument));
114 } 121 }
115 } 122 }
116 ir.Arguments arguments = new ir.Arguments(positional, named: named); 123 ir.Arguments arguments = new ir.Arguments(positional, named: named);
124 ConstructorElement constructor = exp.target;
117 return new ir.ConstructorInvocation( 125 return new ir.ConstructorInvocation(
118 kernel.functionToIr(exp.target), arguments, 126 kernel.functionToIr(constructor), arguments,
119 isConst: true); 127 isConst: true);
120 } 128 }
121 129
122 @override 130 @override
123 ir.Node visitMap(MapConstantExpression exp, Kernel kernel) { 131 ir.Node visitMap(MapConstantExpression exp, Kernel kernel) {
124 throw new UnimplementedError('${exp.toStructuredText()} is not supported.'); 132 throw new UnimplementedError('${exp.toStructuredText()} is not supported.');
125 } 133 }
126 134
127 @override 135 @override
128 ir.Node visitList(ListConstantExpression exp, Kernel kernel) { 136 ir.Node visitList(ListConstantExpression exp, Kernel kernel) {
(...skipping 18 matching lines...) Expand all
147 @override 155 @override
148 ir.Node visitInt(IntConstantExpression exp, Kernel kernel) { 156 ir.Node visitInt(IntConstantExpression exp, Kernel kernel) {
149 return new ir.IntLiteral(exp.primitiveValue); 157 return new ir.IntLiteral(exp.primitiveValue);
150 } 158 }
151 159
152 @override 160 @override
153 ir.Node visitBool(BoolConstantExpression exp, Kernel kernel) { 161 ir.Node visitBool(BoolConstantExpression exp, Kernel kernel) {
154 return new ir.BoolLiteral(exp.primitiveValue); 162 return new ir.BoolLiteral(exp.primitiveValue);
155 } 163 }
156 } 164 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_backend/type_variable_handler.dart ('k') | pkg/compiler/lib/src/kernel/element_adapter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698