mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 13:08:10 +00:00
Migrate language_2/if to NNBD.
Change-Id: Ia481e2305a2a946876fc8a2dd6fd2e7c333da3fd Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148149 Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Erik Ernst <eernst@google.com> Commit-Queue: Bob Nystrom <rnystrom@google.com>
This commit is contained in:
parent
667e6f96ae
commit
c8674d581e
33
tests/language/if/and_test.dart
Normal file
33
tests/language/if/and_test.dart
Normal file
|
@ -0,0 +1,33 @@
|
|||
// 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";
|
||||
|
||||
// The "if (negative) res2 |= 3" below can be emitted as negative && (res2 |= 3)
|
||||
// in JavaScript. Dart2js produced the wrong output.
|
||||
|
||||
_shiftRight(x, y) => x;
|
||||
int64_bits(x) => x;
|
||||
|
||||
class A {
|
||||
opshr(int n, a2) {
|
||||
int res2;
|
||||
bool negative = a2 == 496;
|
||||
|
||||
res2 = _shiftRight(a2, n);
|
||||
if (negative) {
|
||||
res2 |= 3;
|
||||
}
|
||||
return int64_bits(res2);
|
||||
}
|
||||
}
|
||||
|
||||
main() {
|
||||
var a = new A();
|
||||
var t;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
t = a.opshr(99, 496);
|
||||
}
|
||||
Expect.equals(499, t);
|
||||
}
|
84
tests/language/if/dangling_else_test.dart
Normal file
84
tests/language/if/dangling_else_test.dart
Normal file
|
@ -0,0 +1,84 @@
|
|||
// 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.
|
||||
// Tests dangling else. The VM should not have any problems, but dart2js or
|
||||
// dart2dart could get this wrong.
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
nestedIf1(notTrue) {
|
||||
if (notTrue) return 'bad input';
|
||||
if (notTrue) {
|
||||
if (notTrue) {
|
||||
return 'bad';
|
||||
}
|
||||
} else {
|
||||
return 'good';
|
||||
}
|
||||
return 'bug';
|
||||
}
|
||||
|
||||
nestedIf2(notTrue) {
|
||||
if (notTrue) return 'bad input';
|
||||
if (notTrue) {
|
||||
if (notTrue) {
|
||||
return 'bad';
|
||||
} else {
|
||||
if (notTrue) {
|
||||
return 'bad';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return 'good';
|
||||
}
|
||||
return 'bug';
|
||||
}
|
||||
|
||||
nestedWhile(notTrue) {
|
||||
if (notTrue) return 'bad input';
|
||||
if (notTrue) {
|
||||
while (notTrue) {
|
||||
if (notTrue) {
|
||||
return 'bad';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return 'good';
|
||||
}
|
||||
return 'bug';
|
||||
}
|
||||
|
||||
nestedFor(notTrue) {
|
||||
if (notTrue) return 'bad input';
|
||||
if (notTrue) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (i == 0) {
|
||||
return 'bad';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return 'good';
|
||||
}
|
||||
return 'bug';
|
||||
}
|
||||
|
||||
nestedLabeledStatement(notTrue) {
|
||||
if (notTrue) return 'bad input';
|
||||
if (notTrue) {
|
||||
label:
|
||||
if (notTrue) {
|
||||
break label;
|
||||
}
|
||||
} else {
|
||||
return 'good';
|
||||
}
|
||||
return 'bug';
|
||||
}
|
||||
|
||||
main() {
|
||||
Expect.equals('good', nestedIf1(false));
|
||||
Expect.equals('good', nestedIf2(false));
|
||||
Expect.equals('good', nestedWhile(false));
|
||||
Expect.equals('good', nestedFor(false));
|
||||
Expect.equals('good', nestedLabeledStatement(false));
|
||||
}
|
95
tests/language/if/if_test.dart
Normal file
95
tests/language/if/if_test.dart
Normal file
|
@ -0,0 +1,95 @@
|
|||
// Copyright (c) 2011, 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.
|
||||
// Dart test program for testing if statement.
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
class Helper {
|
||||
static int f0(bool b) {
|
||||
if (b) ;
|
||||
if (b)
|
||||
;
|
||||
else
|
||||
;
|
||||
if (b) {}
|
||||
if (b) {} else {}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int f1(bool b) {
|
||||
if (b)
|
||||
return 1;
|
||||
else
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int f2(bool b) {
|
||||
if (b) {
|
||||
return 1;
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
static int f3(bool b) {
|
||||
if (b) return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int f4(bool b) {
|
||||
if (b) {
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int f5(bool b) {
|
||||
if (!b) {
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int f6(bool a, bool b) {
|
||||
if (a || b) {
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int f7(bool a, bool b) {
|
||||
if (a && b) {
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
class IfTest {
|
||||
static testMain() {
|
||||
Expect.equals(0, Helper.f0(true));
|
||||
Expect.equals(1, Helper.f1(true));
|
||||
Expect.equals(2, Helper.f1(false));
|
||||
Expect.equals(1, Helper.f2(true));
|
||||
Expect.equals(2, Helper.f2(false));
|
||||
Expect.equals(1, Helper.f3(true));
|
||||
Expect.equals(2, Helper.f3(false));
|
||||
Expect.equals(1, Helper.f4(true));
|
||||
Expect.equals(2, Helper.f4(false));
|
||||
Expect.equals(2, Helper.f5(true));
|
||||
Expect.equals(1, Helper.f5(false));
|
||||
Expect.equals(1, Helper.f6(true, true));
|
||||
Expect.equals(1, Helper.f6(true, false));
|
||||
Expect.equals(1, Helper.f6(false, true));
|
||||
Expect.equals(2, Helper.f6(false, false));
|
||||
Expect.equals(1, Helper.f7(true, true));
|
||||
Expect.equals(2, Helper.f7(true, false));
|
||||
Expect.equals(2, Helper.f7(false, true));
|
||||
Expect.equals(2, Helper.f7(false, false));
|
||||
}
|
||||
}
|
||||
|
||||
main() {
|
||||
IfTest.testMain();
|
||||
}
|
35
tests/language/if/nested_if_test.dart
Normal file
35
tests/language/if/nested_if_test.dart
Normal file
|
@ -0,0 +1,35 @@
|
|||
// Copyright (c) 2011, 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.
|
||||
// Dart2Js had problems with nested ifs inside loops.
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
foo(x, a) {
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*------- Avoid inlining ----------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
/*---------------------------------------------*/
|
||||
for (int i = 0; i < 10; i++) {
|
||||
if (x) {
|
||||
if (!x) a = [];
|
||||
a.add(3);
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
main() {
|
||||
var a = foo(true, []);
|
||||
Expect.equals(10, a.length);
|
||||
Expect.equals(3, a[0]);
|
||||
}
|
Loading…
Reference in a new issue