]> Cypherpunks repositories - gostls13.git/commitdiff
gc: add forgotten typecheck in a lonely corner of sinit
authorLuuk van Dijk <lvd@golang.org>
Wed, 14 Dec 2011 14:54:10 +0000 (15:54 +0100)
committerLuuk van Dijk <lvd@golang.org>
Wed, 14 Dec 2011 14:54:10 +0000 (15:54 +0100)
Fixes #2549

R=rsc
CC=golang-dev
https://golang.org/cl/5484060

src/cmd/gc/sinit.c
test/fixedbugs/bug387.go [new file with mode: 0644]

index 8798d2136bdaa82a5fd9d3f2a39e391c4e366363..73a0af799ef65dc464cffe2f38328be105e82d0e 100644 (file)
@@ -707,9 +707,10 @@ slicelit(int ctxt, Node *n, Node *var, NodeList **init)
 
        // set auto to point at new temp or heap (3 assign)
        if(n->esc == EscNone) {
-               a = temp(t);
-               *init = list(*init, nod(OAS, a, N));  // zero new temp
-               a = nod(OADDR, a, N);
+               a = nod(OAS, temp(t), N);
+               typecheck(&a, Etop);
+               *init = list(*init, a);  // zero new temp
+               a = nod(OADDR, a->left, N);
        } else {
                a = nod(ONEW, N, N);
                a->list = list1(typenod(t));
diff --git a/test/fixedbugs/bug387.go b/test/fixedbugs/bug387.go
new file mode 100644 (file)
index 0000000..c9db4ae
--- /dev/null
@@ -0,0 +1,30 @@
+// $G $D/$F.go || echo "Bug387"
+
+// 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 2549
+
+/*  Used to die with
+missing typecheck: [7f5bf07b4438]
+
+.   AS l(45)
+.   .   NAME-main.autotmp_0017 u(1) a(1) l(45) x(0+0) class(PAUTO)
+esc(N) tc(1) used(1) ARRAY-[2]string
+internal compiler error: missing typecheck 
+*/
+package main
+
+import (
+        "fmt"
+        "path/filepath"
+)
+
+func main() {
+        switch _, err := filepath.Glob(filepath.Join(".", "vnc")); {
+        case err != nil:
+                fmt.Println(err)
+        }
+}
+