storeValue method
Implementation
void storeValue(Value? lhs, Value? value) {
if (lhs is ValTemp) {
setTemp(lhs.tempNum, value);
} else if (lhs is ValVar) {
setVar(lhs.identifier, value);
} else if (lhs is ValSeqElem) {
final seq = lhs.sequence!.val(this);
if (seq == null) {
throw RuntimeException("can't set indexed element of null");
}
if (!seq.canSetElem()) {
throw RuntimeException("can't set indexed element in this type");
}
var index = lhs.index;
if (index is ValVar || index is ValSeqElem || index is ValTemp) {
index = index!.val(this);
}
seq.setElem(index, value);
} else if (lhs != null) {
throw RuntimeException("not an lvalue");
}
}