mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 04:27:17 +00:00
b3af778a38
- including tests for issues 46719 and 46887 Change-Id: I601fcfcb956e059f502cbece29fb2a6a00f68846 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/210464 Commit-Queue: Johnni Winther <johnniwinther@google.com> Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
116 lines
3.9 KiB
Dart
116 lines
3.9 KiB
Dart
// 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.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
main() {
|
|
// Integer literals.
|
|
Expect.isTrue(2 is int);
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
|
|
// [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
|
|
Expect.equals(2, 2 as int);
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
|
|
// [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
|
|
Expect.isTrue(-2 is int);
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
|
|
// [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
|
|
Expect.equals(-2, -2 as int);
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
|
|
// [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
|
|
Expect.isTrue(0x10 is int);
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
|
|
// [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
|
|
Expect.isTrue(-0x10 is int);
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
|
|
// [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
|
|
|
|
// "a" will be part of hex literal, the following "s" is an error.
|
|
0x10as int;
|
|
//^^^^^
|
|
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
|
|
// [cfe] Expected ';' after this.
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_CLASS
|
|
// [cfe] 's' isn't a type.
|
|
// ^
|
|
// [cfe] Can't declare 'int' because it was already used in this scope.
|
|
0x;
|
|
//^
|
|
// [cfe] A hex digit (0-9 or A-F) must follow '0x'.
|
|
// ^
|
|
// [analyzer] SYNTACTIC_ERROR.MISSING_HEX_DIGIT
|
|
|
|
// Double literals.
|
|
Expect.isTrue(2.0 is double);
|
|
Expect.equals(2.0, 2.0 as double);
|
|
Expect.isTrue(-2.0 is double);
|
|
Expect.equals(-2.0, -2.0 as double);
|
|
Expect.isTrue(.2 is double);
|
|
Expect.equals(0.2, .2 as double);
|
|
Expect.isTrue(1e2 is double);
|
|
Expect.equals(1e2, 1e2 as double);
|
|
Expect.isTrue(1e-2 is double);
|
|
Expect.equals(1e-2, 1e-2 as double);
|
|
Expect.isTrue(1e+2 is double);
|
|
Expect.equals(1e+2, 1e+2 as double);
|
|
Expect.throwsNoSuchMethodError(() => 1.e+2);
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
|
|
// [cfe] The getter 'e' isn't defined for the class 'int'.
|
|
1d;
|
|
//^
|
|
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
|
|
// [cfe] Expected ';' after this.
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
|
|
// [cfe] Undefined name 'd'.
|
|
1D;
|
|
//^
|
|
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
|
|
// [cfe] Expected ';' after this.
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
|
|
// [cfe] Undefined name 'D'.
|
|
Expect.throwsNoSuchMethodError(() => 1.d+2);
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
|
|
// [cfe] The getter 'd' isn't defined for the class 'int'.
|
|
Expect.throwsNoSuchMethodError(() => 1.D+2);
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
|
|
// [cfe] The getter 'D' isn't defined for the class 'int'.
|
|
1.1d;
|
|
//^^^
|
|
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
|
|
// [cfe] Expected ';' after this.
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
|
|
// [cfe] Undefined name 'd'.
|
|
1.1D;
|
|
//^^^
|
|
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
|
|
// [cfe] Expected ';' after this.
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
|
|
// [cfe] Undefined name 'D'.
|
|
1e;
|
|
//^
|
|
// [cfe] Numbers in exponential notation should always contain an exponent (an integer number with an optional sign).
|
|
// ^
|
|
// [analyzer] SYNTACTIC_ERROR.MISSING_DIGIT
|
|
1x;
|
|
//^
|
|
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
|
|
// [cfe] Expected ';' after this.
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
|
|
// [cfe] Undefined name 'x'.
|
|
}
|