==== tests/cases/compiler/functionArgShadowing.ts (3 errors) ====
    class A { foo() { } }
    class B { bar() { } }
    function foo(x: A) {
       var x: B = new B();
           ~~~~~~~~~~~~~~
!!! functionArgShadowing.ts(4,8): error TS2134: 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
           ~~~
!!! functionArgShadowing.ts(5,8): error TS2094: The property 'bar' does not exist on value of type 'A'.
    }
     
    class C {
        constructor(public p: number) {
            var p: string;
          ~~~~~~~~~
!!! functionArgShadowing.ts(10,7): error TS2134: Subsequent variable declarations must have the same type.  Variable 'p' must be of type 'number', but here has type 'string'.
    
            var n: number = p;
        }
    }