Skip to content

tsgolint panics if (Windows) path contains non-ASCII characters #318

@sondr3

Description

@sondr3

We've gradually started adopting oxlint at work, but have run into an issue where one of my colleagues cannot run oxlint --type-aware due to his home directory being C\:/Users/TobiasLægreid/. This issue does not happen when running typescript-native directly however (i.e., all our tsgo -p tsconfig.react.json --noEmit and so on works fine on their machine).

Versions used:

devDependencies:
oxlint 1.24.0
oxlint-tsgolint 0.2.1
@typescript/native-preview 7.0.0-dev.20251023.1
stacktrace from panic
 "C:\Program Files\nodejs\pnpm.cmd" run oxlint
> @corp/app@ oxlint C:\Users\TobiasLægreid\dev\app\frontend
> oxlint --type-aware .
panic: regexp: Compile(`(?i)^((C\:/Users/TobiasL\ægreid/dev/app/frontend/packages/react/src(/.+?)?/[^/]*\.test\.ts[^/]*)|(C\:/Users/TobiasL\ægreid/dev/app/frontend/packages/react/src(/.+?)?/[^/]*\.stories\.ts[^/]*)|(C\:/Users/TobiasL\ægreid/dev/app/frontend/packages/react/src(/.+?)?/[^/]*\.mdx))($|/)`): error parsing regexp: invalid escape sequence: `\æ`
goroutine 299 [running]:
regexp.MustCompile({0xc0000b0840, 0x151})
        /opt/hostedtoolcache/go/1.25.0/x64/src/regexp/regexp.go:313 +0xb4
github.com/microsoft/typescript-go/internal/tsoptions.getWildcardDirectories({0xc000500f70, 0x1, 0x70?}, {0xc0000a9840?, 0xc000118900?, 0x70?}, {0x28?, {0xc000118c60?, 0x7ff62e770331?}})
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/tsoptions/wildcarddirectories.go:37 +0xcd
github.com/microsoft/typescript-go/internal/tsoptions.(*ParsedCommandLine).WildcardDirectories.func1()
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/tsoptions/parsedcommandline.go:211 +0x5b
sync.(*Once).doSlow(0x5b?, 0x5b?)
        /opt/hostedtoolcache/go/1.25.0/x64/src/sync/once.go:78 +0xac
sync.(*Once).Do(...)
        /opt/hostedtoolcache/go/1.25.0/x64/src/sync/once.go:69
github.com/microsoft/typescript-go/internal/tsoptions.(*ParsedCommandLine).WildcardDirectories(0xc00064c140)
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/tsoptions/parsedcommandline.go:209 +0x3e
github.com/microsoft/typescript-go/internal/project.(*ConfigFileRegistryBuilder).updateRootFilesWatch(0xc00021a510, {0xc000118c60?, 0x5b?}, 0xc000492930)
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/project/configfileregistrybuilder.go:174 +0x69
github.com/microsoft/typescript-go/internal/project.(*ConfigFileRegistryBuilder).reloadIfNeeded(0xc00021a510, 0xc000492930, {0xc000118c60, 0x5b}, {0xc0000203c0, 0x5b}, 0x0)
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/project/configfileregistrybuilder.go:111 +0x157
github.com/microsoft/typescript-go/internal/project.(*ConfigFileRegistryBuilder).acquireConfigForOpenFile.func2(0xc000492930?)
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/project/configfileregistrybuilder.go:271 +0x10a
github.com/microsoft/typescript-go/internal/project/dirty.(*SyncMapEntry[...]).changeLocked(0xc0004dfcb8?, 0x2?)
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/project/dirty/syncmap.go:105 +0x1b6
github.com/microsoft/typescript-go/internal/project/dirty.(*SyncMapEntry[...]).ChangeIf(0x7ff62f1ff880, 0xc0000203c0, 0xc0004dfd40?)
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/project/dirty/syncmap.go:135 +0xc5
github.com/microsoft/typescript-go/internal/project.(*ConfigFileRegistryBuilder).acquireConfigForOpenFile(0xc00021a510, {0xc000118c60, 0x5b}, {0xc0000203c0, 0x5b}, {0xc000490ee0, 0x62}, 0x0)
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/project/configfileregistrybuilder.go:258 +0x24e
github.com/microsoft/typescript-go/internal/project.(*ConfigFileRegistryBuilder).FindOrAcquireConfigForOpenFile(0xc00021a540?, {0xc000118c60?, 0x5b?}, {0xc0000203c0?, 0xc0004dfe68?}, {0xc000490ee0?, 0xc00037ce68?}, 0x7ff62ec046c0?, 0xc0004dfe48?)
        /home/runner/work/tsgolint/tsgolint/typescript-go/internal/project/configfileregistrybuilder.go:93 +0x37
github.com/typescript-eslint/tsgolint/internal/utils.(*TsConfigResolver).findConfigWithReferences.func2({{0xc000118c60?, 0xc00026ef60?}})
        /home/runner/work/tsgolint/tsgolint/internal/utils/find_tsconfig.go:90 +0xc9
github.com/typescript-eslint/tsgolint/internal/utils.BreadthFirstSearchParallelEx[...].func3(0xc0000088d0)
        /home/runner/work/tsgolint/tsgolint/internal/utils/bfs.go:117 +0x128
created by github.com/typescript-eslint/tsgolint/internal/utils.BreadthFirstSearchParallelEx[...].func1-range1 in goroutine 1
        /home/runner/work/tsgolint/tsgolint/internal/utils/bfs.go:102 +0x22f
Error running tsgolint: "exit status: exit code: 2" ELIFECYCLE  Command failed with exit code 1.
Process finished with exit code 1

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions