Skip to content

Commit 22985ae

Browse files
committed
feat(fe): support Unicode 16 in identifiers
Unicode 16 added some new characters which are legal in identifiers, such as U+1C89 CYRILLIC CAPITAL LETTER TJE. Update our tables for Unicode 16.
1 parent 8fd937c commit 22985ae

File tree

7 files changed

+142
-111
lines changed

7 files changed

+142
-111
lines changed

docs/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ Semantic Versioning.
1717
string and so will never equal undefined; use 'undefined' instead").
1818
(Implemented by [CoderMuffin][].) ([#1207][])
1919
* Emacs: The Eglot plugin now supports `typescript-mode`.
20+
* Unicode 16 is now supported, including new Cyrillic code points in
21+
identifiers.
2022

2123
### Fixed
2224

src/quick-lint-js/fe/lex-unicode-generated.cpp

Lines changed: 128 additions & 96 deletions
Large diffs are not rendered by default.

test/test-lex-unicode.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ std::string pretty(char32_t c) {
2424
}
2525

2626
bool icu_data_is_valid() {
27-
std::uint8_t minimum_unicode_major_version = 15;
28-
std::uint8_t minimum_unicode_minor_version = 1;
27+
std::uint8_t minimum_unicode_major_version = 16;
28+
std::uint8_t minimum_unicode_minor_version = 0;
2929

3030
UVersionInfo version;
3131
::u_getUnicodeVersion(version);

test/test-lex.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1473,6 +1473,9 @@ TEST_F(Test_Lex, non_ascii_identifier) {
14731473

14741474
// KHOJKI LETTER QA, introduced in Unicode 15.
14751475
this->check_single_token(u8"\U0001123f"_sv, u8"\U0001123f"_sv);
1476+
1477+
// CYRILLIC CAPITAL LETTER TJE, introduced in Unicode 16.
1478+
this->check_single_token(u8"\u1c89"_sv, u8"\u1c89"_sv);
14761479
}
14771480

14781481
TEST_F(Test_Lex, non_ascii_identifier_with_escape_sequence) {

tools/generate-lex-unicode/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,10 @@ function isIDContinue(codePoint) {
169169
}
170170

171171
let ID_START_CODE_POINTS = new Set(
172-
require("@unicode/unicode-15.1.0/Binary_Property/ID_Start/code-points.js")
172+
require("@unicode/unicode-16.0.0/Binary_Property/ID_Start/code-points.js")
173173
);
174174
let ID_CONTINUE_CODE_POINTS = new Set(
175-
require("@unicode/unicode-15.1.0/Binary_Property/ID_Continue/code-points.js")
175+
require("@unicode/unicode-16.0.0/Binary_Property/ID_Continue/code-points.js")
176176
);
177177

178178
// Pattern_White_Space

tools/generate-lex-unicode/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
"fmt": "prettier --write '*.js' '*.json'"
44
},
55
"dependencies": {
6-
"@unicode/unicode-15.0.0": "*",
7-
"@unicode/unicode-15.1.0": "*"
6+
"@unicode/unicode-16.0.0": "*"
87
},
98
"devDependencies": {
109
"prettier": "^2.8.4"

tools/generate-lex-unicode/yarn.lock

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,10 @@
22
# yarn lockfile v1
33

44

5-
"@unicode/unicode-15.0.0@*":
6-
version "1.5.2"
7-
resolved "https://registry.yarnpkg.com/@unicode/unicode-15.0.0/-/unicode-15.0.0-1.5.2.tgz#5350ad022050ca5e165f8352d9f971d418c99deb"
8-
integrity sha512-PepMvMxf9j4sp4bZn7W9JJoMxynHk66ZPCsx6n3v47T5vmM+qfIy0z1MMU+EDmRZr2cvs1aT9ZwUEMRPVXR23g==
9-
10-
"@unicode/unicode-15.1.0@*":
11-
version "1.5.2"
12-
resolved "https://registry.yarnpkg.com/@unicode/unicode-15.1.0/-/unicode-15.1.0-1.5.2.tgz#0358d05ab99a7d05c12c68cc2123cf124c34beb9"
13-
integrity sha512-7PAgnShDr8ziK6XeHB/TUVFboDFEhaQKKyrw55/Kx9o6AQDy1s7dJ9KRpRerW9nrR5qMGUQvOqTXOAek6ZIXkg==
5+
"@unicode/unicode-16.0.0@*":
6+
version "1.6.6"
7+
resolved "https://registry.yarnpkg.com/@unicode/unicode-16.0.0/-/unicode-16.0.0-1.6.6.tgz#b4c4b7d2b8976cb6b322ff553308862e6da0cc23"
8+
integrity sha512-NQRvvfCYA+bZztjMRN8xgAELYDxBRDHEQaU648UYd4leEUkiEOBlezGLvZKvzA9wiN04GbNypXcrEGQxuU0Wxw==
149

1510
prettier@^2.8.4:
1611
version "2.8.4"

0 commit comments

Comments
 (0)