diff --git a/src/Evaluator/Value/LvObject.hpp b/src/Evaluator/Value/LvObject.hpp index 002a4e6..4890089 100644 --- a/src/Evaluator/Value/LvObject.hpp +++ b/src/Evaluator/Value/LvObject.hpp @@ -80,6 +80,10 @@ namespace Fig if (kind == Kind::Variable) { auto s = resolve(slot); + if (isAccessConst(s->am)) + { + throw RuntimeError(FString(std::format("Variable `{}` is immutable", s->name.toBasicString()))); + } if (!isTypeMatch(s->declaredType, v, ctx)) { throw RuntimeError( @@ -89,11 +93,6 @@ namespace Fig s->declaredType.toString().toBasicString(), prettyType(v).toBasicString()))); } - if (isAccessConst(s->am)) - { - throw RuntimeError(FString( - std::format("Variable `{}` is immutable", s->name.toBasicString()))); - } s->value = v; } else if (kind == Kind::ListElement)