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

Formatting misses certain keywords (unary operators, 'until') #2095

Copy link
Copy link
@TMA-2

Description

@TMA-2
Issue body actions

I found that during formatting, some keywords aren't separated from leading braces (while), and some are seemingly ignored entirely (until). Also, unary operators (-not, -bnot, etc.) aren't separated with whitespace the same way as binary operators (-eq, -like, etc.).

Steps to reproduce

  1. Paste the following into a script
  2. Use Invoke-Formatter or the PowerShell VSCode extension to format the document
if(-not$false) {
    do{
        "Hello!"
    }until(
        $True
    )
    do{
        "Oh, hi!"
    }while(
        -not$True
    )
    while(-not$True) {
        "This won't show up."
    }
}

Expected behavior

Roughly the following output. Some is dependent on brace style (OTBS in this case), but all rules for inserting whitespace around keywords and operators should be enabled.

if (-not $false) {
    do {
        'Hello!'
    } until (
        $True
    )
    do {
        'Oh, hi!'
    } while (
        -not $True
    )
    while (-not $True) {
        "This won't show up."
    }
}

Actual behavior

if (-not$false) { # -not isn't separated by whitespace
    do {
        'Hello!'
    }until( # no whitespace around Until
        $True
    )
    do {
        'Oh, hi!'
    }while ( # only trailing whitespace for While
        -not$True # no separation
    )
    while (-not$True) { # no separation for -not and -bnot
        "This won't show up."
    }
}

Environment data

> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.19041.5737
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.5737
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

> (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }
1.23.0

1.23.0 is the version included with the current (2025.0.0) VSCode PowerShell extension. I've also installed and tested 1.24.0 with the same results.

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.