gc: add forgotten typecheck in a lonely corner of sinit

Fixes #2549

R=rsc
CC=golang-dev
https://golang.org/cl/5484060
This commit is contained in:
Luuk van Dijk 2011-12-14 15:54:10 +01:00
parent a62722bba4
commit 1f6d130b14
2 changed files with 34 additions and 3 deletions

View 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));

30
test/fixedbugs/bug387.go Normal file
View File

@ -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)
}
}