mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-14 19:16:17 -06:00
Merge pull request #12363 from Microsoft/declarationsInFilesWithErrors
Fixes for #12291 and #12326: Declaration emit when there are errors in the source file
This commit is contained in:
commit
f626ff777f
@ -1037,6 +1037,10 @@ namespace ts {
|
||||
diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1;
|
||||
break;
|
||||
|
||||
case SyntaxKind.TypeAliasDeclaration:
|
||||
diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1;
|
||||
break;
|
||||
|
||||
default:
|
||||
Debug.fail("This is unknown parent for type parameter: " + node.parent.kind);
|
||||
}
|
||||
@ -1143,7 +1147,10 @@ namespace ts {
|
||||
const prevEnclosingDeclaration = enclosingDeclaration;
|
||||
enclosingDeclaration = node;
|
||||
emitTypeParameters(node.typeParameters);
|
||||
emitHeritageClause(getInterfaceBaseTypeNodes(node), /*isImplementsList*/ false);
|
||||
const interfaceExtendsTypes = filter(getInterfaceBaseTypeNodes(node), base => isEntityNameExpression(base.expression));
|
||||
if (interfaceExtendsTypes && interfaceExtendsTypes.length) {
|
||||
emitHeritageClause(interfaceExtendsTypes, /*isImplementsList*/ false);
|
||||
}
|
||||
write(" {");
|
||||
writeLine();
|
||||
increaseIndent();
|
||||
|
||||
@ -2276,6 +2276,10 @@
|
||||
"category": "Error",
|
||||
"code": 4082
|
||||
},
|
||||
"Type parameter '{0}' of exported type alias has or is using private name '{1}'.": {
|
||||
"category": "Error",
|
||||
"code": 4083
|
||||
},
|
||||
"Conflicting definitions for '{0}' found at '{1}' and '{2}'. Consider installing a specific version of this library to resolve the conflict.": {
|
||||
"category": "Message",
|
||||
"code": 4090
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
tests/cases/compiler/declarationEmitInterfaceWithNonEntityNameExpressionHeritage.ts(3,25): error TS2499: An interface can only extend an identifier/qualified-name with optional type arguments.
|
||||
|
||||
|
||||
==== tests/cases/compiler/declarationEmitInterfaceWithNonEntityNameExpressionHeritage.ts (1 errors) ====
|
||||
|
||||
class A { }
|
||||
interface Class extends (typeof A) { }
|
||||
~~~~~~~~~~
|
||||
!!! error TS2499: An interface can only extend an identifier/qualified-name with optional type arguments.
|
||||
@ -0,0 +1,18 @@
|
||||
//// [declarationEmitInterfaceWithNonEntityNameExpressionHeritage.ts]
|
||||
|
||||
class A { }
|
||||
interface Class extends (typeof A) { }
|
||||
|
||||
//// [declarationEmitInterfaceWithNonEntityNameExpressionHeritage.js]
|
||||
var A = (function () {
|
||||
function A() {
|
||||
}
|
||||
return A;
|
||||
}());
|
||||
|
||||
|
||||
//// [declarationEmitInterfaceWithNonEntityNameExpressionHeritage.d.ts]
|
||||
declare class A {
|
||||
}
|
||||
interface Class {
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
tests/cases/compiler/declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.ts(2,18): error TS2304: Cannot find name 'Unknown'.
|
||||
tests/cases/compiler/declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.ts(2,18): error TS4083: Type parameter 'T' of exported type alias has or is using private name 'Unknown'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.ts (2 errors) ====
|
||||
|
||||
type A<T extends Unknown> = {}
|
||||
~~~~~~~
|
||||
!!! error TS2304: Cannot find name 'Unknown'.
|
||||
~~~~~~~
|
||||
!!! error TS4083: Type parameter 'T' of exported type alias has or is using private name 'Unknown'.
|
||||
@ -0,0 +1,5 @@
|
||||
//// [declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.ts]
|
||||
|
||||
type A<T extends Unknown> = {}
|
||||
|
||||
//// [declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.js]
|
||||
@ -0,0 +1,4 @@
|
||||
// @declaration: true
|
||||
|
||||
class A { }
|
||||
interface Class extends (typeof A) { }
|
||||
@ -0,0 +1,3 @@
|
||||
// @declaration: true
|
||||
|
||||
type A<T extends Unknown> = {}
|
||||
Loading…
x
Reference in New Issue
Block a user