Skip to content

IncreaseIndentationForFirstPipeline incorrectly closes parent block depending on placement of pipe on beginning or end of line #2038

Closed
@cure1245

Description

@cure1245

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

I have a function that uses XMLDocument.SelectNodes to grab attribute nodes,
name them with a PSObject, and then filter them using Where-Object.

Expected behavior

# The expected behavior is for the bracket closing the ForEach-Object block to be directly under the F:
    process {
        $syncXml.SelectNodes('//@LDAPGroupName') |
            ForEach-Object {
                [PSCustomObject]@{ Group = $_.Value } |
                    Where-Object { $_.Group -like $Group }
            }
    }

Actual behavior

If we leave the pipes at the end of the lines as is standard practice, we get this:

# the close of the ForEach-Object block now appears under the bracket of the type designation
    process {
        $syncXml.SelectNodes('//@LDAPGroupName') |
            ForEach-Object {
                [PSCustomObject]@{ Group = $_.Value } |
                    Where-Object { $_.Group -like $Group }
                }

    }

However, the formatter correctly places the closing brace if we move the last pipe to the next line:

# Moving the pipe fixes the issue:
    process {
        $syncXml.SelectNodes('//@LDAPGroupName') |
            ForEach-Object {
                [PSCustomObject]@{ Group = $_.Value }
                | Where-Object { $_.Group -like $Group }
            }
    }

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                      7.4.5
PSEdition                      Core
GitCommitId                    7.4.5
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

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

1.22.0

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions