Added struct lifetime test
This commit is contained in:
@ -39,6 +39,9 @@ func (f *Function) CompileAssign(node *ast.Assign) error {
|
|||||||
case *eval.Register:
|
case *eval.Register:
|
||||||
f.Execute(operation, leftValue.Register, right)
|
f.Execute(operation, leftValue.Register, right)
|
||||||
case *eval.Memory:
|
case *eval.Memory:
|
||||||
|
// TODO: Reservation needs to be canceled on defer
|
||||||
|
f.CurrentScope().Reserve(leftValue.Memory.Base)
|
||||||
|
|
||||||
if operation.Kind == token.Assign {
|
if operation.Kind == token.Assign {
|
||||||
rightValue, err := f.Evaluate(right)
|
rightValue, err := f.Evaluate(right)
|
||||||
|
|
||||||
|
8
tests/programs/struct-lifetime.q
Normal file
8
tests/programs/struct-lifetime.q
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
main() {
|
||||||
|
c := new(Counter)
|
||||||
|
c.value += 16
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Counter {
|
||||||
|
value int
|
||||||
|
}
|
@ -69,6 +69,7 @@ var programs = []struct {
|
|||||||
{"index-static", 0},
|
{"index-static", 0},
|
||||||
{"index-dynamic", 0},
|
{"index-dynamic", 0},
|
||||||
{"struct", 0},
|
{"struct", 0},
|
||||||
|
{"struct-lifetime", 0},
|
||||||
{"len", 0},
|
{"len", 0},
|
||||||
{"cast", 0},
|
{"cast", 0},
|
||||||
{"function-pointer", 0},
|
{"function-pointer", 0},
|
||||||
|
Reference in New Issue
Block a user