Skip to content

Commit e7625a3

Browse files
committed
typeset: more testing
1 parent 245f6e3 commit e7625a3

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

typeset/node.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,45 @@ func (n *node) PlainDecode(r io.Reader) error {
116116
case Tuple:
117117
err = wrapJoinDecode(r, "(", ", ", ")", &n.fields)
118118
case Func:
119+
err = n.decodeFunc(r)
119120
}
120121
return nil
121122
}
122123

124+
func (n *node) decodeFunc(r io.Reader) error {
125+
buf := make([]byte, 2)
126+
_, err := io.ReadFull(r, buf)
127+
if err != nil {
128+
return err
129+
}
130+
n.key = NoType
131+
switch buf[0] {
132+
case 'f':
133+
case 'm':
134+
_, err = fmt.Fscanf(r, "%08x", &n.key)
135+
if err != nil {
136+
return err
137+
}
138+
default:
139+
return fmt.Errorf("unexpected '%s'", string(buf))
140+
}
141+
switch buf[1] {
142+
case '+':
143+
n.variadic = true
144+
case '-':
145+
n.variadic = false
146+
default:
147+
return fmt.Errorf("unexpected '%s'", string(buf))
148+
}
149+
err = wrapJoinDecode(r, "(", ", ", ")", &n.params)
150+
if err != nil {
151+
return err
152+
}
153+
err = wrapJoinDecode(r, "(", ", ", ")", &n.results)
154+
155+
return nil
156+
}
157+
123158
func wrapJoinEncode(w io.Writer, left, sep, right string, elts []named) error {
124159
_, err := fmt.Fprintf(w, left)
125160
if err != nil {

typeset/t.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type T struct {
2424
}
2525

2626
const (
27-
initCap = 128
27+
initCap = 64
2828
)
2929

3030
func New() *T {

typeset/t_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,20 @@ package typeset
1717
import (
1818
"bytes"
1919
"go/types"
20+
"os"
2021
"testing"
2122
)
2223

24+
func TestTypeSetGrow(t *testing.T) {
25+
ts := New()
26+
var base types.Type = types.Typ[types.Int64]
27+
var palBase Type = ts.FromGoType(base)
28+
for i := 0; i < 2025; i++ {
29+
palBase = ts.getPointer(palBase)
30+
}
31+
ts.PlainEncode(os.Stdout)
32+
}
33+
2334
func TestTypeSet(t *testing.T) {
2435
ts := New()
2536
sli := types.NewSlice(types.Typ[types.Int])

0 commit comments

Comments
 (0)