==== tests/cases/compiler/callSignaturesWithDuplicateParameters.ts (22 errors) ====
    // Duplicate parameter names are always an error
    
    function foo(x, x) { }
                    ~
!!! callSignaturesWithDuplicateParameters.ts(3,17): error TS2000: Duplicate identifier 'x'.
    var f = function foo(x, x) { }
                            ~
!!! callSignaturesWithDuplicateParameters.ts(4,25): error TS2000: Duplicate identifier 'x'.
    var f2 = function (x, x) { }
                          ~
!!! callSignaturesWithDuplicateParameters.ts(5,23): error TS2000: Duplicate identifier 'x'.
    var f3 = (x, x) => { }
                 ~
!!! callSignaturesWithDuplicateParameters.ts(6,14): error TS2000: Duplicate identifier 'x'.
    var f4 = <T>(x: T, x: T) => { }
                       ~~~~
!!! callSignaturesWithDuplicateParameters.ts(7,20): error TS2000: Duplicate identifier 'x'.
    
    function foo2(x: string, x: number) { }
                             ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(9,26): error TS2000: Duplicate identifier 'x'.
    var f5 = function foo(x: string, x: number) { }
                                     ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(10,34): error TS2000: Duplicate identifier 'x'.
    var f6 = function (x: string, x: number) { }
                                  ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(11,31): error TS2000: Duplicate identifier 'x'.
    var f7 = (x: string, x: number) => { }
                         ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(12,22): error TS2000: Duplicate identifier 'x'.
    var f8 = <T>(x: T, y: T) => { }
    
    class C {
        foo(x, x) { }
               ~
!!! callSignaturesWithDuplicateParameters.ts(16,12): error TS2000: Duplicate identifier 'x'.
        foo2(x: number, x: string) { }
                        ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(17,21): error TS2000: Duplicate identifier 'x'.
        foo3<T>(x: T, x: T) { }
                      ~~~~
!!! callSignaturesWithDuplicateParameters.ts(18,19): error TS2000: Duplicate identifier 'x'.
    }
    
    interface I {
        (x, x);
            ~
!!! callSignaturesWithDuplicateParameters.ts(22,9): error TS2000: Duplicate identifier 'x'.
        (x: string, x: number);
                    ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(23,17): error TS2000: Duplicate identifier 'x'.
        foo(x, x);
               ~
!!! callSignaturesWithDuplicateParameters.ts(24,12): error TS2000: Duplicate identifier 'x'.
        foo(x: number, x: string);
                       ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(25,20): error TS2000: Duplicate identifier 'x'.
        foo3<T>(x: T, x: T);
                      ~~~~
!!! callSignaturesWithDuplicateParameters.ts(26,19): error TS2000: Duplicate identifier 'x'.
    }
    
    var a: {
        foo(x, x);
               ~
!!! callSignaturesWithDuplicateParameters.ts(30,12): error TS2000: Duplicate identifier 'x'.
        foo2(x: number, x: string);
                        ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(31,21): error TS2000: Duplicate identifier 'x'.
    };
    
    var b = {
        foo(x, x) { },
               ~
!!! callSignaturesWithDuplicateParameters.ts(35,12): error TS2000: Duplicate identifier 'x'.
        a: function foo(x: number, x: string) { },
                                   ~~~~~~~~~
!!! callSignaturesWithDuplicateParameters.ts(36,32): error TS2000: Duplicate identifier 'x'.
        b: <T>(x: T, x: T) => { }
                     ~~~~
!!! callSignaturesWithDuplicateParameters.ts(37,18): error TS2000: Duplicate identifier 'x'.
    }