=== tests/cases/compiler/assignmentNonObjectTypeConstraints.ts === const enum E { A, B, C } >E : Symbol(E, Decl(assignmentNonObjectTypeConstraints.ts, 0, 0)) >A : Symbol(E.A, Decl(assignmentNonObjectTypeConstraints.ts, 0, 14)) >B : Symbol(E.B, Decl(assignmentNonObjectTypeConstraints.ts, 0, 17)) >C : Symbol(E.C, Decl(assignmentNonObjectTypeConstraints.ts, 0, 20)) function foo(x: T) { >foo : Symbol(foo, Decl(assignmentNonObjectTypeConstraints.ts, 0, 24)) >T : Symbol(T, Decl(assignmentNonObjectTypeConstraints.ts, 2, 13)) >x : Symbol(x, Decl(assignmentNonObjectTypeConstraints.ts, 2, 31)) >T : Symbol(T, Decl(assignmentNonObjectTypeConstraints.ts, 2, 13)) var y: number = x; // Ok >y : Symbol(y, Decl(assignmentNonObjectTypeConstraints.ts, 3, 7)) >x : Symbol(x, Decl(assignmentNonObjectTypeConstraints.ts, 2, 31)) } foo(5); >foo : Symbol(foo, Decl(assignmentNonObjectTypeConstraints.ts, 0, 24)) foo(E.A); >foo : Symbol(foo, Decl(assignmentNonObjectTypeConstraints.ts, 0, 24)) >E.A : Symbol(E.A, Decl(assignmentNonObjectTypeConstraints.ts, 0, 14)) >E : Symbol(E, Decl(assignmentNonObjectTypeConstraints.ts, 0, 0)) >A : Symbol(E.A, Decl(assignmentNonObjectTypeConstraints.ts, 0, 14)) class A { a } >A : Symbol(A, Decl(assignmentNonObjectTypeConstraints.ts, 7, 9)) >a : Symbol(a, Decl(assignmentNonObjectTypeConstraints.ts, 9, 9)) class B { b } >B : Symbol(B, Decl(assignmentNonObjectTypeConstraints.ts, 9, 13)) >b : Symbol(b, Decl(assignmentNonObjectTypeConstraints.ts, 10, 9)) function bar(x: T) { >bar : Symbol(bar, Decl(assignmentNonObjectTypeConstraints.ts, 10, 13)) >T : Symbol(T, Decl(assignmentNonObjectTypeConstraints.ts, 12, 13)) >A : Symbol(A, Decl(assignmentNonObjectTypeConstraints.ts, 7, 9)) >B : Symbol(B, Decl(assignmentNonObjectTypeConstraints.ts, 9, 13)) >x : Symbol(x, Decl(assignmentNonObjectTypeConstraints.ts, 12, 30)) >T : Symbol(T, Decl(assignmentNonObjectTypeConstraints.ts, 12, 13)) var y: A | B = x; // Ok >y : Symbol(y, Decl(assignmentNonObjectTypeConstraints.ts, 13, 7)) >A : Symbol(A, Decl(assignmentNonObjectTypeConstraints.ts, 7, 9)) >B : Symbol(B, Decl(assignmentNonObjectTypeConstraints.ts, 9, 13)) >x : Symbol(x, Decl(assignmentNonObjectTypeConstraints.ts, 12, 30)) } bar(new A); >bar : Symbol(bar, Decl(assignmentNonObjectTypeConstraints.ts, 10, 13)) >A : Symbol(A, Decl(assignmentNonObjectTypeConstraints.ts, 7, 9)) bar(new B); >bar : Symbol(bar, Decl(assignmentNonObjectTypeConstraints.ts, 10, 13)) >B : Symbol(B, Decl(assignmentNonObjectTypeConstraints.ts, 9, 13))