Commit 78f5b616 authored by Rémy Oudompheng's avatar Rémy Oudompheng

cmd/gc: repair make(T) in export data for inlining.

When T was an unexported type it could be forgotten.

Fixes #5470.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/9303050
parent 0af302f5
......@@ -165,12 +165,15 @@ reexportdep(Node *n)
case ODOTTYPE2:
case OSTRUCTLIT:
case OPTRLIT:
case OMAKEMAP:
case OMAKESLICE:
case OMAKECHAN:
t = n->type;
if(!t->sym && t->type)
t = t->type;
if(t && t->sym && t->sym->def && !exportedsym(t->sym)) {
if(debug['E'])
print("reexport type for convnop %S\n", t->sym);
print("reexport type for expression %S\n", t->sym);
exportlist = list(exportlist, t->sym->def);
}
break;
......
// Copyright 2013 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 a
type Foo interface {
Hi() string
}
func Test1() Foo { return make(tst1) }
type tst1 map[string]bool
func (r tst1) Hi() string { return "Hi!" }
func Test2() Foo { return make(tst2, 0) }
type tst2 []string
func (r tst2) Hi() string { return "Hi!" }
func Test3() Foo { return make(tst3) }
type tst3 chan string
func (r tst3) Hi() string { return "Hi!" }
// Copyright 2013 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 b
import "./a"
func main() {
a.Test1()
a.Test2()
a.Test3()
}
// compiledir
// Copyright 2013 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 5470: exported data for inlining may miss
// the type argument of make.
package ignored
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment