summaryrefslogtreecommitdiff
path: root/parser/type.go
diff options
context:
space:
mode:
Diffstat (limited to 'parser/type.go')
-rw-r--r--parser/type.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/parser/type.go b/parser/type.go
index 573ae6f..31af1e3 100644
--- a/parser/type.go
+++ b/parser/type.go
@@ -51,6 +51,13 @@ func (p *Parser) ParseTypeExpr(in Tokens) (typ reflect.Type, err error) {
}
return reflect.SliceOf(typ), nil
+ case lang.Mul:
+ typ, err := p.ParseTypeExpr(in[1:])
+ if err != nil {
+ return nil, err
+ }
+ return reflect.PointerTo(typ), nil
+
case lang.Func:
// Get argument and return token positions depending on function pattern:
// method with receiver, named function or anonymous closure.
@@ -165,7 +172,7 @@ func (p *Parser) parseParamTypes(in Tokens, flag typeFlag) (types []reflect.Type
func (p *Parser) addSymVar(index int, name string, typ reflect.Type, flag typeFlag, local bool) {
var zv any = reflect.New(typ).Elem()
switch typ.Kind() {
- case reflect.Struct, reflect.Array, reflect.Slice:
+ case reflect.Struct, reflect.Array, reflect.Slice, reflect.Pointer:
default:
zv = zv.(reflect.Value).Interface()
}