diff --git a/src/compiler/transformers/declarations/diagnostics.ts b/src/compiler/transformers/declarations/diagnostics.ts index 94d6994f8d2..f07c76e6c73 100644 --- a/src/compiler/transformers/declarations/diagnostics.ts +++ b/src/compiler/transformers/declarations/diagnostics.ts @@ -410,6 +410,7 @@ namespace ts { } break; + case SyntaxKind.FunctionType: case SyntaxKind.FunctionDeclaration: diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; diff --git a/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.errors.txt b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.errors.txt new file mode 100644 index 00000000000..9d626f960b4 --- /dev/null +++ b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/declarationEmitLambdaWithMissingTypeParameterNoCrash.ts(2,27): error TS2304: Cannot find name 'T2'. +tests/cases/compiler/declarationEmitLambdaWithMissingTypeParameterNoCrash.ts(2,27): error TS4016: Type parameter 'T1' of exported function has or is using private name 'T2'. + + +==== tests/cases/compiler/declarationEmitLambdaWithMissingTypeParameterNoCrash.ts (2 errors) ==== + export interface Foo { + preFetch: (c: T1) => void; // Type T2 is not defined + ~~ +!!! error TS2304: Cannot find name 'T2'. + ~~ +!!! error TS4016: Type parameter 'T1' of exported function has or is using private name 'T2'. + } + \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.js b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.js new file mode 100644 index 00000000000..b580f5a8968 --- /dev/null +++ b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.js @@ -0,0 +1,9 @@ +//// [declarationEmitLambdaWithMissingTypeParameterNoCrash.ts] +export interface Foo { + preFetch: (c: T1) => void; // Type T2 is not defined +} + + +//// [declarationEmitLambdaWithMissingTypeParameterNoCrash.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.symbols b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.symbols new file mode 100644 index 00000000000..44f9fdc6bc0 --- /dev/null +++ b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/declarationEmitLambdaWithMissingTypeParameterNoCrash.ts === +export interface Foo { +>Foo : Symbol(Foo, Decl(declarationEmitLambdaWithMissingTypeParameterNoCrash.ts, 0, 0)) + + preFetch: (c: T1) => void; // Type T2 is not defined +>preFetch : Symbol(Foo.preFetch, Decl(declarationEmitLambdaWithMissingTypeParameterNoCrash.ts, 0, 22)) +>T1 : Symbol(T1, Decl(declarationEmitLambdaWithMissingTypeParameterNoCrash.ts, 1, 15)) +>c : Symbol(c, Decl(declarationEmitLambdaWithMissingTypeParameterNoCrash.ts, 1, 31)) +>T1 : Symbol(T1, Decl(declarationEmitLambdaWithMissingTypeParameterNoCrash.ts, 1, 15)) +} + diff --git a/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.types b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.types new file mode 100644 index 00000000000..56f32fc5a13 --- /dev/null +++ b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.types @@ -0,0 +1,7 @@ +=== tests/cases/compiler/declarationEmitLambdaWithMissingTypeParameterNoCrash.ts === +export interface Foo { + preFetch: (c: T1) => void; // Type T2 is not defined +>preFetch : (c: T1) => void +>c : T1 +} + diff --git a/tests/cases/compiler/declarationEmitLambdaWithMissingTypeParameterNoCrash.ts b/tests/cases/compiler/declarationEmitLambdaWithMissingTypeParameterNoCrash.ts new file mode 100644 index 00000000000..d2a7112ceb8 --- /dev/null +++ b/tests/cases/compiler/declarationEmitLambdaWithMissingTypeParameterNoCrash.ts @@ -0,0 +1,4 @@ +// @declaration: true +export interface Foo { + preFetch: (c: T1) => void; // Type T2 is not defined +}