summaryrefslogtreecommitdiff
path: root/parser/decl.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/decl.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/decl.go')
-rw-r--r--parser/decl.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/parser/decl.go b/parser/decl.go
index 23b5ed6..094fa9f 100644
--- a/parser/decl.go
+++ b/parser/decl.go
@@ -248,6 +248,20 @@ func (p *Parser) parseImportLine(in Tokens) (out Tokens, err error) {
return out, err
}
+func (p *Parser) parsePackage(in Tokens) (out Tokens, err error) {
+ if len(in) != 2 {
+ return out, errors.New("invalid number of arguments")
+ }
+ if in[1].Tok != lang.Ident {
+ return out, errors.New("not an ident")
+ }
+ if p.pkgName != "" {
+ return out, errors.New("package already set")
+ }
+ p.pkgName = in[1].Str
+ return out, err
+}
+
func (p *Parser) parseType(in Tokens) (out Tokens, err error) {
if len(in) < 2 {
return out, ErrMissingType