Skip to content

Commit ec091f8

Browse files
committed
[JavaScript] Rename TypeScript to TSX, add proper TypeScript syntax
1 parent 01ebaf4 commit ec091f8

File tree

5 files changed

+41
-2
lines changed

5 files changed

+41
-2
lines changed

JavaScript/JSX.sublime-syntax

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ name: JSX
55
file_extensions:
66
- jsx
77
scope: source.jsx
8-
extends: Packages/JavaScript/JavaScript.sublime-syntax
8+
extends: JavaScript.sublime-syntax
99

1010
variables:
1111
jsx_identifier_part: (?:{{identifier_part}}|-)

JavaScript/TSX.sublime-syntax

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
%YAML 1.2
2+
---
3+
version: 2
4+
name: TSX
5+
file_extensions:
6+
- tsx
7+
scope: source.tsx
8+
extends:
9+
- JSX.sublime-syntax
10+
- TypeScript.sublime-syntax

JavaScript/TypeScript.sublime-syntax

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ name: TypeScript
55
file_extensions:
66
- ts
77
scope: source.ts
8-
extends: Packages/JavaScript/JSX.sublime-syntax
8+
extends: JavaScript.sublime-syntax
99

1010
variables:
1111
dot_accessor: (?:[?!]?\.)

JavaScript/tests/syntax_test_tsx.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// SYNTAX TEST "Packages/JavaScript/TSX.sublime-syntax"
2+
3+
<foo />;
4+
// ^^^^^^^ meta.jsx meta.tag
5+
// ^ punctuation.definition.tag.begin
6+
// ^^^ meta.tag.name entity.name.tag
7+
// ^^ punctuation.definition.tag.end
8+
9+
type x < T = Foo > = any;
10+
// ^^^^^^^^^^^^^^^^^^^^^^^^ meta.type-alias
11+
// ^^^^ storage.type
12+
// ^ entity.name.type
13+
// ^^^^^^^^^^^ meta.generic
14+
// ^ punctuation.definition.generic.begin
15+
// ^ variable.parameter.generic
16+
// ^ keyword.operator.assignment
17+
// ^^^ support.class
18+
// ^ punctuation.definition.generic.end
19+
// ^ keyword.operator.assignment
20+
// ^^^ meta.type-alias support.type.any
21+
22+
// This is invalid TSX as the TypeScript type assertion is parsed as a JSX tag
23+
let strLength: number = (<string>someValue).length; // </string>
24+
// ^^^^^^^^ meta.tag - meta.assertion
25+
// ^^^^^^^^^ meta.tag - comment

JavaScript/tests/syntax_test_typescript.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,10 @@ x as const;
377377
// ^ keyword.operator.type
378378
// ^ punctuation.terminator.statement
379379

380+
// This is a type assertion that is incompatible with JSX
381+
let strLength: number = (<string>someValue).length; // </string>
382+
// ^^^^^^^^ meta.assertion - meta.tag
383+
// ^^^^^^^^^ comment - meta.tag
380384

381385
/* Types */
382386

0 commit comments

Comments
 (0)