feat: 检查全局变量重复声明

- 在 FunctionChecker 类中增加了对全局变量重复声明的检查
- 如果全局变量已经存在,则添加语义错误信息
This commit is contained in:
Luke 2025-08-03 00:36:34 +08:00
parent f1069d6e5d
commit 7fab3cc662

View File

@ -59,7 +59,13 @@ public record FunctionChecker(Context ctx) {
SymbolTable globalScope = new SymbolTable(null);
for (DeclarationNode g : mod.globals()) {
var t = ctx.parseType(g.getType());
globalScope.define(new Symbol(g.getName(), t, SymbolKind.VARIABLE));
// 检查全局变量是否重复声明
if (!globalScope.define(new Symbol(g.getName(), t, SymbolKind.VARIABLE))) {
ctx.errors().add(new SemanticError(
g,
"全局变量重复声明: " + g.getName()
));
}
}
// 遍历模块中所有函数定义