// @target: es2015
interface A {
	a: number;
}

interface B {
	b: string;
}

interface C<T extends A> {
    x: T;
}

declare var v1: C<A>; // should work
declare var v2: C<B>; // should not work

var y = v1.x.a; // 'a' should be of type 'number'