diff --git a/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/general_checkers/MethodsFunctionsChecker.java b/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/general_checkers/MethodsFunctionsChecker.java index 688ca2e4..661460f0 100644 --- a/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/general_checkers/MethodsFunctionsChecker.java +++ b/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/general_checkers/MethodsFunctionsChecker.java @@ -184,8 +184,11 @@ public void getReturnRefinements(CtReturn ret) throws LJError { if (rtc.getRefinement(method) == null) return; if (method.getParent() instanceof CtClass) { - RefinedFunction fi = rtc.getContext().getFunction(method.getSimpleName(), - ((CtClass) method.getParent()).getQualifiedName(), method.getParameters().size()); + List> paramTypes = extractParameterTypes(method.getParameters()); + String parentClass = ((CtClass) method.getParent()).getQualifiedName(); + RefinedFunction fi = rtc.getContext().getFunction(method.getSimpleName(), parentClass, paramTypes); + if (fi == null) + fi = rtc.getContext().getFunction(method.getSimpleName(), parentClass, method.getParameters().size()); if (fi == null) return; @@ -440,6 +443,13 @@ private void applyRefinementsToArguments(CtElement element, List } } + private List> extractParameterTypes(List> parameters) { + List> paramTypes = new ArrayList<>(); + for (CtParameter p : parameters) + paramTypes.add(p.getType()); + return paramTypes; + } + public void loadFunctionInfo(CtExecutable method) { String className = null; if (method.getParent() instanceof CtClass) { @@ -448,9 +458,7 @@ public void loadFunctionInfo(CtExecutable method) { className = ((CtInterface) method.getParent()).getQualifiedName(); } if (className != null) { - List> paramTypes = new ArrayList<>(); - for (CtParameter p : method.getParameters()) - paramTypes.add(p.getType()); + List> paramTypes = extractParameterTypes(method.getParameters()); RefinedFunction fi = getRefinementFunction(method.getSimpleName(), className, paramTypes); if (fi != null) { List lv = fi.getArguments();