| Index: pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart
|
| diff --git a/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart b/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d178e64db44fe78cced83da18acce3af887d4c49
|
| --- /dev/null
|
| +++ b/pkg/front_end/testcases/inference/null_literal_should_not_infer_as_bottom.dart
|
| @@ -0,0 +1,27 @@
|
| +// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +/*@testedFeatures=inference*/
|
| +library test;
|
| +
|
| +var /*@topType=dynamic*/ h = null;
|
| +void foo(int f(Object _)) {}
|
| +
|
| +main() {
|
| + var /*@type=(Object x) → dynamic*/ f = /*@returnType=dynamic*/ (Object x) =>
|
| + null;
|
| + String y = /*info:DYNAMIC_CAST*/ /*@promotedType=none*/ f(42);
|
| +
|
| + f = /*@returnType=String*/ (/*@type=Object*/ x) => 'hello';
|
| +
|
| + var /*@type=dynamic*/ g = null;
|
| + g = 'hello';
|
| + (/*info:DYNAMIC_INVOKE*/ /*@promotedType=none*/ g.foo());
|
| +
|
| + h = 'hello';
|
| + (/*info:DYNAMIC_INVOKE*/ h.foo());
|
| +
|
| + foo(/*@returnType=int*/ (/*@type=Object*/ x) => null);
|
| + foo(/*@returnType=<bottom>*/ (/*@type=Object*/ x) => throw "not implemented");
|
| +}
|
|
|