PowerShell / PowerShell/PSScriptAnalyzer

Lines unaffected from sytax errors get formatted wrong on PowerShell 5

Open
#1,813 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area - Formatter Issue-Bug Up for Grabs
Dominant language
C#
Stars
2.2k
Forks
414
Avg merge
13h 1m
Merged PRs (30d)
2

Description

Before submitting a bug report:

  • Make sure you are able to repro it on the latest released version
  • Perform a quick search for existing issues to check if this bug has already been reported

Steps to reproduce

  1. Open a PowerShell 5 window
  2. Type the following code with intentional syntax errors:
$code = @"
@(
  @{
    ""
  }
  ""
)
test /parameter
"@

Invoke-Formatter $code

Expected behavior

Slash should not be seperated from parameter since it isn't affected from the syntax error.

@(
    @{
        ""
    }
    ""
)
test /parameter

Actual behavior

Slash is treated as an operator and is seperated from parameter. This behavior is unique to PowerShell 5 and does not occur in v7.

@(
    @{
        ""
    }
    ""
)
test / parameter

If an unexpected error was thrown then please report the full error details using e.g. $error[0] | Select-Object *

Environment data

> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.19041.1320
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.1320
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.20.0

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the PowerShell 5 case with Invoke-Formatter and the provided syntax-error snippet, then trace the formatter path that handles unaffected lines after a parse error. Done means PowerShell 5 keeps the slash attached to parameter, matching the expected output, without changing the existing PowerShell 7 behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
powershell
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.