Skip to content

Commit 7dc3de0

Browse files
authored
fix: Skip export default in namespace (#2267)
1 parent 79d2e6a commit 7dc3de0

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

Diff for: src/diagnosticMessages.json

+1
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
"A definite assignment assertion '!' is not permitted in this context.": 1255,
116116
"A class may only extend another class.": 1311,
117117
"A parameter property cannot be declared using a rest parameter.": 1317,
118+
"A default export can only be used in a module.": 1319,
118119
"An identifier or keyword cannot immediately follow a numeric literal.": 1351,
119120

120121
"Duplicate identifier '{0}'.": 2300,

Diff for: src/parser.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -2506,8 +2506,16 @@ export class Parser extends DiagnosticEmitter {
25062506
);
25072507
while (!tn.skip(Token.CLOSEBRACE)) {
25082508
let member = this.parseTopLevelStatement(tn, declaration);
2509-
if (member) members.push(member);
2510-
else {
2509+
if (member) {
2510+
if (member.kind == NodeKind.EXPORT) {
2511+
this.error(
2512+
DiagnosticCode.A_default_export_can_only_be_used_in_a_module,
2513+
member.range,
2514+
);
2515+
return null;
2516+
}
2517+
members.push(member);
2518+
} else {
25112519
this.skipStatement(tn);
25122520
if (tn.skip(Token.ENDOFFILE)) {
25132521
this.error(

Diff for: tests/parser/export-default-in-namespace.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
namespace Foo {
2+
export default bar;
3+
}
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// ERROR 1319: "A default export can only be used in a module." in export-default-in-namespace.ts(2,3+18)

0 commit comments

Comments
 (0)