| 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.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
| 4 | 4 |
| 5 import 'package:front_end/src/base/instrumentation.dart'; | 5 import 'package:front_end/src/base/instrumentation.dart'; |
| 6 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart'; | 6 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart'; |
| 7 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart'; | 7 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart'; |
| 8 import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart'
; | 8 import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart'
; |
| 9 import 'package:front_end/src/fasta/type_inference/type_promotion.dart'; | 9 import 'package:front_end/src/fasta/type_inference/type_promotion.dart'; |
| 10 import 'package:front_end/src/fasta/type_inference/type_schema.dart'; | 10 import 'package:front_end/src/fasta/type_inference/type_schema.dart'; |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 returnType is InterfaceType && | 314 returnType is InterfaceType && |
| 315 identical(returnType.classNode, coreTypes.nullClass)) { | 315 identical(returnType.classNode, coreTypes.nullClass)) { |
| 316 // Analyzer coerces `Null` to `dynamic` in expression functions; the spec | 316 // Analyzer coerces `Null` to `dynamic` in expression functions; the spec |
| 317 // doesn't say to do this. TODO(paulberry): resolve this difference. | 317 // doesn't say to do this. TODO(paulberry): resolve this difference. |
| 318 return const DynamicType(); | 318 return const DynamicType(); |
| 319 } | 319 } |
| 320 return returnType; | 320 return returnType; |
| 321 } | 321 } |
| 322 | 322 |
| 323 DartType wrapFutureType(DartType type) { | 323 DartType wrapFutureType(DartType type) { |
| 324 var typeWithoutFutureOr = type; |
| 325 if (type is InterfaceType && |
| 326 identical(type.classNode, coreTypes.futureOrClass)) { |
| 327 typeWithoutFutureOr = type.typeArguments[0]; |
| 328 } |
| 324 return new InterfaceType(coreTypes.futureClass, | 329 return new InterfaceType(coreTypes.futureClass, |
| 325 <DartType>[typeSchemaEnvironment.flattenFutures(type)]); | 330 <DartType>[typeSchemaEnvironment.flattenFutures(typeWithoutFutureOr)]); |
| 326 } | 331 } |
| 327 | 332 |
| 328 DartType wrapType(DartType type, Class class_) { | 333 DartType wrapType(DartType type, Class class_) { |
| 329 return new InterfaceType(class_, <DartType>[type]); | 334 return new InterfaceType(class_, <DartType>[type]); |
| 330 } | 335 } |
| 331 | 336 |
| 332 void _forEachArgument( | 337 void _forEachArgument( |
| 333 Arguments arguments, void callback(String name, Expression expression)) { | 338 Arguments arguments, void callback(String name, Expression expression)) { |
| 334 for (var expression in arguments.positional) { | 339 for (var expression in arguments.positional) { |
| 335 callback(null, expression); | 340 callback(null, expression); |
| 336 } | 341 } |
| 337 for (var namedExpression in arguments.named) { | 342 for (var namedExpression in arguments.named) { |
| 338 callback(namedExpression.name, namedExpression.value); | 343 callback(namedExpression.name, namedExpression.value); |
| 339 } | 344 } |
| 340 } | 345 } |
| 341 } | 346 } |
| OLD | NEW |