diff --git a/src/main/java/org/jcnc/snow/compiler/ir/builder/ProgramBuilder.java b/src/main/java/org/jcnc/snow/compiler/ir/builder/ProgramBuilder.java index 6331d57..9b823fb 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/builder/ProgramBuilder.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/builder/ProgramBuilder.java @@ -31,17 +31,17 @@ public final class ProgramBuilder { public IRProgram buildProgram(List roots) { IRProgram prog = new IRProgram(); for (Node n : roots) { - if (n instanceof ModuleNode m) { - // 模块节点:将模块内的所有函数加入程序 - m.functions().forEach(f -> prog.add(buildFunction(f))); - } else if (n instanceof FunctionNode f) { - // 顶层函数节点 - prog.add(buildFunction(f)); - } else if (n instanceof StatementNode s) { - // 顶层脚本语句,包装为 _start 函数 - prog.add(buildFunction(wrapTopLevel(s))); - } else { - throw new IllegalStateException("Unsupported top-level node: " + n); + switch (n) { + case ModuleNode m -> + // 模块节点:将模块内的所有函数加入程序 + m.functions().forEach(f -> prog.add(buildFunction(f))); + case FunctionNode f -> + // 顶层函数节点 + prog.add(buildFunction(f)); + case StatementNode s -> + // 顶层脚本语句,包装为 _start 函数 + prog.add(buildFunction(wrapTopLevel(s))); + case null, default -> throw new IllegalStateException("Unsupported top-level node: " + n); } } return prog;