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

Side by Side Diff: pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart

Issue 1302313002: Deprecate visitStaticSend in ResolvedVisitor. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Cleanup Created 5 years, 4 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 simple_types_inferrer; 5 library simple_types_inferrer;
6 6
7 import '../closure.dart' show 7 import '../closure.dart' show
8 ClosureClassMap, 8 ClosureClassMap,
9 ClosureScope; 9 ClosureScope;
10 import '../common/names.dart' show 10 import '../common/names.dart' show
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 locals.update(element, parameterType, node); 585 locals.update(element, parameterType, node);
586 }); 586 });
587 ClassElement cls = analyzedElement.enclosingClass; 587 ClassElement cls = analyzedElement.enclosingClass;
588 Spannable spannable = node; 588 Spannable spannable = node;
589 if (analyzedElement.isSynthesized) { 589 if (analyzedElement.isSynthesized) {
590 spannable = analyzedElement; 590 spannable = analyzedElement;
591 ConstructorElement constructor = analyzedElement; 591 ConstructorElement constructor = analyzedElement;
592 synthesizeForwardingCall(spannable, constructor.definingConstructor); 592 synthesizeForwardingCall(spannable, constructor.definingConstructor);
593 } else { 593 } else {
594 visitingInitializers = true; 594 visitingInitializers = true;
595 visit(node.initializers); 595 if (node.initializers != null) {
596 for (ast.Node initializer in node.initializers) {
597 ast.SendSet fieldInitializer = initializer.asSendSet();
598 if (fieldInitializer != null) {
599 handleSendSet(fieldInitializer);
600 } else {
601 Element element = elements[initializer];
602 handleConstructorSend(initializer, element);
603 }
604 }
605 }
596 visitingInitializers = false; 606 visitingInitializers = false;
597 // For a generative constructor like: `Foo();`, we synthesize 607 // For a generative constructor like: `Foo();`, we synthesize
598 // a call to the default super constructor (the one that takes 608 // a call to the default super constructor (the one that takes
599 // no argument). Resolution ensures that such a constructor 609 // no argument). Resolution ensures that such a constructor
600 // exists. 610 // exists.
601 if (!isConstructorRedirect 611 if (!isConstructorRedirect
602 && !seenSuperConstructorCall 612 && !seenSuperConstructorCall
603 && !cls.isObject) { 613 && !cls.isObject) {
604 FunctionElement target = cls.superclass.lookupDefaultConstructor(); 614 FunctionElement target = cls.superclass.lookupDefaultConstructor();
605 ArgumentsTypes arguments = new ArgumentsTypes([], {}); 615 ArgumentsTypes arguments = new ArgumentsTypes([], {});
(...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after
1576 @override 1586 @override
1577 T handleTypeLiteralInvoke(ast.NodeList arguments) { 1587 T handleTypeLiteralInvoke(ast.NodeList arguments) {
1578 // This is reached when users forget to put a `new` in front of a type 1588 // This is reached when users forget to put a `new` in front of a type
1579 // literal. The emitter will generate an actual call (even though it is 1589 // literal. The emitter will generate an actual call (even though it is
1580 // likely invalid), and for that it needs to have the arguments processed 1590 // likely invalid), and for that it needs to have the arguments processed
1581 // as well. 1591 // as well.
1582 analyzeArguments(arguments.nodes); 1592 analyzeArguments(arguments.nodes);
1583 return super.handleTypeLiteralInvoke(arguments); 1593 return super.handleTypeLiteralInvoke(arguments);
1584 } 1594 }
1585 1595
1586 T visitStaticSend(ast.Send node) {
1587 assert(!elements.isAssert(node));
1588 Element element = elements[node];
1589 return handleConstructorSend(node, element);
1590 }
1591
1592 /// Handle constructor invocation of [element]. 1596 /// Handle constructor invocation of [element].
1593 T handleConstructorSend(ast.Send node, ConstructorElement element) { 1597 T handleConstructorSend(ast.Send node, ConstructorElement element) {
1594 ArgumentsTypes arguments = analyzeArguments(node.arguments); 1598 ArgumentsTypes arguments = analyzeArguments(node.arguments);
1595 if (visitingInitializers) { 1599 if (visitingInitializers) {
1596 if (ast.Initializers.isConstructorRedirect(node)) { 1600 if (ast.Initializers.isConstructorRedirect(node)) {
1597 isConstructorRedirect = true; 1601 isConstructorRedirect = true;
1598 } else if (ast.Initializers.isSuperConstructorCall(node)) { 1602 } else if (ast.Initializers.isSuperConstructorCall(node)) {
1599 seenSuperConstructorCall = true; 1603 seenSuperConstructorCall = true;
1600 analyzeSuperConstructorCall(element, arguments); 1604 analyzeSuperConstructorCall(element, arguments);
1601 } 1605 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1653 return inferrer.concreteTypes.putIfAbsent( 1657 return inferrer.concreteTypes.putIfAbsent(
1654 node, () => types.allocateList( 1658 node, () => types.allocateList(
1655 types.nonNullExact(constructor.enclosingClass), node, 1659 types.nonNullExact(constructor.enclosingClass), node,
1656 outermostElement, elementType, length)); 1660 outermostElement, elementType, length));
1657 } else { 1661 } else {
1658 return returnType; 1662 return returnType;
1659 } 1663 }
1660 } 1664 }
1661 1665
1662 T handleNewExpression(ast.NewExpression node) { 1666 T handleNewExpression(ast.NewExpression node) {
1663 return visitStaticSend(node.send); 1667 Element element = elements[node.send];
1668 return handleConstructorSend(node.send, element);
1664 } 1669 }
1665 1670
1666 /// Handle invocation of a top level or static field or getter [element]. 1671 /// Handle invocation of a top level or static field or getter [element].
1667 T handleStaticFieldOrGetterInvoke(ast.Send node, Element element) { 1672 T handleStaticFieldOrGetterInvoke(ast.Send node, Element element) {
1668 ArgumentsTypes arguments = analyzeArguments(node.arguments); 1673 ArgumentsTypes arguments = analyzeArguments(node.arguments);
1669 Selector selector = elements.getSelector(node); 1674 Selector selector = elements.getSelector(node);
1670 TypeMask mask = elements.getTypeMask(node); 1675 TypeMask mask = elements.getTypeMask(node);
1671 handleStaticSend(node, selector, mask, element, arguments); 1676 handleStaticSend(node, selector, mask, element, arguments);
1672 return inferrer.registerCalledClosure( 1677 return inferrer.registerCalledClosure(
1673 node, selector, mask, inferrer.typeOfElement(element), 1678 node, selector, mask, inferrer.typeOfElement(element),
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
2308 TypeMask moveNextMask = elements.getMoveNextTypeMask(node); 2313 TypeMask moveNextMask = elements.getMoveNextTypeMask(node);
2309 2314
2310 T iteratorType = handleDynamicSend( 2315 T iteratorType = handleDynamicSend(
2311 node, iteratorSelector, iteratorMask, expressionType, 2316 node, iteratorSelector, iteratorMask, expressionType,
2312 new ArgumentsTypes<T>.empty()); 2317 new ArgumentsTypes<T>.empty());
2313 2318
2314 return handleForInLoop(node, iteratorType, currentSelector, currentMask, 2319 return handleForInLoop(node, iteratorType, currentSelector, currentMask,
2315 moveNextSelector, moveNextMask); 2320 moveNextSelector, moveNextMask);
2316 } 2321 }
2317 } 2322 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/inferrer_visitor.dart ('k') | pkg/compiler/lib/src/resolved_visitor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698