From 4739dcf7fbe5f5bbe885c4349d36c3e23658c0c6 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Wed, 25 May 2016 14:08:13 -0700 Subject: [PATCH] cmd/compile: fix printing of OCASE nodes Switch lowering splits each case expression out into its own OCASE node. Change-Id: Ifcb72b99975ed36da8540f6e43343e9aa2058572 Reviewed-on: https://go-review.googlesource.com/26769 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/gc/fmt.go | 9 ++++++++- src/cmd/compile/internal/gc/syntax.go | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/cmd/compile/internal/gc/fmt.go b/src/cmd/compile/internal/gc/fmt.go index 9cf0fbd413..cbc4c93a13 100644 --- a/src/cmd/compile/internal/gc/fmt.go +++ b/src/cmd/compile/internal/gc/fmt.go @@ -886,13 +886,20 @@ func stmtfmt(n *Node) string { f += fmt.Sprintf(" { %v }", n.List) - case OCASE, OXCASE: + case OXCASE: if n.List.Len() != 0 { f += fmt.Sprintf("case %v: %v", hconv(n.List, FmtComma), n.Nbody) } else { f += fmt.Sprintf("default: %v", n.Nbody) } + case OCASE: + if n.Left != nil { + f += fmt.Sprintf("case %v: %v", n.Left, n.Nbody) + } else { + f += fmt.Sprintf("default: %v", n.Nbody) + } + case OBREAK, OCONTINUE, OGOTO, diff --git a/src/cmd/compile/internal/gc/syntax.go b/src/cmd/compile/internal/gc/syntax.go index b02c70eb94..3608d17c34 100644 --- a/src/cmd/compile/internal/gc/syntax.go +++ b/src/cmd/compile/internal/gc/syntax.go @@ -425,7 +425,7 @@ const ( // statements OBLOCK // { List } (block of code) OBREAK // break - OCASE // case List: Nbody (select case after processing; List==nil means default) + OCASE // case Left: Nbody (select case after processing; Left==nil means default) OXCASE // case List: Nbody (select case before processing; List==nil means default) OCONTINUE // continue ODEFER // defer Left (Left must be call) -- 2.48.1