diff options
| author | Marc Vertes <mvertes@free.fr> | 2025-03-03 10:49:27 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2025-03-03 10:49:27 +0100 |
| commit | ab69cd9ba61092650abdff6484b12021182385ce (patch) | |
| tree | 4805a0365fc481df57c8f0b5d45f7f993b9a0ef9 /parser/decl.go | |
| parent | dabd9e5eb81bbc9aeaeb32fb3e3ce83eef258a77 (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.go | 14 |
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 |
