Skip to content

fix: support Unicode identifiers in Java class name validation (#789)#993

Merged
wenytang-ms merged 5 commits intomainfrom
fix/unicode-java-identifier-789
Apr 23, 2026
Merged

fix: support Unicode identifiers in Java class name validation (#789)#993
wenytang-ms merged 5 commits intomainfrom
fix/unicode-java-identifier-789

Conversation

@wenytang-ms
Copy link
Copy Markdown
Contributor

Change isJavaIdentifier() regex from ASCII-only /^([a-zA-Z_$][a-zA-Z\d_$]*)$/ to Unicode-aware regex using ES2018 property escapes per JLS §3.8.

This allows non-ASCII identifiers (e.g., Japanese ほげ, Chinese 中文类名, accented Ñoño) to be accepted in the New Java File and Rename wizards.

Fixes #789

Change isJavaIdentifier() regex from ASCII-only /^([a-zA-Z_$][a-zA-Z\d_$]*)$/
to Unicode-aware regex using ES2018 property escapes per JLS §3.8.

This allows non-ASCII identifiers (e.g., Japanese ほげ, Chinese 中文类名,
accented Ñoño) to be accepted in the New Java File and Rename wizards.

Fixes #789

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wenytang-ms
Copy link
Copy Markdown
Contributor Author

before
08_type-japanese-name_after

fixed:
08_type-japanese-name_after

wenytang-ms and others added 3 commits April 22, 2026 16:51
The .project file defined name '1.helloworld' but JDT LS may override it
with the folder name 'simple'. Align .project name with folder name to
eliminate the inconsistency.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
JDT LS may return additional source roots (e.g. target/generated-sources)
that shift node indices. Replace hardcoded array indices with find()-by-name
lookups to make tests resilient to JDT LS version differences.

- Maven: find containers by name instead of [2]/[3]
- Maven: check specific nodes hidden instead of exact count
- Gradle: find nodes by name, increase timeout to 120s
- Multi-module: add assertion guard before getChildren()

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Upgrade actions/checkout@v2 -> @v4, actions/setup-java@v1 -> @v4,
  actions/setup-node@v2 -> @v4 across all 3 CI workflows
- setup-java@v4 with distribution: temurin fixes macOS ARM64 JAVA_HOME
- Multi-module test: add languageServerApiManager.ready() to suiteSetup
  so Maven module names are fully resolved before assertions
- Accept folder name or .project name variants for level1 submodule

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wenytang-ms wenytang-ms merged commit adfdb2e into main Apr 23, 2026
6 checks passed
@wenytang-ms wenytang-ms deleted the fix/unicode-java-identifier-789 branch April 23, 2026 02:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"New > Java Class" wizard cannot create a class for Japanese identifiers.

2 participants