summaryrefslogtreecommitdiff
path: root/parser/type.go
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2025-03-03 10:49:27 +0100
committerMarc Vertes <mvertes@free.fr>2025-03-03 10:49:27 +0100
commitab69cd9ba61092650abdff6484b12021182385ce (patch)
tree4805a0365fc481df57c8f0b5d45f7f993b9a0ef9 /parser/type.go
parentdabd9e5eb81bbc9aeaeb32fb3e3ce83eef258a77 (diff)
fix: improve structparscan-struct
Use 'unsafe' to modify private struct fields, allowing to keep unmodified field names: before they were prefixed with a capital. Parse package statement. Provide a also a default package name for REPL and tests. The support of packages is still incomplete.
Diffstat (limited to 'parser/type.go')
-rw-r--r--parser/type.go4
1 files changed, 2 insertions, 2 deletions
diff --git a/parser/type.go b/parser/type.go
index e25431a..b1b25dc 100644
--- a/parser/type.go
+++ b/parser/type.go
@@ -104,7 +104,7 @@ func (p *Parser) parseTypeExpr(in Tokens) (typ *vm.Type, err error) {
if !ok || s.kind != symType {
return nil, fmt.Errorf("%w: %s", ErrInvalidType, in[0].Str)
}
- return s.Type, nil
+ return s.typ, nil
case lang.Struct:
if len(in) != 2 || in[1].Tok != lang.BraceBlock {
@@ -120,7 +120,7 @@ func (p *Parser) parseTypeExpr(in Tokens) (typ *vm.Type, err error) {
return nil, err
}
for i, name := range names {
- fields = append(fields, &vm.Type{Name: name, Rtype: types[i].Rtype})
+ fields = append(fields, &vm.Type{Name: name, PkgPath: p.pkgName, Rtype: types[i].Rtype})
// TODO: handle embedded fields
}
}