Skip to content

cmd/gofmt: inconsistent indentation with comments in switch #38495

@seankhliao

Description

@seankhliao

What version of Go are you using (go version)?

$ go version
go version go1.14.2 linux/amd64

Does this issue reproduce with the latest release?

yes, also in the playground

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/arccy/.cache/go-build"
GOENV="/home/arccy/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/arccy/data/xdg/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/arccy/testrepo-82/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build346952514=/tmp/go-build -gno-record-gcc-switches"

What did you do?

write inconsistently indented code/comments in a switch
https://play.golang.org/p/QWIBPjclreK

package main

func a() {
	switch "" {
	case "a":
// a comment
	case "b":
	}
}

func b() {
	switch "" {
	case "a":
	// a comment
case "b":
	}
}

What did you expect to see?

consistently indented comments

package main

func a() {
	switch "" {
	case "a":
	// a comment
	case "b":
	}
}

func b() {
	switch "" {
	case "a":
	// a comment
	case "b":
	}
}

What did you see instead?

package main

func a() {
	switch "" {
	case "a":
		// a comment
	case "b":
	}
}

func b() {
	switch "" {
	case "a":
		// a comment
	case "b":
	}
}

observations

this does not happen when the comment and the case below it are indented by the same number of whitespace characters, so the below formats properly

package main

func a() {
	switch "" {
	case "a":
 // leading single space
	case "b": // leading tab
	}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions