mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 15:17:07 +00:00
105a0f30d6
The "@compile-error" comment is an old not-great way of defining static error tests. Note that the behavior of the code under test here had changed significantly, but the test didn't catch it at all because "@compile-error" is too coarse-grained. See: https://github.com/dart-lang/sdk/issues/45634 Change-Id: I4b6c4e1fd36770e13f7b5ca100b42b0b8b2983ae Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/296121 Commit-Queue: Jake Macdonald <jakemac@google.com> Reviewed-by: Jake Macdonald <jakemac@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com>
70 lines
2.1 KiB
Dart
70 lines
2.1 KiB
Dart
// 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.
|
|
//
|
|
// Dart test program for testing native float arrays.
|
|
|
|
// @dart = 2.9
|
|
|
|
// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
|
|
|
|
// Library tag to be able to run in html test framework.
|
|
library FloatArrayTest;
|
|
|
|
import "package:expect/expect.dart";
|
|
import 'dart:typed_data';
|
|
|
|
void testIndexOf32() {
|
|
var list = new Float32List(10);
|
|
for (int i = 0; i < list.length; i++) {
|
|
list[i] = i + 10.0;
|
|
}
|
|
|
|
// These used to be type errors when passing integers to indexOf() which
|
|
// expects a double, but are no longer an error because of int-to-double.
|
|
Expect.equals(0, list.indexOf(10));
|
|
Expect.equals(5, list.indexOf(15));
|
|
Expect.equals(9, list.indexOf(19));
|
|
Expect.equals(-1, list.indexOf(20));
|
|
}
|
|
|
|
void testBadValues32() {
|
|
var list = new Float32List(10);
|
|
list[0] = 2.0;
|
|
list[0] = 2; // Not an error because of int-to-double.
|
|
list[0] = "hello";
|
|
// ^^^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
|
|
// [cfe] A value of type 'String' can't be assigned to a variable of type 'double'.
|
|
}
|
|
|
|
void testIndexOf64() {
|
|
var list = new Float64List(10);
|
|
for (int i = 0; i < list.length; i++) {
|
|
list[i] = i + 10.0;
|
|
}
|
|
|
|
// These used to be type errors when passing integers to indexOf() which
|
|
// expects a double, but are no longer an error because of int-to-double.
|
|
Expect.equals(0, list.indexOf(10));
|
|
Expect.equals(5, list.indexOf(15));
|
|
Expect.equals(9, list.indexOf(19));
|
|
Expect.equals(-1, list.indexOf(20));
|
|
}
|
|
|
|
void testBadValues64() {
|
|
var list = new Float64List(10);
|
|
list[0] = 2.0;
|
|
list[0] = 2; // Not an error because of int-to-double.
|
|
list[0] = "hello";
|
|
// ^^^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
|
|
// [cfe] A value of type 'String' can't be assigned to a variable of type 'double'.
|
|
}
|
|
|
|
main() {
|
|
testIndexOf32();
|
|
testIndexOf64();
|
|
testBadValues32();
|
|
testBadValues64();
|
|
}
|