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

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

Issue 2945553002: Remove Kernel*Set classes. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/frontend_accessors.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 /// This file declares a "shadow hierarchy" of concrete classes which extend 5 /// This file declares a "shadow hierarchy" of concrete classes which extend
6 /// the kernel class hierarchy, adding methods and fields needed by the 6 /// the kernel class hierarchy, adding methods and fields needed by the
7 /// BodyBuilder. 7 /// BodyBuilder.
8 /// 8 ///
9 /// Instances of these classes may be created using the factory methods in 9 /// Instances of these classes may be created using the factory methods in
10 /// `ast_factory.dart`. 10 /// `ast_factory.dart`.
(...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 } 571 }
572 572
573 @override 573 @override
574 DartType _inferExpression( 574 DartType _inferExpression(
575 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { 575 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
576 // TODO(scheglov): implement. 576 // TODO(scheglov): implement.
577 return typeNeeded ? const DynamicType() : null; 577 return typeNeeded ? const DynamicType() : null;
578 } 578 }
579 } 579 }
580 580
581 /// Shadow object for [DirectPropertySet].
582 class KernelDirectPropertySet extends DirectPropertySet
583 implements KernelExpression {
584 KernelDirectPropertySet(Expression receiver, Member target, Expression value)
585 : super(receiver, target, value);
586
587 KernelDirectPropertySet.byReference(
588 Expression receiver, Reference targetReference, Expression value)
589 : super.byReference(receiver, targetReference, value);
590
591 @override
592 void _collectDependencies(KernelDependencyCollector collector) {
593 // Assignment expressions are not immediately evident expressions.
594 collector.recordNotImmediatelyEvident(fileOffset);
595 }
596
597 @override
598 DartType _inferExpression(
599 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
600 // TODO(scheglov): implement.
601 return typeNeeded ? const DynamicType() : null;
602 }
603 }
604
605 /// Concrete shadow object representing a double literal in kernel form. 581 /// Concrete shadow object representing a double literal in kernel form.
606 class KernelDoubleLiteral extends DoubleLiteral implements KernelExpression { 582 class KernelDoubleLiteral extends DoubleLiteral implements KernelExpression {
607 KernelDoubleLiteral(double value) : super(value); 583 KernelDoubleLiteral(double value) : super(value);
608 584
609 @override 585 @override
610 void _collectDependencies(KernelDependencyCollector collector) { 586 void _collectDependencies(KernelDependencyCollector collector) {
611 // No inference dependencies. 587 // No inference dependencies.
612 } 588 }
613 589
614 @override 590 @override
(...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after
1486 } 1462 }
1487 interfaceTarget = interfaceMember; 1463 interfaceTarget = interfaceMember;
1488 var inferredType = 1464 var inferredType =
1489 inferrer.getCalleeType(interfaceMember, receiverType, name); 1465 inferrer.getCalleeType(interfaceMember, receiverType, name);
1490 // TODO(paulberry): Infer tear-off type arguments if appropriate. 1466 // TODO(paulberry): Infer tear-off type arguments if appropriate.
1491 inferrer.listener.propertyGetExit(this, inferredType); 1467 inferrer.listener.propertyGetExit(this, inferredType);
1492 return typeNeeded ? inferredType : null; 1468 return typeNeeded ? inferredType : null;
1493 } 1469 }
1494 } 1470 }
1495 1471
1496 /// Shadow object for [PropertyGet].
1497 class KernelPropertySet extends PropertySet implements KernelExpression {
1498 KernelPropertySet(Expression receiver, Name name, Expression value,
1499 [Member interfaceTarget])
1500 : super(receiver, name, value, interfaceTarget);
1501
1502 KernelPropertySet.byReference(Expression receiver, Name name,
1503 Expression value, Reference interfaceTargetReference)
1504 : super.byReference(receiver, name, value, interfaceTargetReference);
1505
1506 @override
1507 void _collectDependencies(KernelDependencyCollector collector) {
1508 // Assignment expressions are not immediately evident expressions.
1509 collector.recordNotImmediatelyEvident(fileOffset);
1510 }
1511
1512 @override
1513 DartType _inferExpression(
1514 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
1515 typeNeeded =
1516 inferrer.listener.propertySetEnter(this, typeContext) || typeNeeded;
1517 // First infer the receiver so we can look up the setter that was invoked.
1518 var receiverType = inferrer.inferExpression(receiver, null, true);
1519 Member interfaceMember = inferrer
1520 .findInterfaceMember(receiverType, name, fileOffset, setter: true);
1521 interfaceTarget = interfaceMember;
1522 var setterType = inferrer.getSetterType(interfaceMember, receiverType);
1523 var inferredType = inferrer.inferExpression(value, setterType, typeNeeded);
1524 inferrer.listener.propertySetExit(this, inferredType);
1525 return typeNeeded ? inferredType : null;
1526 }
1527 }
1528
1529 /// Concrete shadow object representing a redirecting initializer in kernel 1472 /// Concrete shadow object representing a redirecting initializer in kernel
1530 /// form. 1473 /// form.
1531 class KernelRedirectingInitializer extends RedirectingInitializer 1474 class KernelRedirectingInitializer extends RedirectingInitializer
1532 implements KernelInitializer { 1475 implements KernelInitializer {
1533 KernelRedirectingInitializer(Constructor target, Arguments arguments) 1476 KernelRedirectingInitializer(Constructor target, Arguments arguments)
1534 : super(target, arguments); 1477 : super(target, arguments);
1535 1478
1536 @override 1479 @override
1537 _inferInitializer(KernelTypeInferrer inferrer) { 1480 _inferInitializer(KernelTypeInferrer inferrer) {
1538 inferrer.listener.redirectingInitializerEnter(this); 1481 inferrer.listener.redirectingInitializerEnter(this);
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1689 typeNeeded = inferrer.listener.staticInvocationEnter(this, typeContext) || 1632 typeNeeded = inferrer.listener.staticInvocationEnter(this, typeContext) ||
1690 typeNeeded; 1633 typeNeeded;
1691 var calleeType = target.function.functionType; 1634 var calleeType = target.function.functionType;
1692 var inferredType = inferrer.inferInvocation(typeContext, typeNeeded, 1635 var inferredType = inferrer.inferInvocation(typeContext, typeNeeded,
1693 fileOffset, calleeType, calleeType.returnType, arguments); 1636 fileOffset, calleeType, calleeType.returnType, arguments);
1694 inferrer.listener.staticInvocationExit(this, inferredType); 1637 inferrer.listener.staticInvocationExit(this, inferredType);
1695 return inferredType; 1638 return inferredType;
1696 } 1639 }
1697 } 1640 }
1698 1641
1699 /// Shadow object for [StaticSet].
1700 class KernelStaticSet extends StaticSet implements KernelExpression {
1701 KernelStaticSet(Member target, Expression value) : super(target, value);
1702
1703 KernelStaticSet.byReference(Reference targetReference, Expression value)
1704 : super.byReference(targetReference, value);
1705
1706 @override
1707 void _collectDependencies(KernelDependencyCollector collector) {
1708 // Assignment expressions are not immediately evident expressions.
1709 collector.recordNotImmediatelyEvident(fileOffset);
1710 }
1711
1712 @override
1713 DartType _inferExpression(
1714 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
1715 // TODO(scheglov): implement.
1716 return typeNeeded ? const DynamicType() : null;
1717 }
1718 }
1719
1720 /// Concrete shadow object representing a string concatenation in kernel form. 1642 /// Concrete shadow object representing a string concatenation in kernel form.
1721 class KernelStringConcatenation extends StringConcatenation 1643 class KernelStringConcatenation extends StringConcatenation
1722 implements KernelExpression { 1644 implements KernelExpression {
1723 KernelStringConcatenation(List<Expression> expressions) : super(expressions); 1645 KernelStringConcatenation(List<Expression> expressions) : super(expressions);
1724 1646
1725 @override 1647 @override
1726 void _collectDependencies(KernelDependencyCollector collector) { 1648 void _collectDependencies(KernelDependencyCollector collector) {
1727 // No inference dependencies. 1649 // No inference dependencies.
1728 } 1650 }
1729 1651
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1810 } 1732 }
1811 1733
1812 @override 1734 @override
1813 DartType _inferExpression( 1735 DartType _inferExpression(
1814 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { 1736 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
1815 // TODO(scheglov): implement. 1737 // TODO(scheglov): implement.
1816 return typeNeeded ? const DynamicType() : null; 1738 return typeNeeded ? const DynamicType() : null;
1817 } 1739 }
1818 } 1740 }
1819 1741
1820 /// Shadow object for [SuperPropertySet].
1821 class KernelSuperPropertySet extends SuperPropertySet
1822 implements KernelExpression {
1823 KernelSuperPropertySet(Name name, Expression value, Member interfaceTarget)
1824 : super(name, value, interfaceTarget);
1825
1826 KernelSuperPropertySet.byReference(
1827 Name name, Expression value, Reference interfaceTargetReference)
1828 : super.byReference(name, value, interfaceTargetReference);
1829
1830 @override
1831 void _collectDependencies(KernelDependencyCollector collector) {
1832 // Assignment expressions are not immediately evident expressions.
1833 collector.recordNotImmediatelyEvident(fileOffset);
1834 }
1835
1836 @override
1837 DartType _inferExpression(
1838 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
1839 // TODO(scheglov): implement.
1840 return typeNeeded ? const DynamicType() : null;
1841 }
1842 }
1843
1844 /// Shadow object for [SymbolLiteral]. 1742 /// Shadow object for [SymbolLiteral].
1845 class KernelSymbolLiteral extends SymbolLiteral implements KernelExpression { 1743 class KernelSymbolLiteral extends SymbolLiteral implements KernelExpression {
1846 KernelSymbolLiteral(String value) : super(value); 1744 KernelSymbolLiteral(String value) : super(value);
1847 1745
1848 @override 1746 @override
1849 void _collectDependencies(KernelDependencyCollector collector) { 1747 void _collectDependencies(KernelDependencyCollector collector) {
1850 // No inference dependencies. 1748 // No inference dependencies.
1851 } 1749 }
1852 1750
1853 @override 1751 @override
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
2218 'promotedType', new InstrumentationValueForType(promotedType)); 2116 'promotedType', new InstrumentationValueForType(promotedType));
2219 } 2117 }
2220 this.promotedType = promotedType; 2118 this.promotedType = promotedType;
2221 var inferredType = 2119 var inferredType =
2222 typeNeeded ? (promotedType ?? declaredOrInferredType) : null; 2120 typeNeeded ? (promotedType ?? declaredOrInferredType) : null;
2223 inferrer.listener.variableGetExit(this, inferredType); 2121 inferrer.listener.variableGetExit(this, inferredType);
2224 return inferredType; 2122 return inferredType;
2225 } 2123 }
2226 } 2124 }
2227 2125
2228 /// Concrete shadow object representing a write to a variable in kernel form.
2229 class KernelVariableSet extends VariableSet implements KernelExpression {
2230 KernelVariableSet(VariableDeclaration variable, Expression value)
2231 : super(variable, value);
2232
2233 @override
2234 void _collectDependencies(KernelDependencyCollector collector) {
2235 // Assignment expressions are not immediately evident expressions.
2236 collector.recordNotImmediatelyEvident(fileOffset);
2237 }
2238
2239 @override
2240 DartType _inferExpression(
2241 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
2242 var variable = this.variable as KernelVariableDeclaration;
2243 typeNeeded =
2244 inferrer.listener.variableSetEnter(this, typeContext) || typeNeeded;
2245 var inferredType =
2246 inferrer.inferExpression(value, variable.type, typeNeeded);
2247 inferrer.listener.variableSetExit(this, inferredType);
2248 return inferredType;
2249 }
2250 }
2251
2252 /// Concrete shadow object representing a yield statement in kernel form. 2126 /// Concrete shadow object representing a yield statement in kernel form.
2253 class KernelYieldStatement extends YieldStatement implements KernelStatement { 2127 class KernelYieldStatement extends YieldStatement implements KernelStatement {
2254 KernelYieldStatement(Expression expression, {bool isYieldStar: false}) 2128 KernelYieldStatement(Expression expression, {bool isYieldStar: false})
2255 : super(expression, isYieldStar: isYieldStar); 2129 : super(expression, isYieldStar: isYieldStar);
2256 2130
2257 @override 2131 @override
2258 void _inferStatement(KernelTypeInferrer inferrer) { 2132 void _inferStatement(KernelTypeInferrer inferrer) {
2259 inferrer.listener.yieldStatementEnter(this); 2133 inferrer.listener.yieldStatementEnter(this);
2260 var closureContext = inferrer.closureContext; 2134 var closureContext = inferrer.closureContext;
2261 var typeContext = 2135 var typeContext =
(...skipping 25 matching lines...) Expand all
2287 } 2161 }
2288 2162
2289 transformChildren(v) { 2163 transformChildren(v) {
2290 return internalError("Internal error: Unsupported operation."); 2164 return internalError("Internal error: Unsupported operation.");
2291 } 2165 }
2292 2166
2293 visitChildren(v) { 2167 visitChildren(v) {
2294 return internalError("Internal error: Unsupported operation."); 2168 return internalError("Internal error: Unsupported operation.");
2295 } 2169 }
2296 } 2170 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/frontend_accessors.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698