1
0
mirror of https://github.com/golang/go synced 2024-11-21 23:34:42 -07:00

gc: don't inherit orig from subnodes in constant expression nodes.

The wrong value made Nconv() show "1" for node "-1", and "2" from
node "2+3".
Fixes #2452.

R=gri, lvd, rsc
CC=golang-dev, remy
https://golang.org/cl/5435064
This commit is contained in:
Rémy Oudompheng 2011-11-28 12:22:15 -05:00 committed by Russ Cox
parent ce7e11997b
commit 60e4a61d30
2 changed files with 22 additions and 1 deletions

View File

@ -424,7 +424,7 @@ isconst(Node *n, int ct)
void
evconst(Node *n)
{
Node *nl, *nr;
Node *nl, *nr, *norig;
int32 len;
Strlit *str;
int wl, wr, lno, et;
@ -842,8 +842,11 @@ unary:
}
ret:
norig = n->orig;
// rewrite n in place.
*n = *nl;
// restore value of n->orig.
n->orig = norig;
n->val = v;
// check range.

18
test/fixedbugs/bug379.go Normal file
View File

@ -0,0 +1,18 @@
// errchk $G $D/$F.go
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Issue 2452.
// Check that the error messages says
// bug378.go:17: 3 not used
// and not
// bug378.go:17: 1 not used
package main
func main() {
1 + 2 // ERROR "3 not used|value computed is not used"
}