diff --git a/src/midend/SysYIRGenerator.cpp b/src/midend/SysYIRGenerator.cpp index b84461d..cd0ac3c 100644 --- a/src/midend/SysYIRGenerator.cpp +++ b/src/midend/SysYIRGenerator.cpp @@ -895,7 +895,7 @@ std::any SysYIRGenerator::visitFuncDef(SysYParser::FuncDefContext *ctx){ currentParamDims.push_back(ConstantInteger::get(-1)); // 标记第一个维度为未知 for (const auto &exp : param->exp()) { // 访问表达式以获取维度大小,这些维度必须是常量 - Value* dimVal = std::any_cast(visitExp(exp)); + Value* dimVal = computeExp(exp); // 确保维度是常量整数,否则 buildArrayType 会断言失败 assert(dynamic_cast(dimVal) && "Array dimension in parameter must be a constant integer!"); currentParamDims.push_back(dimVal);