blob: 1d509e446ec21f04bacf3b716dfd17fcfc1384e2 [file] [log] [blame]
// Copyright (c) 2018, 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 = 2.9
/// @assertion The static type of a double valued integer literal is [double]
/// @description Checks that the static type of a double valued integer literal
/// is [double]. Test arguments binding and generic routine
/// @author sgrekhov@unipro.ru
class C<X extends num, Y extends double> {
void methodX(X val) {}
void methodY(Y val) {}
test() {
methodX(42); //# 01: compile-time error
methodX(0x42); //# 02: compile-time error
methodY(42); //# 03: compile-time error
methodY(0x42); //# 04: compile-time error
}
}
void foo<X extends num, Y extends double>() {
bar1<X>(42); //# 05: compile-time error
bar1<X>(0x42); //# 06: compile-time error
bar1<Y>(42); //# 07: compile-time error
bar1<Y>(0x42); //# 08: compile-time error
bar2<X>(42); //# 09: compile-time error
bar2<X>(0x42); //# 10: compile-time error
bar2<Y>(42); //# 11: compile-time error
bar2<Y>(0x42); //# 12: compile-time error
}
void bar1<X extends num>(X x) {}
void bar2<Y extends double>(Y y) {}
main() {
C<double, double> c = C<double, double>();
c.test();
foo<double, double>();
}