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

Side by Side Diff: pkg/compiler/lib/src/resolution/send_resolver.dart

Issue 1152903003: Create SendStructure for unary and binary in resolution. (Closed) Base URL: https://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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 part of dart2js.semantics_visitor; 5 part of dart2js.semantics_visitor;
6 6
7 enum SendStructureKind { 7 enum SendStructureKind {
8 GET, 8 GET,
9 SET, 9 SET,
10 INVOKE, 10 INVOKE,
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 UnaryOperator unaryOperator; 215 UnaryOperator unaryOperator;
216 BinaryOperator binaryOperator; 216 BinaryOperator binaryOperator;
217 IncDecOperator incDecOperator; 217 IncDecOperator incDecOperator;
218 218
219 if (node.isOperator) { 219 if (node.isOperator) {
220 String operatorText = node.selector.asOperator().source; 220 String operatorText = node.selector.asOperator().source;
221 if (operatorText == 'is') { 221 if (operatorText == 'is') {
222 return internalError(node, "Unexpected is test."); 222 return internalError(node, "Unexpected is test.");
223 } else if (operatorText == 'as') { 223 } else if (operatorText == 'as') {
224 return internalError(node, "Unexpected as cast."); 224 return internalError(node, "Unexpected as cast.");
225 return new AsStructure(elements.getType(node.arguments.single));
226 } else if (operatorText == '&&') { 225 } else if (operatorText == '&&') {
227 return internalError(node, "Unexpected logical and."); 226 return internalError(node, "Unexpected logical and.");
228 return const LogicalAndStructure();
229 } else if (operatorText == '||') { 227 } else if (operatorText == '||') {
230 return internalError(node, "Unexpected logical or."); 228 return internalError(node, "Unexpected logical or.");
231 } 229 }
232 } 230 }
233 231
234 SendStructureKind kind; 232 SendStructureKind kind;
235 233
236 if (node.asSendSet() != null) { 234 if (node.asSendSet() != null) {
237 SendSet sendSet = node.asSendSet(); 235 SendSet sendSet = node.asSendSet();
238 String operatorText = sendSet.assignmentOperator.source; 236 String operatorText = sendSet.assignmentOperator.source;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 // TODO(johnniwinther): Should local function also be handled here? 348 // TODO(johnniwinther): Should local function also be handled here?
351 if (!selector.callStructure.signatureApplies(semantics.element)) { 349 if (!selector.callStructure.signatureApplies(semantics.element)) {
352 return new IncompatibleInvokeStructure(semantics, selector); 350 return new IncompatibleInvokeStructure(semantics, selector);
353 } 351 }
354 break; 352 break;
355 default: 353 default:
356 break; 354 break;
357 } 355 }
358 return new InvokeStructure(semantics, selector); 356 return new InvokeStructure(semantics, selector);
359 case SendStructureKind.UNARY: 357 case SendStructureKind.UNARY:
360 return new UnaryStructure(semantics, unaryOperator, selector); 358 return internalError(node, "Unexpected unary.");
361 case SendStructureKind.NOT: 359 case SendStructureKind.NOT:
362 assert(selector == null); 360 return internalError(node, "Unexpected not.");
363 return new NotStructure(semantics, selector);
364 case SendStructureKind.BINARY: 361 case SendStructureKind.BINARY:
365 return new BinaryStructure(semantics, binaryOperator, selector); 362 return internalError(node, "Unexpected binary.");
366 case SendStructureKind.INDEX: 363 case SendStructureKind.INDEX:
367 return new IndexStructure(semantics, selector); 364 return internalError(node, "Unexpected index.");
368 case SendStructureKind.EQ: 365 case SendStructureKind.EQ:
369 return new EqualsStructure(semantics, selector); 366 return internalError(node, "Unexpected equals.");
370 case SendStructureKind.NOT_EQ: 367 case SendStructureKind.NOT_EQ:
371 return new NotEqualsStructure(semantics, selector); 368 return internalError(node, "Unexpected not equals.");
372 case SendStructureKind.COMPOUND: 369 case SendStructureKind.COMPOUND:
373 Selector getterSelector = 370 Selector getterSelector =
374 elements.getGetterSelectorInComplexSendSet(node); 371 elements.getGetterSelectorInComplexSendSet(node);
375 return new CompoundStructure( 372 return new CompoundStructure(
376 semantics, 373 semantics,
377 assignmentOperator, 374 assignmentOperator,
378 getterSelector, 375 getterSelector,
379 selector); 376 selector);
380 case SendStructureKind.INDEX_SET: 377 case SendStructureKind.INDEX_SET:
381 return new IndexSetStructure(semantics, selector); 378 return new IndexSetStructure(semantics, selector);
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 return internalError(node, "Unexpected variable $element."); 932 return internalError(node, "Unexpected variable $element.");
936 } 933 }
937 if (element.isConst) { 934 if (element.isConst) {
938 ConstantExpression constant = elements.getConstant(element.initializer); 935 ConstantExpression constant = elements.getConstant(element.initializer);
939 return new ConstantVariableStructure(kind, node, element, constant); 936 return new ConstantVariableStructure(kind, node, element, constant);
940 } else { 937 } else {
941 return new NonConstantVariableStructure(kind, node, element); 938 return new NonConstantVariableStructure(kind, node, element);
942 } 939 }
943 } 940 }
944 } 941 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698