56f46b0659
This changes the CFE expectation test suites to use unsound null safety as default to avoid passing --enable-experiments=no-non-nullable to opt out old test folders. This change removes most test folders from the 'strong' tester, since this now only supports sound null safety, which requires all libraries to be opted in. Instead, the 'weak' tester now runs all test folders. Additionally the 'outline' tester is changed to use unsound null safety so that it call be used on all test folders. The 'fast_strong' tester is removed since it should just be run locally and it can be run by passing an option to the other testers. References to non-existing 'shaker' folder has been removed from testing.json. Change-Id: Ibcc306f7b27d06b9637c205238bc408194f1d062 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184787 Commit-Queue: Johnni Winther <johnniwinther@google.com> Reviewed-by: Jens Johansen <jensj@google.com>
102 lines
4.2 KiB
Dart
102 lines
4.2 KiB
Dart
// Copyright (c) 2019, 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
|
|
part 'check_bounds_lib.dart';
|
|
|
|
class A {}
|
|
|
|
class B extends A {}
|
|
|
|
class Class<T extends A> {}
|
|
|
|
extension Extension<T extends B> on Class<T> {
|
|
method() {}
|
|
genericMethod<S extends B>(S s) {}
|
|
}
|
|
|
|
main() {}
|
|
|
|
test() {
|
|
A a;
|
|
|
|
Class<A> classA = new Class<A>();
|
|
classA.method(); // Expect method not found.
|
|
Extension(classA).method(); // Expect bounds mismatch.
|
|
Extension<A>(classA).method(); // Expect bounds mismatch.
|
|
Extension<B>(classA).method();
|
|
Extension(classA).genericMethod(a); // Expect bounds mismatch.
|
|
Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
|
|
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
|
|
Extension<A>(classA).genericMethod(a); // Expect bounds mismatch.
|
|
Extension<A>(classA).genericMethod<A>(a); // Expect bounds mismatch.
|
|
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
|
|
Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
|
|
Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
|
|
Extension<B>(classA).genericMethod<B>(a);
|
|
|
|
Class<B> classB = new Class<B>();
|
|
classB.method();
|
|
Extension(classB).method();
|
|
Extension<A>(classB).method(); // Expect bounds mismatch.
|
|
Extension<B>(classB).method();
|
|
|
|
classB.genericMethod(a); // Expect bounds mismatch.
|
|
classB.genericMethod<A>(a); // Expect bounds mismatch.
|
|
classB.genericMethod<B>(a);
|
|
Extension(classB).genericMethod(a); // Expect bounds mismatch.
|
|
Extension(classB).genericMethod<A>(a); // Expect bounds mismatch.
|
|
Extension(classB).genericMethod<B>(a);
|
|
Extension<A>(classB).genericMethod(a); // Expect bounds mismatch.
|
|
Extension<A>(classB).genericMethod<A>(a); // Expect bounds mismatch.
|
|
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
|
|
Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
|
|
Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
|
|
Extension<B>(classB).genericMethod<B>(a);
|
|
}
|
|
|
|
final A a = new A();
|
|
final Class<A> classA = new Class<A>();
|
|
final field1 = classA.method(); // Expect method not found.
|
|
final field2 = Extension(classA).method(); // Expect bounds mismatch.
|
|
final field3 = Extension<A>(classA).method(); // Expect bounds mismatch.
|
|
final field4 = Extension<B>(classA).method();
|
|
final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
|
|
final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
|
|
final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
|
|
final field8 = Extension<A>(classA).genericMethod(a); // Expect bounds mismatch.
|
|
final field9 =
|
|
Extension<A>(classA).genericMethod<A>(a); // Expect bounds mismatch.
|
|
final field10 =
|
|
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
|
|
final field11 =
|
|
Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
|
|
final field12 =
|
|
Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
|
|
final field13 = Extension<B>(classA).genericMethod<B>(a);
|
|
|
|
final Class<B> classB = new Class<B>();
|
|
final field14 = classB.method();
|
|
final field15 = Extension(classB).method();
|
|
final field16 = Extension<A>(classB).method(); // Expect bounds mismatch.
|
|
final field17 = Extension<B>(classB).method();
|
|
|
|
final field18 = classB.genericMethod(a); // Expect bounds mismatch.
|
|
final field19 = classB.genericMethod<A>(a); // Expect bounds mismatch.
|
|
final field20 = classB.genericMethod<B>(a);
|
|
final field21 = Extension(classB).genericMethod(a); // Expect bounds mismatch.
|
|
final field22 =
|
|
Extension(classB).genericMethod<A>(a); // Expect bounds mismatch.
|
|
final field23 = Extension(classB).genericMethod<B>(a);
|
|
final field24 =
|
|
Extension<A>(classB).genericMethod(a); // Expect bounds mismatch.
|
|
final field25 =
|
|
Extension<A>(classB).genericMethod<A>(a); // Expect bounds mismatch.
|
|
final field26 =
|
|
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
|
|
final field27 =
|
|
Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
|
|
final field28 =
|
|
Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
|
|
final field29 = Extension<B>(classB).genericMethod<B>(a);
|