diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-11-23 17:56:35 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-11-24 09:12:46 +0100 |
| commit | 6a32a7bc5f6320902cd5c2910a1353a0f7039237 (patch) | |
| tree | 0fcce51e4d4f54d48d57a5dda8a896a35264f68b /parser/type.go | |
| parent | c548093d79edece3c1cbb7e4dc03d92fe45b1cc7 (diff) | |
parser: fix allocation of local variables
A 'New' instruction is added in VM to manage initialisation
of typed variables in the stack. The instantiated type symbols
are now added to global data. Accessing and setting values by
address is now working.
Diffstat (limited to 'parser/type.go')
| -rw-r--r-- | parser/type.go | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/parser/type.go b/parser/type.go index 31af1e3..ff16e4f 100644 --- a/parser/type.go +++ b/parser/type.go @@ -170,12 +170,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, reflect.Pointer: - default: - zv = zv.(reflect.Value).Interface() - } + zv := reflect.New(typ).Elem() switch flag { case parseTypeIn: p.addSym(-index-2, name, zv, symVar, typ, true) |
