Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Leaky implementation of tab-completion / IntelliSense surfaces phantom variables named for the parameters of the TabExpansion2 function #1969

Copy link
Copy link
@mklement0

Description

@mklement0
Issue body actions

Prerequisites

  • Write a descriptive title.
  • 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  9 20: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

Version

PowerShell Extension v2022.11.0

Visuals

No response

Reactions are currently unavailable

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.