| 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 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 DartType _inferExpression( | 291 DartType _inferExpression( |
| 292 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { | 292 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
| 293 IsExpression isExpression = this.operand; | 293 IsExpression isExpression = this.operand; |
| 294 return inferrer.inferIsExpression( | 294 return inferrer.inferIsExpression( |
| 295 typeContext, typeNeeded, isExpression.operand); | 295 typeContext, typeNeeded, isExpression.operand); |
| 296 } | 296 } |
| 297 } | 297 } |
| 298 | 298 |
| 299 /// Concrete shadow object representing a list literal in kernel form. | 299 /// Concrete shadow object representing a list literal in kernel form. |
| 300 class KernelListLiteral extends ListLiteral implements KernelExpression { | 300 class KernelListLiteral extends ListLiteral implements KernelExpression { |
| 301 final DartType _declaredTypeArgument; |
| 302 |
| 301 KernelListLiteral(List<Expression> expressions, | 303 KernelListLiteral(List<Expression> expressions, |
| 302 {DartType typeArgument, bool isConst: false}) | 304 {DartType typeArgument, bool isConst: false}) |
| 303 : super(expressions, typeArgument: typeArgument, isConst: isConst); | 305 : _declaredTypeArgument = typeArgument, |
| 306 super(expressions, |
| 307 typeArgument: typeArgument ?? const DynamicType(), |
| 308 isConst: isConst); |
| 304 | 309 |
| 305 @override | 310 @override |
| 306 DartType _inferExpression( | 311 DartType _inferExpression( |
| 307 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { | 312 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
| 308 return inferrer.inferListLiteral(typeContext, typeNeeded, typeArgument); | 313 return inferrer.inferListLiteral( |
| 314 typeContext, typeNeeded, fileOffset, _declaredTypeArgument, expressions, |
| 315 (type) { |
| 316 typeArgument = type; |
| 317 }); |
| 309 } | 318 } |
| 310 } | 319 } |
| 311 | 320 |
| 312 /// Shadow object for [LogicalExpression]. | 321 /// Shadow object for [LogicalExpression]. |
| 313 class KernelLogicalExpression extends LogicalExpression | 322 class KernelLogicalExpression extends LogicalExpression |
| 314 implements KernelExpression { | 323 implements KernelExpression { |
| 315 KernelLogicalExpression(Expression left, String operator, Expression right) | 324 KernelLogicalExpression(Expression left, String operator, Expression right) |
| 316 : super(left, operator, right); | 325 : super(left, operator, right); |
| 317 | 326 |
| 318 @override | 327 @override |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 879 : super(variable, value); | 888 : super(variable, value); |
| 880 | 889 |
| 881 @override | 890 @override |
| 882 DartType _inferExpression( | 891 DartType _inferExpression( |
| 883 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { | 892 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
| 884 var variable = this.variable as KernelVariableDeclaration; | 893 var variable = this.variable as KernelVariableDeclaration; |
| 885 return inferrer.inferVariableSet( | 894 return inferrer.inferVariableSet( |
| 886 typeContext, typeNeeded, variable._declaredType, value); | 895 typeContext, typeNeeded, variable._declaredType, value); |
| 887 } | 896 } |
| 888 } | 897 } |
| OLD | NEW |