dbaf041ae4
Change-Id: Ia3238c1781422ec5eb7a219a5cf8af645a4c5876 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409000 Commit-Queue: Bob Nystrom <rnystrom@google.com> Reviewed-by: Lasse Nielsen <lrn@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com>
506 lines
8.6 KiB
Dart
506 lines
8.6 KiB
Dart
// Copyright (c) 2023, 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 that all the expression types permitted by the grammar are allowed
|
|
// inside a relational pattern.
|
|
|
|
import 'package:expect/expect.dart';
|
|
|
|
void usingEquals() {
|
|
// bitwiseOrExpression
|
|
Expect.isTrue(switch (7) {
|
|
== 5 | 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseXorExpression
|
|
Expect.isTrue(switch (3) {
|
|
== 5 ^ 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseAndExpression
|
|
Expect.isTrue(switch (4) {
|
|
== 5 & 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// shiftExpression
|
|
Expect.isTrue(switch (4) {
|
|
== 1 << 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (1) {
|
|
== 4 >> 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// additiveExpression
|
|
Expect.isTrue(switch (4) {
|
|
== 3 + 1 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2) {
|
|
== 3 - 1 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// multiplicativeExpression
|
|
Expect.isTrue(switch (10) {
|
|
== 5 * 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2.5) {
|
|
== 5 / 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (1) {
|
|
== 5 % 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2) {
|
|
== 5 ~/ 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// unaryExpression
|
|
Expect.isTrue(switch (-3) {
|
|
== -3 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (true) {
|
|
== !false => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (~3) {
|
|
== ~3 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// assignableExpression
|
|
Expect.isTrue(switch (3) {
|
|
== 'foo'.length => true,
|
|
_ => false,
|
|
});
|
|
|
|
// primary
|
|
Expect.isTrue(switch ('xyz') {
|
|
== 'xyz' => true,
|
|
_ => false,
|
|
});
|
|
}
|
|
|
|
void usingNotEquals() {
|
|
// bitwiseOrExpression
|
|
Expect.isFalse(switch (7) {
|
|
!= 5 | 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseXorExpression
|
|
Expect.isFalse(switch (3) {
|
|
!= 5 ^ 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseAndExpression
|
|
Expect.isFalse(switch (4) {
|
|
!= 5 & 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// shiftExpression
|
|
Expect.isFalse(switch (4) {
|
|
!= 1 << 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (1) {
|
|
!= 4 >> 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// additiveExpression
|
|
Expect.isFalse(switch (4) {
|
|
!= 3 + 1 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2) {
|
|
!= 3 - 1 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// multiplicativeExpression
|
|
Expect.isFalse(switch (10) {
|
|
!= 5 * 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2.5) {
|
|
!= 5 / 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (1) {
|
|
!= 5 % 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2) {
|
|
!= 5 ~/ 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// unaryExpression
|
|
Expect.isFalse(switch (-3) {
|
|
!= -3 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (true) {
|
|
!= !false => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (~3) {
|
|
!= ~3 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// assignableExpression
|
|
Expect.isFalse(switch (3) {
|
|
!= 'foo'.length => true,
|
|
_ => false,
|
|
});
|
|
|
|
// primary
|
|
Expect.isFalse(switch ('xyz') {
|
|
!= 'xyz' => true,
|
|
_ => false,
|
|
});
|
|
}
|
|
|
|
void usingLessThanOrEquals() {
|
|
// bitwiseOrExpression
|
|
Expect.isTrue(switch (7) {
|
|
<= 5 | 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseXorExpression
|
|
Expect.isTrue(switch (3) {
|
|
<= 5 ^ 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseAndExpression
|
|
Expect.isTrue(switch (4) {
|
|
<= 5 & 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// shiftExpression
|
|
Expect.isTrue(switch (4) {
|
|
<= 1 << 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (1) {
|
|
<= 4 >> 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// additiveExpression
|
|
Expect.isTrue(switch (4) {
|
|
<= 3 + 1 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2) {
|
|
<= 3 - 1 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// multiplicativeExpression
|
|
Expect.isTrue(switch (10) {
|
|
<= 5 * 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2.5) {
|
|
<= 5 / 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (1) {
|
|
<= 5 % 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2) {
|
|
<= 5 ~/ 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// unaryExpression
|
|
Expect.isTrue(switch (-3) {
|
|
<= -3 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (~3) {
|
|
<= ~3 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// assignableExpression
|
|
Expect.isTrue(switch (3) {
|
|
<= 'foo'.length => true,
|
|
_ => false,
|
|
});
|
|
|
|
// primary
|
|
Expect.isTrue(switch (3) {
|
|
<= 3 => true,
|
|
_ => false,
|
|
});
|
|
}
|
|
|
|
void usingLessThan() {
|
|
// bitwiseOrExpression
|
|
Expect.isFalse(switch (7) {
|
|
< 5 | 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseXorExpression
|
|
Expect.isFalse(switch (3) {
|
|
< 5 ^ 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseAndExpression
|
|
Expect.isFalse(switch (4) {
|
|
< 5 & 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// shiftExpression
|
|
Expect.isFalse(switch (4) {
|
|
< 1 << 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (1) {
|
|
< 4 >> 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// additiveExpression
|
|
Expect.isFalse(switch (4) {
|
|
< 3 + 1 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2) {
|
|
< 3 - 1 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// multiplicativeExpression
|
|
Expect.isFalse(switch (10) {
|
|
< 5 * 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2.5) {
|
|
< 5 / 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (1) {
|
|
< 5 % 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2) {
|
|
< 5 ~/ 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// unaryExpression
|
|
Expect.isFalse(switch (-3) {
|
|
< -3 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (~3) {
|
|
< ~3 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// assignableExpression
|
|
Expect.isFalse(switch (3) {
|
|
< 'foo'.length => true,
|
|
_ => false,
|
|
});
|
|
|
|
// primary
|
|
Expect.isFalse(switch (3) {
|
|
< 3 => true,
|
|
_ => false,
|
|
});
|
|
}
|
|
|
|
void usingGreaterThanOrEquals() {
|
|
// bitwiseOrExpression
|
|
Expect.isTrue(switch (7) {
|
|
>= 5 | 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseXorExpression
|
|
Expect.isTrue(switch (3) {
|
|
>= 5 ^ 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseAndExpression
|
|
Expect.isTrue(switch (4) {
|
|
>= 5 & 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// shiftExpression
|
|
Expect.isTrue(switch (4) {
|
|
>= 1 << 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (1) {
|
|
>= 4 >> 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// additiveExpression
|
|
Expect.isTrue(switch (4) {
|
|
>= 3 + 1 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2) {
|
|
>= 3 - 1 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// multiplicativeExpression
|
|
Expect.isTrue(switch (10) {
|
|
>= 5 * 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2.5) {
|
|
>= 5 / 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (1) {
|
|
>= 5 % 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (2) {
|
|
>= 5 ~/ 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// unaryExpression
|
|
Expect.isTrue(switch (-3) {
|
|
>= -3 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isTrue(switch (~3) {
|
|
>= ~3 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// assignableExpression
|
|
Expect.isTrue(switch (3) {
|
|
>= 'foo'.length => true,
|
|
_ => false,
|
|
});
|
|
|
|
// primary
|
|
Expect.isTrue(switch (3) {
|
|
>= 3 => true,
|
|
_ => false,
|
|
});
|
|
}
|
|
|
|
void usingGreaterThan() {
|
|
// bitwiseOrExpression
|
|
Expect.isFalse(switch (7) {
|
|
> 5 | 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseXorExpression
|
|
Expect.isFalse(switch (3) {
|
|
> 5 ^ 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// bitwiseAndExpression
|
|
Expect.isFalse(switch (4) {
|
|
> 5 & 6 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// shiftExpression
|
|
Expect.isFalse(switch (4) {
|
|
> 1 << 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (1) {
|
|
> 4 >> 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// additiveExpression
|
|
Expect.isFalse(switch (4) {
|
|
> 3 + 1 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2) {
|
|
> 3 - 1 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// multiplicativeExpression
|
|
Expect.isFalse(switch (10) {
|
|
> 5 * 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2.5) {
|
|
> 5 / 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (1) {
|
|
> 5 % 2 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (2) {
|
|
> 5 ~/ 2 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// unaryExpression
|
|
Expect.isFalse(switch (-3) {
|
|
> -3 => true,
|
|
_ => false,
|
|
});
|
|
Expect.isFalse(switch (~3) {
|
|
> ~3 => true,
|
|
_ => false,
|
|
});
|
|
|
|
// assignableExpression
|
|
Expect.isFalse(switch (3) {
|
|
> 'foo'.length => true,
|
|
_ => false,
|
|
});
|
|
|
|
// primary
|
|
Expect.isFalse(switch (3) {
|
|
> 3 => true,
|
|
_ => false,
|
|
});
|
|
}
|
|
|
|
main() {
|
|
usingEquals();
|
|
usingNotEquals();
|
|
usingLessThanOrEquals();
|
|
usingLessThan();
|
|
usingGreaterThanOrEquals();
|
|
usingGreaterThan();
|
|
}
|