aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmd/compile/internal/gc/dcl.go36
1 files changed, 7 insertions, 29 deletions
diff --git a/src/cmd/compile/internal/gc/dcl.go b/src/cmd/compile/internal/gc/dcl.go
index 54c6a24df5..cd64d9a7bf 100644
--- a/src/cmd/compile/internal/gc/dcl.go
+++ b/src/cmd/compile/internal/gc/dcl.go
@@ -590,14 +590,6 @@ func checkdupfields(what string, fss ...[]*types.Field) {
// a type for struct/interface/arglist
func tostruct(l []*Node) *types.Type {
t := types.New(TSTRUCT)
- tostruct0(t, l)
- return t
-}
-
-func tostruct0(t *types.Type, l []*Node) {
- if t == nil || !t.IsStruct() {
- Fatalf("struct expected")
- }
fields := make([]*types.Field, len(l))
for i, n := range l {
@@ -614,6 +606,8 @@ func tostruct0(t *types.Type, l []*Node) {
if !t.Broke() {
checkwidth(t)
}
+
+ return t
}
func tofunargs(l []*Node, funarg types.Funarg) *types.Type {
@@ -684,15 +678,6 @@ func tointerface(l []*Node) *types.Type {
return types.Types[TINTER]
}
t := types.New(TINTER)
- tointerface0(t, l)
- return t
-}
-
-func tointerface0(t *types.Type, l []*Node) {
- if t == nil || !t.IsInterface() {
- Fatalf("interface expected")
- }
-
var fields []*types.Field
for _, n := range l {
f := interfacefield(n)
@@ -702,6 +687,7 @@ func tointerface0(t *types.Type, l []*Node) {
fields = append(fields, f)
}
t.SetInterface(fields)
+ return t
}
func fakeRecv() *Node {
@@ -724,14 +710,6 @@ func isifacemethod(f *types.Type) bool {
// turn a parsed function declaration into a type
func functype(this *Node, in, out []*Node) *types.Type {
t := types.New(TFUNC)
- functype0(t, this, in, out)
- return t
-}
-
-func functype0(t *types.Type, this *Node, in, out []*Node) {
- if t == nil || t.Etype != TFUNC {
- Fatalf("function type expected")
- }
var rcvr []*Node
if this != nil {
@@ -748,15 +726,13 @@ func functype0(t *types.Type, this *Node, in, out []*Node) {
}
t.FuncType().Outnamed = t.NumResults() > 0 && origSym(t.Results().Field(0).Sym) != nil
+
+ return t
}
func functypefield(this *types.Field, in, out []*types.Field) *types.Type {
t := types.New(TFUNC)
- functypefield0(t, this, in, out)
- return t
-}
-func functypefield0(t *types.Type, this *types.Field, in, out []*types.Field) {
var rcvr []*types.Field
if this != nil {
rcvr = []*types.Field{this}
@@ -766,6 +742,8 @@ func functypefield0(t *types.Type, this *types.Field, in, out []*types.Field) {
t.FuncType().Results = tofunargsfield(out, types.FunargResults)
t.FuncType().Outnamed = t.NumResults() > 0 && origSym(t.Results().Field(0).Sym) != nil
+
+ return t
}
// origSym returns the original symbol written by the user.