=== tests/cases/conformance/types/objectTypeLiteral/methodSignatures/functionLiterals.ts === // PropName(ParamList):ReturnType is equivalent to PropName: { (ParamList): ReturnType } var b: { >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) func1(x: number): number; // Method signature >func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) >x : number, Symbol(x, Decl(functionLiterals.ts, 3, 10)) func2: (x: number) => number; // Function type literal >func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) >x : number, Symbol(x, Decl(functionLiterals.ts, 4, 12)) func3: { (x: number): number }; // Object type literal >func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) >x : number, Symbol(x, Decl(functionLiterals.ts, 5, 14)) } // no errors b.func1 = b.func2; >b.func1 = b.func2 : (x: number) => number >b.func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) >b.func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) b.func1 = b.func3; >b.func1 = b.func3 : (x: number) => number >b.func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) >b.func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) b.func2 = b.func1; >b.func2 = b.func1 : (x: number) => number >b.func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) >b.func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) b.func2 = b.func3; >b.func2 = b.func3 : (x: number) => number >b.func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) >b.func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) b.func3 = b.func1; >b.func3 = b.func1 : (x: number) => number >b.func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) >b.func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func1 : (x: number) => number, Symbol(func1, Decl(functionLiterals.ts, 2, 8)) b.func3 = b.func2; >b.func3 = b.func2 : (x: number) => number >b.func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func3 : (x: number) => number, Symbol(func3, Decl(functionLiterals.ts, 4, 33)) >b.func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }, Symbol(b, Decl(functionLiterals.ts, 2, 3)) >func2 : (x: number) => number, Symbol(func2, Decl(functionLiterals.ts, 3, 29)) var c: { >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; }, Symbol(c, Decl(functionLiterals.ts, 16, 3)) func4(x: number): number; >func4 : { (x: number): number; (s: string): string; }, Symbol(func4, Decl(functionLiterals.ts, 16, 8), Decl(functionLiterals.ts, 17, 29)) >x : number, Symbol(x, Decl(functionLiterals.ts, 17, 10)) func4(s: string): string; >func4 : { (x: number): number; (s: string): string; }, Symbol(func4, Decl(functionLiterals.ts, 16, 8), Decl(functionLiterals.ts, 17, 29)) >s : string, Symbol(s, Decl(functionLiterals.ts, 18, 10)) func5: { >func5 : { (x: number): number; (s: string): string; }, Symbol(func5, Decl(functionLiterals.ts, 18, 29)) (x: number): number; >x : number, Symbol(x, Decl(functionLiterals.ts, 20, 9)) (s: string): string; >s : string, Symbol(s, Decl(functionLiterals.ts, 21, 9)) }; }; // no errors c.func4 = c.func5; >c.func4 = c.func5 : { (x: number): number; (s: string): string; } >c.func4 : { (x: number): number; (s: string): string; }, Symbol(func4, Decl(functionLiterals.ts, 16, 8), Decl(functionLiterals.ts, 17, 29)) >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; }, Symbol(c, Decl(functionLiterals.ts, 16, 3)) >func4 : { (x: number): number; (s: string): string; }, Symbol(func4, Decl(functionLiterals.ts, 16, 8), Decl(functionLiterals.ts, 17, 29)) >c.func5 : { (x: number): number; (s: string): string; }, Symbol(func5, Decl(functionLiterals.ts, 18, 29)) >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; }, Symbol(c, Decl(functionLiterals.ts, 16, 3)) >func5 : { (x: number): number; (s: string): string; }, Symbol(func5, Decl(functionLiterals.ts, 18, 29)) c.func5 = c.func4; >c.func5 = c.func4 : { (x: number): number; (s: string): string; } >c.func5 : { (x: number): number; (s: string): string; }, Symbol(func5, Decl(functionLiterals.ts, 18, 29)) >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; }, Symbol(c, Decl(functionLiterals.ts, 16, 3)) >func5 : { (x: number): number; (s: string): string; }, Symbol(func5, Decl(functionLiterals.ts, 18, 29)) >c.func4 : { (x: number): number; (s: string): string; }, Symbol(func4, Decl(functionLiterals.ts, 16, 8), Decl(functionLiterals.ts, 17, 29)) >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; }, Symbol(c, Decl(functionLiterals.ts, 16, 3)) >func4 : { (x: number): number; (s: string): string; }, Symbol(func4, Decl(functionLiterals.ts, 16, 8), Decl(functionLiterals.ts, 17, 29)) // generic versions var b2: { >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) func1(x: T): number; // Method signature >func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) >T : T, Symbol(T, Decl(functionLiterals.ts, 31, 10)) >x : T, Symbol(x, Decl(functionLiterals.ts, 31, 13)) >T : T, Symbol(T, Decl(functionLiterals.ts, 31, 10)) func2: (x: T) => number; // Function type literal >func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) >T : T, Symbol(T, Decl(functionLiterals.ts, 32, 12)) >x : T, Symbol(x, Decl(functionLiterals.ts, 32, 15)) >T : T, Symbol(T, Decl(functionLiterals.ts, 32, 12)) func3: { (x: T): number }; // Object type literal >func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) >T : T, Symbol(T, Decl(functionLiterals.ts, 33, 14)) >x : T, Symbol(x, Decl(functionLiterals.ts, 33, 17)) >T : T, Symbol(T, Decl(functionLiterals.ts, 33, 14)) } // no errors b2.func1 = b2.func2; >b2.func1 = b2.func2 : (x: T) => number >b2.func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) >b2.func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) b2.func1 = b2.func3; >b2.func1 = b2.func3 : (x: T) => number >b2.func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) >b2.func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) b2.func2 = b2.func1; >b2.func2 = b2.func1 : (x: T) => number >b2.func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) >b2.func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) b2.func2 = b2.func3; >b2.func2 = b2.func3 : (x: T) => number >b2.func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) >b2.func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) b2.func3 = b2.func1; >b2.func3 = b2.func1 : (x: T) => number >b2.func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) >b2.func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func1 : (x: T) => number, Symbol(func1, Decl(functionLiterals.ts, 30, 9)) b2.func3 = b2.func2; >b2.func3 = b2.func2 : (x: T) => number >b2.func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func3 : (x: T) => number, Symbol(func3, Decl(functionLiterals.ts, 32, 31)) >b2.func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) >b2 : { func1(x: T): number; func2: (x: T) => number; func3: (x: T) => number; }, Symbol(b2, Decl(functionLiterals.ts, 30, 3)) >func2 : (x: T) => number, Symbol(func2, Decl(functionLiterals.ts, 31, 27)) var c2: { >c2 : { func4(x: T): number; func4(s: T): string; func5: { (x: T): number; (s: T): string; }; }, Symbol(c2, Decl(functionLiterals.ts, 44, 3)) func4(x: T): number; >func4 : { (x: T): number; (s: T): string; }, Symbol(func4, Decl(functionLiterals.ts, 44, 9), Decl(functionLiterals.ts, 45, 27)) >T : T, Symbol(T, Decl(functionLiterals.ts, 45, 10)) >x : T, Symbol(x, Decl(functionLiterals.ts, 45, 13)) >T : T, Symbol(T, Decl(functionLiterals.ts, 45, 10)) func4(s: T): string; >func4 : { (x: T): number; (s: T): string; }, Symbol(func4, Decl(functionLiterals.ts, 44, 9), Decl(functionLiterals.ts, 45, 27)) >T : T, Symbol(T, Decl(functionLiterals.ts, 46, 10)) >s : T, Symbol(s, Decl(functionLiterals.ts, 46, 13)) >T : T, Symbol(T, Decl(functionLiterals.ts, 46, 10)) func5: { >func5 : { (x: T): number; (s: T): string; }, Symbol(func5, Decl(functionLiterals.ts, 46, 27)) (x: T): number; >T : T, Symbol(T, Decl(functionLiterals.ts, 48, 9)) >x : T, Symbol(x, Decl(functionLiterals.ts, 48, 12)) >T : T, Symbol(T, Decl(functionLiterals.ts, 48, 9)) (s: T): string; >T : T, Symbol(T, Decl(functionLiterals.ts, 49, 9)) >s : T, Symbol(s, Decl(functionLiterals.ts, 49, 12)) >T : T, Symbol(T, Decl(functionLiterals.ts, 49, 9)) }; }; // no errors c2.func4 = c2.func5; >c2.func4 = c2.func5 : { (x: T): number; (s: T): string; } >c2.func4 : { (x: T): number; (s: T): string; }, Symbol(func4, Decl(functionLiterals.ts, 44, 9), Decl(functionLiterals.ts, 45, 27)) >c2 : { func4(x: T): number; func4(s: T): string; func5: { (x: T): number; (s: T): string; }; }, Symbol(c2, Decl(functionLiterals.ts, 44, 3)) >func4 : { (x: T): number; (s: T): string; }, Symbol(func4, Decl(functionLiterals.ts, 44, 9), Decl(functionLiterals.ts, 45, 27)) >c2.func5 : { (x: T): number; (s: T): string; }, Symbol(func5, Decl(functionLiterals.ts, 46, 27)) >c2 : { func4(x: T): number; func4(s: T): string; func5: { (x: T): number; (s: T): string; }; }, Symbol(c2, Decl(functionLiterals.ts, 44, 3)) >func5 : { (x: T): number; (s: T): string; }, Symbol(func5, Decl(functionLiterals.ts, 46, 27)) c2.func5 = c2.func4; >c2.func5 = c2.func4 : { (x: T): number; (s: T): string; } >c2.func5 : { (x: T): number; (s: T): string; }, Symbol(func5, Decl(functionLiterals.ts, 46, 27)) >c2 : { func4(x: T): number; func4(s: T): string; func5: { (x: T): number; (s: T): string; }; }, Symbol(c2, Decl(functionLiterals.ts, 44, 3)) >func5 : { (x: T): number; (s: T): string; }, Symbol(func5, Decl(functionLiterals.ts, 46, 27)) >c2.func4 : { (x: T): number; (s: T): string; }, Symbol(func4, Decl(functionLiterals.ts, 44, 9), Decl(functionLiterals.ts, 45, 27)) >c2 : { func4(x: T): number; func4(s: T): string; func5: { (x: T): number; (s: T): string; }; }, Symbol(c2, Decl(functionLiterals.ts, 44, 3)) >func4 : { (x: T): number; (s: T): string; }, Symbol(func4, Decl(functionLiterals.ts, 44, 9), Decl(functionLiterals.ts, 45, 27))