Implement IndirectValue (#588)

Also updates `FieldAccess` to use `IndirectValue`, as an example.
This commit is contained in:
Geoff Romer
2021-06-24 11:26:28 -07:00
committed by GitHub
parent 85cfb3b930
commit 6ca6822157
8 changed files with 265 additions and 7 deletions
@@ -638,7 +638,8 @@ void StepLvalue() {
case ExpressionKind::GetField: {
// { {e.f :: C, E, F} :: S, H}
// -> { e :: [].f :: C, E, F} :: S, H}
frame->todo.Push(MakeLvalAct(exp->GetFieldAccess().aggregate));
frame->todo.Push(
MakeLvalAct(exp->GetFieldAccess().aggregate.GetPointer()));
act->pos++;
break;
}
@@ -714,7 +715,8 @@ void StepExp() {
case ExpressionKind::GetField: {
// { { e.f :: C, E, F} :: S, H}
// -> { { e :: [].f :: C, E, F} :: S, H}
frame->todo.Push(MakeLvalAct(exp->GetFieldAccess().aggregate));
frame->todo.Push(
MakeLvalAct(exp->GetFieldAccess().aggregate.GetPointer()));
act->pos++;
break;
}