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

Side by Side Diff: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart

Issue 1161793002: Revert "dart2js cps: 'is' checks on types with type arguments." (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library tree_ir_nodes; 5 library tree_ir_nodes;
6 6
7 import '../constants/expressions.dart'; 7 import '../constants/expressions.dart';
8 import '../constants/values.dart' as values; 8 import '../constants/values.dart' as values;
9 import '../dart_types.dart' show DartType, GenericType, InterfaceType, TypeVaria bleType; 9 import '../dart_types.dart' show DartType, GenericType, InterfaceType, TypeVaria bleType;
10 import '../elements/elements.dart'; 10 import '../elements/elements.dart';
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 final List<LiteralMapEntry> entries; 323 final List<LiteralMapEntry> entries;
324 324
325 LiteralMap(this.type, this.entries); 325 LiteralMap(this.type, this.entries);
326 326
327 accept(ExpressionVisitor visitor) => visitor.visitLiteralMap(this); 327 accept(ExpressionVisitor visitor) => visitor.visitLiteralMap(this);
328 accept1(ExpressionVisitor1 visitor, arg) { 328 accept1(ExpressionVisitor1 visitor, arg) {
329 return visitor.visitLiteralMap(this, arg); 329 return visitor.visitLiteralMap(this, arg);
330 } 330 }
331 } 331 }
332 332
333 /// Given the interceptor for a value, test the value against a type.
333 class TypeOperator extends Expression { 334 class TypeOperator extends Expression {
334 Expression value; 335 Expression receiver;
335 final DartType type; 336 final DartType type;
336 final List<Expression> typeArguments;
337 final bool isTypeTest; 337 final bool isTypeTest;
338 338
339 TypeOperator(this.value, this.type, this.typeArguments, 339 TypeOperator(this.receiver, this.type, {bool this.isTypeTest});
340 {bool this.isTypeTest});
341 340
342 accept(ExpressionVisitor visitor) => visitor.visitTypeOperator(this); 341 accept(ExpressionVisitor visitor) => visitor.visitTypeOperator(this);
343 accept1(ExpressionVisitor1 visitor, arg) { 342 accept1(ExpressionVisitor1 visitor, arg) {
344 return visitor.visitTypeOperator(this, arg); 343 return visitor.visitTypeOperator(this, arg);
345 } 344 }
346 345
347 String get operator => isTypeTest ? 'is' : 'as'; 346 String get operator => isTypeTest ? 'is' : 'as';
348 } 347 }
349 348
350 /// A conditional expression. 349 /// A conditional expression.
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 } 1150 }
1152 1151
1153 visitLiteralMap(LiteralMap node) { 1152 visitLiteralMap(LiteralMap node) {
1154 node.entries.forEach((LiteralMapEntry entry) { 1153 node.entries.forEach((LiteralMapEntry entry) {
1155 visitExpression(entry.key); 1154 visitExpression(entry.key);
1156 visitExpression(entry.value); 1155 visitExpression(entry.value);
1157 }); 1156 });
1158 } 1157 }
1159 1158
1160 visitTypeOperator(TypeOperator node) { 1159 visitTypeOperator(TypeOperator node) {
1161 visitExpression(node.value); 1160 visitExpression(node.receiver);
1162 node.typeArguments.forEach(visitExpression);
1163 } 1161 }
1164 1162
1165 visitFunctionExpression(FunctionExpression node) { 1163 visitFunctionExpression(FunctionExpression node) {
1166 visitInnerFunction(node.definition); 1164 visitInnerFunction(node.definition);
1167 } 1165 }
1168 1166
1169 visitLabeledStatement(LabeledStatement node) { 1167 visitLabeledStatement(LabeledStatement node) {
1170 visitStatement(node.body); 1168 visitStatement(node.body);
1171 visitStatement(node.next); 1169 visitStatement(node.next);
1172 } 1170 }
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1344 1342
1345 visitLiteralMap(LiteralMap node) { 1343 visitLiteralMap(LiteralMap node) {
1346 node.entries.forEach((LiteralMapEntry entry) { 1344 node.entries.forEach((LiteralMapEntry entry) {
1347 entry.key = visitExpression(entry.key); 1345 entry.key = visitExpression(entry.key);
1348 entry.value = visitExpression(entry.value); 1346 entry.value = visitExpression(entry.value);
1349 }); 1347 });
1350 return node; 1348 return node;
1351 } 1349 }
1352 1350
1353 visitTypeOperator(TypeOperator node) { 1351 visitTypeOperator(TypeOperator node) {
1354 node.value = visitExpression(node.value); 1352 node.receiver = visitExpression(node.receiver);
1355 _replaceExpressions(node.typeArguments);
1356 return node; 1353 return node;
1357 } 1354 }
1358 1355
1359 visitFunctionExpression(FunctionExpression node) { 1356 visitFunctionExpression(FunctionExpression node) {
1360 visitInnerFunction(node.definition); 1357 visitInnerFunction(node.definition);
1361 return node; 1358 return node;
1362 } 1359 }
1363 1360
1364 visitLabeledStatement(LabeledStatement node) { 1361 visitLabeledStatement(LabeledStatement node) {
1365 node.body = visitStatement(node.body); 1362 node.body = visitStatement(node.body);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 visitTypeExpression(TypeExpression node) { 1455 visitTypeExpression(TypeExpression node) {
1459 _replaceExpressions(node.arguments); 1456 _replaceExpressions(node.arguments);
1460 return node; 1457 return node;
1461 } 1458 }
1462 1459
1463 visitCreateInvocationMirror(CreateInvocationMirror node) { 1460 visitCreateInvocationMirror(CreateInvocationMirror node) {
1464 _replaceExpressions(node.arguments); 1461 _replaceExpressions(node.arguments);
1465 return node; 1462 return node;
1466 } 1463 }
1467 } 1464 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart ('k') | pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698