==== tests/cases/compiler/genericConstraint2.ts (3 errors) ==== interface Comparable { comparer(other: T): number; } function compare>(x: T, y: T): number { ~~~~~~~~~~~~~~~~~~~~~~~ !!! Constraint of a type parameter cannot reference any type parameter from the same type parameter list. if (x == null) return y == null ? 0 : -1; if (y == null) return 1; return x.comparer(y); } class ComparableString implements Comparable{ ~~~~~~~~~~~~~~~~ !!! Class 'ComparableString' incorrectly implements interface 'Comparable': !!! Property 'comparer' is missing in type 'ComparableString'. constructor(public currentValue: string) { } localeCompare(other) { return 0; } } var a = new ComparableString("a"); var b = new ComparableString("b"); var c = compare(a, b); ~~~~~~~~~~~~~~~~ !!! Type 'ComparableString' does not satisfy the constraint 'Comparable': !!! Property 'comparer' is missing in type 'ComparableString'.