diff --git a/src/irgen/IRGenExp.cpp b/src/irgen/IRGenExp.cpp index 2ff3bd7..8705b35 100644 --- a/src/irgen/IRGenExp.cpp +++ b/src/irgen/IRGenExp.cpp @@ -122,9 +122,11 @@ std::any IRGenImpl::visitLVal(SysYParser::LValContext* ctx) { // 从语义分析获取变量定义 auto* decl = sema_.ResolveVarUse(ctx); if (!decl) { - throw std::runtime_error( + auto* const_def = sema_.ResolveConstUse(ctx); + if (!const_def) { FormatError("irgen", - "变量使用缺少语义绑定: " + varName)); + "使用缺少语义绑定: " + varName); + } } // 使用 storage_map_ 而不是 varNameToSlot_