diff options
Diffstat (limited to 'src/cmd/compile/internal/gc/parser.go')
| -rw-r--r-- | src/cmd/compile/internal/gc/parser.go | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/cmd/compile/internal/gc/parser.go b/src/cmd/compile/internal/gc/parser.go index 6538877e68..ae4b497b7b 100644 --- a/src/cmd/compile/internal/gc/parser.go +++ b/src/cmd/compile/internal/gc/parser.go @@ -3246,17 +3246,14 @@ func (p *parser) hidden_literal() *Node { if p.tok == LLITERAL { ss := nodlit(p.val) p.next() - switch ss.Val().Ctype() { - case CTINT, CTRUNE: - ss.Val().U.(*Mpint).Neg() - break - case CTFLT: - ss.Val().U.(*Mpflt).Neg() - break - case CTCPLX: - ss.Val().U.(*Mpcplx).Real.Neg() - ss.Val().U.(*Mpcplx).Imag.Neg() - break + switch u := ss.Val().U.(type) { + case *Mpint: + u.Neg() + case *Mpflt: + u.Neg() + case *Mpcplx: + u.Real.Neg() + u.Imag.Neg() default: Yyerror("bad negated constant") } |
