You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make sure you are able to repro it on the latest version
Search the existing issues.
Steps to reproduce
Note:
I've observed the symptom in the context of tab-completion in Visual Studio Code, but I assume the underlying problem is relevant to this repo.
The editor's tab completion / IntelliSense always "knows" the following phantom variables due to a leaky implementation detail (they correspond to the parameter names of the TabExpansion2 function):
$ast, $tokens, $positionOfCursor, $options
Tab-completion / IntelliSense results of these variables is based on the type these (parameter) variables have in Tabexpansion2, even if you explicitly define them with a value of a different type.
For instance, even if you define [int] $positionOfCursor = 42 in your script, tab-completion on a later line still shows the properties of the [IScriptPosition] type that the -positionOfCursor parameter is typed as.
Even if you don't define your own versions of these variables, their mere (ostensible) presence during tab-completion is confusing.
In an empty .ps1 file open in Visual Studio Code, type the following
$tokens.
Expected behavior
No IntelliSense results, given that $tokens isn't defined.
Actual behavior
IntelliSense results are the [array] type's instance property names, because the -token parameter of TabExpansion2 happens to be array-typed (Token[]])
Error details
No response
Environment data
Name Value
---------
PSVersion 7.3.0
PSEdition Core
GitCommitId 7.3.0
OS Darwin 22.1.0 Darwin Kernel Version 22.1.0: Sun Oct 920:15:09 PDT 2022; root:xnu-8792.41.9~2/RELEASE_ARM64_T6000
Platform Unix
PSCompatibleVersions {1.0,2.0,3.0,4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Prerequisites
Steps to reproduce
Note:
The editor's tab completion / IntelliSense always "knows" the following phantom variables due to a leaky implementation detail (they correspond to the parameter names of the
TabExpansion2function):$ast,$tokens,$positionOfCursor,$optionsTab-completion / IntelliSense results of these variables is based on the type these (parameter) variables have in
Tabexpansion2, even if you explicitly define them with a value of a different type.For instance, even if you define
[int] $positionOfCursor = 42in your script, tab-completion on a later line still shows the properties of the[IScriptPosition]type that the-positionOfCursorparameter is typed as.Even if you don't define your own versions of these variables, their mere (ostensible) presence during tab-completion is confusing.
In an empty
.ps1file open in Visual Studio Code, type the following$tokens.Expected behavior
No IntelliSense results, given that
$tokensisn't defined.Actual behavior
IntelliSense results are the
[array]type's instance property names, because the-tokenparameter ofTabExpansion2happens to be array-typed (Token[]])Error details
No response
Environment data
Version
PowerShell Extension v2022.11.0
Visuals
No response