| OLD | NEW |
| 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 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 } | 545 } |
| 546 | 546 |
| 547 @override | 547 @override |
| 548 DartType _inferExpression( | 548 DartType _inferExpression( |
| 549 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { | 549 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
| 550 // TODO(scheglov): implement. | 550 // TODO(scheglov): implement. |
| 551 return typeNeeded ? const DynamicType() : null; | 551 return typeNeeded ? const DynamicType() : null; |
| 552 } | 552 } |
| 553 } | 553 } |
| 554 | 554 |
| 555 /// Concrete shadow object representing a do loop in kernel form. |
| 556 class KernelDoStatement extends DoStatement implements KernelStatement { |
| 557 KernelDoStatement(Statement body, Expression condition) |
| 558 : super(body, condition); |
| 559 |
| 560 @override |
| 561 void _inferStatement(KernelTypeInferrer inferrer) { |
| 562 inferrer.listener.doStatementEnter(this); |
| 563 inferrer.inferStatement(body); |
| 564 inferrer.inferExpression( |
| 565 condition, inferrer.coreTypes.boolClass.rawType, false); |
| 566 inferrer.listener.doStatementExit(this); |
| 567 } |
| 568 } |
| 569 |
| 555 /// Concrete shadow object representing a double literal in kernel form. | 570 /// Concrete shadow object representing a double literal in kernel form. |
| 556 class KernelDoubleLiteral extends DoubleLiteral implements KernelExpression { | 571 class KernelDoubleLiteral extends DoubleLiteral implements KernelExpression { |
| 557 KernelDoubleLiteral(double value) : super(value); | 572 KernelDoubleLiteral(double value) : super(value); |
| 558 | 573 |
| 559 @override | 574 @override |
| 560 void _collectDependencies(KernelDependencyCollector collector) { | 575 void _collectDependencies(KernelDependencyCollector collector) { |
| 561 // No inference dependencies. | 576 // No inference dependencies. |
| 562 } | 577 } |
| 563 | 578 |
| 564 @override | 579 @override |
| (...skipping 1603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2168 'promotedType', new InstrumentationValueForType(promotedType)); | 2183 'promotedType', new InstrumentationValueForType(promotedType)); |
| 2169 } | 2184 } |
| 2170 this.promotedType = promotedType; | 2185 this.promotedType = promotedType; |
| 2171 var inferredType = | 2186 var inferredType = |
| 2172 typeNeeded ? (promotedType ?? declaredOrInferredType) : null; | 2187 typeNeeded ? (promotedType ?? declaredOrInferredType) : null; |
| 2173 inferrer.listener.variableGetExit(this, inferredType); | 2188 inferrer.listener.variableGetExit(this, inferredType); |
| 2174 return inferredType; | 2189 return inferredType; |
| 2175 } | 2190 } |
| 2176 } | 2191 } |
| 2177 | 2192 |
| 2193 /// Concrete shadow object representing a while loop in kernel form. |
| 2194 class KernelWhileStatement extends WhileStatement implements KernelStatement { |
| 2195 KernelWhileStatement(Expression condition, Statement body) |
| 2196 : super(condition, body); |
| 2197 |
| 2198 @override |
| 2199 void _inferStatement(KernelTypeInferrer inferrer) { |
| 2200 inferrer.listener.whileStatementEnter(this); |
| 2201 inferrer.inferExpression( |
| 2202 condition, inferrer.coreTypes.boolClass.rawType, false); |
| 2203 inferrer.inferStatement(body); |
| 2204 inferrer.listener.whileStatementExit(this); |
| 2205 } |
| 2206 } |
| 2207 |
| 2178 /// Concrete shadow object representing a yield statement in kernel form. | 2208 /// Concrete shadow object representing a yield statement in kernel form. |
| 2179 class KernelYieldStatement extends YieldStatement implements KernelStatement { | 2209 class KernelYieldStatement extends YieldStatement implements KernelStatement { |
| 2180 KernelYieldStatement(Expression expression, {bool isYieldStar: false}) | 2210 KernelYieldStatement(Expression expression, {bool isYieldStar: false}) |
| 2181 : super(expression, isYieldStar: isYieldStar); | 2211 : super(expression, isYieldStar: isYieldStar); |
| 2182 | 2212 |
| 2183 @override | 2213 @override |
| 2184 void _inferStatement(KernelTypeInferrer inferrer) { | 2214 void _inferStatement(KernelTypeInferrer inferrer) { |
| 2185 inferrer.listener.yieldStatementEnter(this); | 2215 inferrer.listener.yieldStatementEnter(this); |
| 2186 var closureContext = inferrer.closureContext; | 2216 var closureContext = inferrer.closureContext; |
| 2187 var typeContext = | 2217 var typeContext = |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2213 } | 2243 } |
| 2214 | 2244 |
| 2215 transformChildren(v) { | 2245 transformChildren(v) { |
| 2216 return internalError("Internal error: Unsupported operation."); | 2246 return internalError("Internal error: Unsupported operation."); |
| 2217 } | 2247 } |
| 2218 | 2248 |
| 2219 visitChildren(v) { | 2249 visitChildren(v) { |
| 2220 return internalError("Internal error: Unsupported operation."); | 2250 return internalError("Internal error: Unsupported operation."); |
| 2221 } | 2251 } |
| 2222 } | 2252 } |
| OLD | NEW |