]> Cypherpunks repositories - gostls13.git/commitdiff
bug161, fixed
authorRuss Cox <rsc@golang.org>
Thu, 4 Jun 2009 23:18:13 +0000 (16:18 -0700)
committerRuss Cox <rsc@golang.org>
Thu, 4 Jun 2009 23:18:13 +0000 (16:18 -0700)
R=ken
OCL=29907
CL=29907

src/cmd/gc/dcl.c
src/cmd/gc/subr.c
test/fixedbugs/bug161.go [new file with mode: 0644]

index e5d6392e658fdb4ef6286b9f80a061e5283fa778..c5359dc5cb6b374cf7329372c8d4579ee9a58922 100644 (file)
@@ -956,6 +956,8 @@ addvar(Node *n, Type *t, int ctxt)
        s->vargen = gen;
        s->oname = n;
        s->offset = 0;
+       s->oconst = nil;
+       s->otype = nil;
        s->lexical = LNAME;
 
        n->funcdepth = funcdepth;
@@ -1003,6 +1005,8 @@ addtyp(Type *n, int ctxt)
 
        redeclare("type", s);
        s->otype = n;
+       s->oconst = nil;
+       s->oname = nil;
        s->lexical = LATYPE;
 
        d = dcl();
@@ -1056,6 +1060,8 @@ addconst(Node *n, Node *e, int ctxt)
 
        redeclare("constant", s);
        s->oconst = e;
+       s->otype = nil;
+       s->oname = nil;
        s->lexical = LNAME;
 
        d = dcl();
index a29f28cd084db481cb2a471cc3e414f09124314e..0e025072c5d70f811bc6d750aecea2468f506c26 100644 (file)
@@ -1045,7 +1045,7 @@ Tpretty(Fmt *fp, Type *t)
                        else
                                fmtprint(fp, "%lS", s);
                        if(strcmp(s->package, package) == 0)
-                       if(s->otype != t || (!s->export && !s->imported)) {
+                       if((s->otype != t || !s->export) && !s->imported) {
                                fmtprint(fp, "·%s", filename);
                                if(t->vargen)
                                        fmtprint(fp, "·%d", t->vargen);
diff --git a/test/fixedbugs/bug161.go b/test/fixedbugs/bug161.go
new file mode 100644 (file)
index 0000000..e5f25f7
--- /dev/null
@@ -0,0 +1,17 @@
+// $G $D/$F.go || echo BUG: should compile
+
+// Copyright 2009 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.
+
+package P
+
+const a = 0;
+
+func f(a int) {
+       a = 0;
+}
+
+/*
+bug161.go:8: operation LITERAL not allowed in assignment context
+*/