diff --git a/go/analysis/passes/fieldalignment/fieldalignment.go b/go/analysis/passes/fieldalignment/fieldalignment.go index 6b86049634..eae1e0e7ae 100644 --- a/go/analysis/passes/fieldalignment/fieldalignment.go +++ b/go/analysis/passes/fieldalignment/fieldalignment.go @@ -76,7 +76,7 @@ func fieldalignment(pass *analysis.Pass, node *ast.StructType, typ *types.Struct // TODO: Preserve multi-named fields instead of flattening. var flat []*ast.Field for _, f := range node.Fields.List { - if len(f.Names) == 1 { + if len(f.Names) <= 1 { flat = append(flat, f) continue } diff --git a/go/analysis/passes/fieldalignment/testdata/src/a/a.go b/go/analysis/passes/fieldalignment/testdata/src/a/a.go index 2a443a52e7..b47ee19c03 100644 --- a/go/analysis/passes/fieldalignment/testdata/src/a/a.go +++ b/go/analysis/passes/fieldalignment/testdata/src/a/a.go @@ -21,3 +21,17 @@ type ZeroBad struct { // want "struct of size 8 could be 4" a uint32 b [0]byte } + +type NoNameGood struct { + Good + y int32 + x byte + z byte +} + +type NoNameBad struct { // want "struct of size 20 could be 16" + Good + x byte + y int32 + z byte +} diff --git a/go/analysis/passes/fieldalignment/testdata/src/a/a.go.golden b/go/analysis/passes/fieldalignment/testdata/src/a/a.go.golden index 76d8bb3f09..34fc21b9fd 100644 --- a/go/analysis/passes/fieldalignment/testdata/src/a/a.go.golden +++ b/go/analysis/passes/fieldalignment/testdata/src/a/a.go.golden @@ -21,3 +21,17 @@ type ZeroBad struct { b [0]byte a uint32 } + +type NoNameGood struct { + Good + y int32 + x byte + z byte +} + +type NoNameBad struct { + Good + y int32 + x byte + z byte +}