mirror of
https://github.com/golang/go
synced 2024-11-21 23:24:41 -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:
parent
ce7e11997b
commit
60e4a61d30
@ -424,7 +424,7 @@ isconst(Node *n, int ct)
|
|||||||
void
|
void
|
||||||
evconst(Node *n)
|
evconst(Node *n)
|
||||||
{
|
{
|
||||||
Node *nl, *nr;
|
Node *nl, *nr, *norig;
|
||||||
int32 len;
|
int32 len;
|
||||||
Strlit *str;
|
Strlit *str;
|
||||||
int wl, wr, lno, et;
|
int wl, wr, lno, et;
|
||||||
@ -842,8 +842,11 @@ unary:
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret:
|
ret:
|
||||||
|
norig = n->orig;
|
||||||
// rewrite n in place.
|
// rewrite n in place.
|
||||||
*n = *nl;
|
*n = *nl;
|
||||||
|
// restore value of n->orig.
|
||||||
|
n->orig = norig;
|
||||||
n->val = v;
|
n->val = v;
|
||||||
|
|
||||||
// check range.
|
// check range.
|
||||||
|
18
test/fixedbugs/bug379.go
Normal file
18
test/fixedbugs/bug379.go
Normal 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"
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user