interface I { get () : int; } class C ['a] where 'a : I {} class M { x : C[int]; // E: typing constraint on.* not satisfied } class X ['a] { x : 'a; // OK static y : 'a; // OK m1 (_ : 'a) : void {} // OK static m2 (_ : 'a) : void {} // OK static m3['b] (_ : 'b) : void {} // OK static m4['a] (_ : 'a) : void {} // E: already in the scope class B { foo (x : 'a) : void {} // OK } } interface IA {} class Base { } class B : IA, Base { } // E: base class `Base' must be specified as first [V.A()] variant V[T] : System.Attribute { // E: A generic type cannot derive from | A // E: A generic type cannot derive from } [XX] class XX[T] : System.Attribute { // E: A generic type cannot derive from }