Skip to content

Commit d99f6b2

Browse files
authored
fix(4016): skip unknown pragmas (#4020)
1 parent 6b34cd4 commit d99f6b2

5 files changed

Lines changed: 82 additions & 1 deletion

File tree

internal/parser/parser.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6479,7 +6479,8 @@ func extractPragmas(commentRange ast.CommentRange, text string) []ast.Pragma {
64796479
}
64806480
pragmaName := extractName(text, pos+1)
64816481
if !(pragmaName == "jsx" || pragmaName == "jsxfrag" || pragmaName == "jsximportsource" || pragmaName == "jsxruntime") {
6482-
break
6482+
pos++
6483+
continue
64836484
}
64846485
start := skipBlanks(text, pos+len(pragmaName)+1)
64856486
pos = skipNonBlanks(text, start)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//// [tests/cases/compiler/jsxPragmaAfterTags.tsx] ////
2+
3+
//// [jsxPragmaAfterTags.tsx]
4+
/**
5+
* @fileoverview comment
6+
* @jsx h
7+
*/
8+
declare var h: any;
9+
declare var Fragment: any;
10+
declare namespace JSX {
11+
interface Element {}
12+
}
13+
14+
const x = <Fragment></Fragment>;
15+
16+
17+
//// [jsxPragmaAfterTags.js]
18+
"use strict";
19+
const x = h(Fragment, null);
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//// [tests/cases/compiler/jsxPragmaAfterTags.tsx] ////
2+
3+
=== jsxPragmaAfterTags.tsx ===
4+
/**
5+
* @fileoverview comment
6+
* @jsx h
7+
*/
8+
declare var h: any;
9+
>h : Symbol(h, Decl(jsxPragmaAfterTags.tsx, 4, 11))
10+
11+
declare var Fragment: any;
12+
>Fragment : Symbol(Fragment, Decl(jsxPragmaAfterTags.tsx, 5, 11))
13+
14+
declare namespace JSX {
15+
>JSX : Symbol(JSX, Decl(jsxPragmaAfterTags.tsx, 5, 26))
16+
17+
interface Element {}
18+
>Element : Symbol(Element, Decl(jsxPragmaAfterTags.tsx, 6, 23))
19+
}
20+
21+
const x = <Fragment></Fragment>;
22+
>x : Symbol(x, Decl(jsxPragmaAfterTags.tsx, 10, 5))
23+
>Fragment : Symbol(Fragment, Decl(jsxPragmaAfterTags.tsx, 5, 11))
24+
>Fragment : Symbol(Fragment, Decl(jsxPragmaAfterTags.tsx, 5, 11))
25+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//// [tests/cases/compiler/jsxPragmaAfterTags.tsx] ////
2+
3+
=== jsxPragmaAfterTags.tsx ===
4+
/**
5+
* @fileoverview comment
6+
* @jsx h
7+
*/
8+
declare var h: any;
9+
>h : any
10+
11+
declare var Fragment: any;
12+
>Fragment : any
13+
14+
declare namespace JSX {
15+
interface Element {}
16+
}
17+
18+
const x = <Fragment></Fragment>;
19+
>x : JSX.Element
20+
><Fragment></Fragment> : JSX.Element
21+
>Fragment : any
22+
>Fragment : any
23+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// @jsx: react
2+
3+
/**
4+
* @fileoverview comment
5+
* @jsx h
6+
*/
7+
declare var h: any;
8+
declare var Fragment: any;
9+
declare namespace JSX {
10+
interface Element {}
11+
}
12+
13+
const x = <Fragment></Fragment>;

0 commit comments

Comments
 (0)