Skip to content

Format Document inserts spaces between curly braces after point operator #1741

Closed

Description

Prerequisites

  • I have written a descriptive issue title.
  • I have searched all issues to ensure it has not already been reported.
  • I have read the troubleshooting guide.
  • I am sure this issue is with the extension itself and does not reproduce in a standalone PowerShell instance.
  • I have verified that I am using the latest version of Visual Studio Code and the PowerShell extension.

Summary

I have the following line:
Add-Member -InputObject $computer -MemberType NoteProperty -Name LIRoom -Value $gld.{Custom.Büro}
After Format Document it looks:
Add-Member -InputObject $computer -MemberType NoteProperty -Name LIRoom -Value $gld. { Custom.Büro }
which is syntactically false.

PowerShell Version

Name                           Value
----                           -----
PSVersion                      5.1.19041.1237
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.1237
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Visual Studio Code Version

1.61.2
6cba118ac49a1b88332f312a8f67186f7f3c1643
x64

Extension Version

ms-vscode.powershell@2021.10.2

Steps to Reproduce

see above

Visuals

No response

Logs

No response

Activity

  1. JustinGrote commented on Nov 10, 2021

    @JustinGrote

    Do you have these settings configured?
    image
    image

    It's a little odd you'd be using a scriptblock here vs. evaluating the scriptblock and assigning it here as a variable, this may be an edge case.

  2. andyleejordan commented on Nov 10, 2021

    @andyleejordan
    Member

    Formatting is done via PSScriptAnalyzer, transferring issue...

  3. bergmeister commented on Nov 10, 2021

    @bergmeister
    Collaborator

    Adding this to my list to triage and fix this week.

  4. andyleejordan commented on Nov 10, 2021

    @andyleejordan
    Member

    Thanks Christoph Bergmeister (@bergmeister)! My personal triage priority is any bug with destructive behavior (which has recently had some activity in the repo, but I can't find it right now).

  5. bergmeister commented on Nov 10, 2021

    @bergmeister
    Collaborator

    No worries and I agree. The other one that you probably think of, which is on my list as well is #1580

  6. jborean93 commented on Nov 11, 2021

    @jborean93

    While this does look like a bug I'm not sure using braces like this is actually what you want. AFAIK when you do a property accesor it will cast the value to a string so $obj.{My Property} will convert the scriptblock to a string and use that. It won't execute that script block so doing $obj."My Property" or even $obj.$varWithPropertyNameAsValue will work instead as a workaround for this problem.

  7. bergmeister commented on Nov 22, 2021

    @bergmeister
    Collaborator

    Put it through the debugger, the OpenBrace part of PSUseConsistentWhitespace is causing this, a more minimal repro is $foo. { bar}. I am thinking we could fix this by checking whether the previous token is TokenKind.Dot and skip OpenBrace for such a brace. Opened PR below with a fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions