On Windows, diagnostics are show at the incorrect position after a custom tag
On Windows, after a custom tag is used, the diagnostics are shown at the incorrect positions or not shown at all. marko-type-check still shows the correct errors in the correct positions.
Given the following template, every instance of input.name++ should have an error underline.
export interface Input {
name?: string;
}
<my-title name=input.name/>
<div>${input.name++}</div>
$ input.name++;
<div>${input.name++}</div>
The error is shown in the wrong position and only once:
export interface Input {
name?: string;
}
<my-title name=input.name/>
<div>${input.name++}</div>
$ input.name++;
<div>${input.name++}</div>
^ 'input.name' is possibly 'undefined'.
Moving the use of <my-title> below the errors will cause the diagnostics above to be correctly rendered and the diagnostics below to be ignored.
export interface Input {
name?: string;
}
<div>${input.name++}</div>
^^^^^^^^^^ 'input.name' is possibly 'undefined'.
<my-title name=input.name/>
$ input.name++;
<div>${input.name++}</div>
Removing the use of <my-title> shows all of the diagnostics in the right places as expected:
export interface Input {
name?: string;
}
<div>${input.name++}</div>
^^^^^^^^^^ 'input.name' is possibly 'undefined'.
$ input.name++;
^^^^^^^^^^ 'input.name' is possibly 'undefined'.
<div>${input.name++}</div>
^^^^^^^^^^ 'input.name' is possibly 'undefined'.
Environment
Windows :( Marko VSCode v1.1.15 VSCode 1.85.1
"marko": "^5.32.2",
"@marko/run": "^0.4.0",
"@marko/type-check": "^1.0.7",
"typescript": "^5.3.3"
This issue seems related to the auto import, or the way the typescript gets generated for the auto imports. Doing a manual import of the tag works as-expected:
import titleComponent from "./my-title.marko";
export interface Input {
name?: string;
}
<div>${input.name++}</div>
^^^^^^^^^^ 'input.name' is possibly 'undefined'.
$ input.name++;
^^^^^^^^^^ 'input.name' is possibly 'undefined'.
<titleComponent/>
<div>${input.name++}</div>
^^^^^^^^^^ 'input.name' is possibly 'undefined'.
I've got a reproduction here that is just the basic-ts example with most of the code removed.
Interestingly, doing import titleComponent from "<my-title>" also causes the bug while doing the import path ourselves doesn't. The extracted script is identical between <my-title> and ./my-title.marko...