==== tests/cases/compiler/functionArgShadowing.ts (3 errors) ==== class A { foo() { } } class B { bar() { } } function foo(x: A) { var x: B = new B(); ~ !!! Subsequent variable declarations must have the same type. Variable 'x' must be of type 'A', but here has type 'B'. x.bar(); // the property bar does not exist on a value of type A ~~~ !!! Property 'bar' does not exist on type 'A'. } class C { constructor(public p: number) { var p: string; ~ !!! Subsequent variable declarations must have the same type. Variable 'p' must be of type 'number', but here has type 'string'. var n: number = p; } }