diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-11-17 16:45:58 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-11-17 16:45:58 +0100 |
| commit | ee21c324ce8c41b589e5a39e5715223ffd154315 (patch) | |
| tree | 9dfe692c787ceb65d85f3a9e04524759fab31200 /parser/interpreter_test.go | |
| parent | a79e558d825c5b777c95c5e098b01391ee36781e (diff) | |
parser: support selector expression to get / set struct fields
The structures are reresented by reflect values. New instructions
`Field` and `Vassign` have been added to the VM to assign reflect
values and access struct fields.
Diffstat (limited to 'parser/interpreter_test.go')
| -rw-r--r-- | parser/interpreter_test.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/parser/interpreter_test.go b/parser/interpreter_test.go index ac8dfc4..255f7c5 100644 --- a/parser/interpreter_test.go +++ b/parser/interpreter_test.go @@ -180,6 +180,14 @@ func TestConst(t *testing.T) { }) } +func TestStruct(t *testing.T) { + run(t, []etest{ + {src: "type T struct {a string; b, c int}; var t T; t", res: "{ 0 0}"}, + {src: "type T struct {a int}; var t T; t.a", res: "0"}, + {src: "type T struct {a int}; var t T; t.a = 1; t.a", res: "1"}, + }) +} + func TestType(t *testing.T) { src0 := `type( I int @@ -190,7 +198,6 @@ func TestType(t *testing.T) { {src: "type t int; var a t = 1; a", res: "1"}, {src: "type t = int; var a t = 1; a", res: "1"}, {src: src0 + `var s S = "xx"; s`, res: "xx"}, - {src: "type T struct {a string; b, c int}; var t T; t", res: "{ 0 0}"}, }) } |
