@@ -447,8 +447,8 @@ The solution is to use rewrite operations in a downward pass through the project
447
447
[preserves-definedness] // valid list indexing checked upon context construction
448
448
449
449
syntax ProjectedUpdate ::= #readProjection(WriteTo, TypedLocal, ProjectionElems, Contexts, List, List) [function] // total
450
- | ProjectedUpdate(WriteTo, Contexts)
451
- // ----------------------------------------------------------
450
+ | ProjectedUpdate(WriteTo, TypedValue, Contexts)
451
+ // ----------------------------------------------------------------------
452
452
rule #readProjection(
453
453
_DEST,
454
454
typedValue(Aggregate(IDX, ARGS), TY, MUT) => {ARGS[I]}:>TypedLocal,
@@ -532,16 +532,16 @@ The solution is to use rewrite operations in a downward pass through the project
532
532
andBool I <Int size(LOCALS)
533
533
[preserves-definedness]
534
534
535
- rule #readProjection(DEST, _ :TypedValue, .ProjectionElems, CONTEXTS, _, _)
536
- => ProjectedUpdate(DEST, CONTEXTS)
535
+ rule #readProjection(DEST, TV :TypedValue, .ProjectionElems, CONTEXTS, _, _)
536
+ => ProjectedUpdate(DEST, TV, CONTEXTS)
537
537
538
- rule <k> #projectedUpdate(ProjectedUpdate(toLocal(I), CONTEXTS), NEW, false)
538
+ rule <k> #projectedUpdate(ProjectedUpdate(toLocal(I), typedValue(_, _, mutabilityMut), CONTEXTS), NEW, false)
539
539
=> #setLocalValue(place(local(I), .ProjectionElems), #buildUpdate(NEW, CONTEXTS))
540
540
...
541
541
</k>
542
542
[preserves-definedness] // valid conmtext ensured upon context construction
543
543
544
- rule <k> #projectedUpdate(ProjectedUpdate(toLocal(I), CONTEXTS), NEW, true)
544
+ rule <k> #projectedUpdate(ProjectedUpdate(toLocal(I), _, CONTEXTS), NEW, true)
545
545
=> #forceSetLocal(local(I), #buildUpdate(NEW, CONTEXTS))
546
546
...
547
547
</k>
@@ -556,7 +556,7 @@ The solution is to use rewrite operations in a downward pass through the project
556
556
andBool I <Int size(LOCALS)
557
557
[preserves-definedness] // valid list indexing checked
558
558
559
- rule <k> #projectedUpdate(ProjectedUpdate(toStack(FRAME, local(I)), CONTEXTS), NEW, _) => .K ... </k>
559
+ rule <k> #projectedUpdate(ProjectedUpdate(toStack(FRAME, local(I)), typedValue(_, _, mutabilityMut), CONTEXTS), NEW, _) => .K ... </k>
560
560
<stack> STACK => STACK[(FRAME -Int 1) <- #updateStackLocal({STACK[FRAME -Int 1]}:>StackFrame, I, #buildUpdate(NEW, CONTEXTS)) ] </stack>
561
561
requires 0 <Int FRAME
562
562
andBool FRAME <=Int size(STACK)
0 commit comments