mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 13:08:10 +00:00
Migrate language_2/return to NNBD.
Change-Id: I3666b69e8371330e2e615aef9fcdecbb1d0753b9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150471 Auto-Submit: Bob Nystrom <rnystrom@google.com> Commit-Queue: Nicholas Shahan <nshahan@google.com> Reviewed-by: Nicholas Shahan <nshahan@google.com>
This commit is contained in:
parent
0f15f8722e
commit
eb098a5f9e
25
tests/language/return/in_loop_test.dart
Normal file
25
tests/language/return/in_loop_test.dart
Normal file
|
@ -0,0 +1,25 @@
|
|||
// Copyright (c) 2012, 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.
|
||||
// Test for a dart2js bug where the live environment was not computed
|
||||
// right.
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
class A {
|
||||
foo() {
|
||||
var x = 0;
|
||||
while (true) {
|
||||
if (true) {
|
||||
return 42;
|
||||
} else {}
|
||||
x = bar();
|
||||
}
|
||||
}
|
||||
|
||||
bar() => 1;
|
||||
}
|
||||
|
||||
main() {
|
||||
Expect.equals(42, new A().foo());
|
||||
}
|
34
tests/language/return/skip_expression_test.dart
Normal file
34
tests/language/return/skip_expression_test.dart
Normal file
|
@ -0,0 +1,34 @@
|
|||
// Copyright (c) 2012, 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.
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
class OneArg<A> {
|
||||
OneArg<A> get foo => new OneArg<A>();
|
||||
OneArg<A> get bar {
|
||||
return new OneArg<A>();
|
||||
}
|
||||
}
|
||||
|
||||
class TwoArgs<A, B> {
|
||||
TwoArgs<A, B> get foo => new TwoArgs<A, B>();
|
||||
TwoArgs<A, B> get bar {
|
||||
return new TwoArgs<A, B>();
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
Expect.isTrue(new OneArg<String>().foo is OneArg);
|
||||
Expect.isTrue(new OneArg<String>().bar is OneArg);
|
||||
Expect.isTrue(new TwoArgs<String, int>().foo is TwoArgs);
|
||||
Expect.isTrue(new TwoArgs<String, int>().bar is TwoArgs);
|
||||
|
||||
// TODO(karlklose): Please remove the return when dart2js can handle
|
||||
// the type tests after it.
|
||||
return;
|
||||
Expect.isTrue(new OneArg<String>().foo is OneArg<String>);
|
||||
Expect.isTrue(new OneArg<String>().bar is OneArg<String>);
|
||||
Expect.isTrue(new TwoArgs<String, int>().foo is TwoArgs<String, int>);
|
||||
Expect.isTrue(new TwoArgs<String, int>().bar is TwoArgs<String, int>);
|
||||
}
|
17
tests/language/return/this_type_test.dart
Normal file
17
tests/language/return/this_type_test.dart
Normal file
|
@ -0,0 +1,17 @@
|
|||
// Copyright (c) 2013, 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.
|
||||
|
||||
// Make sure the engine does not infer the wrong type for [:A.foo:].
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
class A {
|
||||
foo() => this;
|
||||
}
|
||||
|
||||
class B extends A {}
|
||||
|
||||
main() {
|
||||
Expect.isTrue(new B().foo() is B);
|
||||
}
|
15
tests/language/return/type_test.dart
Normal file
15
tests/language/return/type_test.dart
Normal file
|
@ -0,0 +1,15 @@
|
|||
// Copyright (c) 2012, 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.
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
int returnString1() => 's'; /*@compile-error=unspecified*/
|
||||
void returnNull() => null;
|
||||
void returnString2() => 's'; /*@compile-error=unspecified*/
|
||||
|
||||
main() {
|
||||
returnString1();
|
||||
returnNull();
|
||||
returnString2();
|
||||
}
|
Loading…
Reference in a new issue