mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Make bodiless declarations an error in JS (#54439)
This commit is contained in:
parent
a437de66b6
commit
e4cc532e14
@ -6556,6 +6556,10 @@
|
||||
"category": "Error",
|
||||
"code": 8016
|
||||
},
|
||||
"Signature declarations can only be used in TypeScript files.": {
|
||||
"category": "Error",
|
||||
"code": 8017
|
||||
},
|
||||
"Report errors in .js files.": {
|
||||
"category": "Message",
|
||||
"code": 8019
|
||||
|
||||
@ -3022,6 +3022,14 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
|
||||
case SyntaxKind.TypeAliasDeclaration:
|
||||
diagnostics.push(createDiagnosticForNode(node, Diagnostics.Type_aliases_can_only_be_used_in_TypeScript_files));
|
||||
return "skip";
|
||||
case SyntaxKind.Constructor:
|
||||
case SyntaxKind.MethodDeclaration:
|
||||
case SyntaxKind.FunctionDeclaration:
|
||||
if (!(node as FunctionLikeDeclaration).body) {
|
||||
diagnostics.push(createDiagnosticForNode(node, Diagnostics.Signature_declarations_can_only_be_used_in_TypeScript_files));
|
||||
return "skip";
|
||||
}
|
||||
return;
|
||||
case SyntaxKind.EnumDeclaration:
|
||||
const enumKeyword = Debug.checkDefined(tokenToString(SyntaxKind.EnumKeyword));
|
||||
diagnostics.push(createDiagnosticForNode(node, Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, enumKeyword));
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
a.js(2,3): error TS8017: Signature declarations can only be used in TypeScript files.
|
||||
|
||||
|
||||
==== a.js (1 errors) ====
|
||||
class A {
|
||||
constructor();
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS8017: Signature declarations can only be used in TypeScript files.
|
||||
}
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
//// [tests/cases/compiler/jsFileCompilationConstructorOverloadSyntax.ts] ////
|
||||
|
||||
=== a.js ===
|
||||
class A {
|
||||
>A : Symbol(A, Decl(a.js, 0, 0))
|
||||
|
||||
constructor();
|
||||
}
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
//// [tests/cases/compiler/jsFileCompilationConstructorOverloadSyntax.ts] ////
|
||||
|
||||
=== a.js ===
|
||||
class A {
|
||||
>A : A
|
||||
|
||||
constructor();
|
||||
}
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
a.js(1,10): error TS8017: Signature declarations can only be used in TypeScript files.
|
||||
|
||||
|
||||
==== a.js (1 errors) ====
|
||||
function foo();
|
||||
~~~
|
||||
!!! error TS8017: Signature declarations can only be used in TypeScript files.
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
//// [tests/cases/compiler/jsFileCompilationFunctionOverloadSyntax.ts] ////
|
||||
|
||||
=== a.js ===
|
||||
function foo();
|
||||
>foo : Symbol(foo, Decl(a.js, 0, 0))
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
//// [tests/cases/compiler/jsFileCompilationFunctionOverloadSyntax.ts] ////
|
||||
|
||||
=== a.js ===
|
||||
function foo();
|
||||
>foo : () => any
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
a.js(2,3): error TS8017: Signature declarations can only be used in TypeScript files.
|
||||
|
||||
|
||||
==== a.js (1 errors) ====
|
||||
class A {
|
||||
foo();
|
||||
~~~
|
||||
!!! error TS8017: Signature declarations can only be used in TypeScript files.
|
||||
}
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
//// [tests/cases/compiler/jsFileCompilationMethodOverloadSyntax.ts] ////
|
||||
|
||||
=== a.js ===
|
||||
class A {
|
||||
>A : Symbol(A, Decl(a.js, 0, 0))
|
||||
|
||||
foo();
|
||||
>foo : Symbol(A.foo, Decl(a.js, 0, 9))
|
||||
}
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
//// [tests/cases/compiler/jsFileCompilationMethodOverloadSyntax.ts] ////
|
||||
|
||||
=== a.js ===
|
||||
class A {
|
||||
>A : A
|
||||
|
||||
foo();
|
||||
>foo : () => any
|
||||
}
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
// @allowJs: true
|
||||
// @noEmit: true
|
||||
// @filename: a.js
|
||||
class A {
|
||||
constructor();
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
// @allowJs: true
|
||||
// @noEmit: true
|
||||
// @filename: a.js
|
||||
function foo();
|
||||
@ -0,0 +1,6 @@
|
||||
// @allowJs: true
|
||||
// @noEmit: true
|
||||
// @filename: a.js
|
||||
class A {
|
||||
foo();
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user