diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/NewExpressionAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/NewExpressionAnalyzer.java index 821b830..3b44e79 100644 --- a/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/NewExpressionAnalyzer.java +++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/NewExpressionAnalyzer.java @@ -51,7 +51,7 @@ public class NewExpressionAnalyzer implements ExpressionAnalyzer argTypes = new ArrayList<>(); for (ExpressionNode a : expr.arguments()) { Type at = ctx.getRegistry() @@ -77,30 +77,25 @@ public class NewExpressionAnalyzer implements ExpressionAnalyzer expectedParams = ctor.paramTypes(); + for (int i = 0; i < expectedParams.size(); i++) { + Type expected = expectedParams.get(i); // 构造函数声明的参数类型 + Type actual = argTypes.get(i); // 实际传入的实参类型 boolean compatible = expected.isCompatible(actual); // 直接类型兼容 boolean widenOK = expected.isNumeric() @@ -115,7 +110,7 @@ public class NewExpressionAnalyzer implements ExpressionAnalyzer