blob: 9ce909926055566ae9b71276610dac710dae5fad [file] [log] [blame]
// Copyright (c) 2021, 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.
class Super<T> {
void method1(num a) {}
void method2(int b) {}
void method3(num a, int b) {}
void method4({required num a}) {}
void method5({required int b}) {}
//void method6({required num a, required int b}) {}
void method7(Iterable<T> a) {}
void method8(List<T> b) {}
void method9(Iterable<T> a, List<T> b) {}
void method10({required Iterable<T> a}) {}
void method11({required List<T> b}) {}
//void method12({required Iterable<T> a, required List<T> b}) {}
void set setter1(num a) {}
//void set setter2(int a) {}
void set setter3(Iterable<T> a) {}
//void set setter4(List<T> a) {}
}
abstract class Interface<T> {
void method2(covariant num b) {}
void method3(num a, covariant num b) {}
void method5({required int b}) {}
//void method6({required num a, required covariant num b}) {}
void method8(covariant Iterable<T> b) {}
void method9(Iterable<T> a, covariant Iterable<T> b) {}
void method11({required List<T> b}) {}
//void method12({required Iterable<T> a, required covariant Iterable<T> b}) {}
//void set setter2(covariant num a) {}
//void set setter4(covariant Iterable<T> a) {}
}
class Class<T> extends Super<T> implements Interface<T> {
void method1(covariant int a);
void method2(num b);
void method3(covariant int a, num b);
void method7(covariant List<T> a);
void method8(Iterable<T> b);
void method9(covariant List<T> a, Iterable<T> b);
void set setter1(covariant int a);
//void set setter2(num a);
void set setter3(covariant List<T> a);
//void set setter4(Iterable<T> a);
}
class Class1<T> implements Class<T> {
void method1(double a) {} // error
void method2(double b) {} // error
void method3(double a, double b) {} // error
void method4({required double a}) {} // error
void method5({required double b}) {} // error
//void method6({required double a, required double b}) {} // error
void method7(Set<T> a) {} // error
void method8(Set<T> b) {} // error
void method9(Set<T> a, Set<T> b) {} // error
void method10({required Set<T> a}) {} // error
void method11({required Set<T> b}) {} // error
//void method12({required Set<T> a, required Set<T> b}) {} // error
void set setter1(double a) {} // error
//void set setter2(double a) {} // error
void set setter3(Set<T> a) {} // error
//void set setter4(Set<T> a) {} // error
}
abstract class Interface2<T> {
void method1(int a);
void method2(int b);
void method3(int a, int b);
void method7(List<T> a);
void method8(List<T> b);
void method9(List<T> a, List<T> b);
void set setter1(int a);
//void set setter2(int a);
void set setter3(List<T> a);
//void set setter4(List<T> a);
}
abstract class Class2<T> implements Class<T>, Interface2<T> {}
main() {}