From e387788b36f9f54850f3c9107bd552d4f65c688e Mon Sep 17 00:00:00 2001 From: hns Date: Fri, 9 May 2003 12:29:45 +0000 Subject: [PATCH] Put distance variable to better use in areParametersCompatible() to fix ambiguity in StringBuffer methods. --- src/FESI/Data/ESLoader.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/FESI/Data/ESLoader.java b/src/FESI/Data/ESLoader.java index a990b18b..35293538 100644 --- a/src/FESI/Data/ESLoader.java +++ b/src/FESI/Data/ESLoader.java @@ -410,15 +410,21 @@ public abstract class ESLoader extends ESObject { // The simplest case is direct object compatibility sourceClass = params[i].getClass(); accepted = targetClass.isAssignableFrom(sourceClass); + if (targetClass != sourceClass) { + if (targetClass == Object.class) + distance += 2; + else + distance += 1; + } debugInfo = " accepted (subclassing)"; - + if (!accepted) { // If we do not have direct object compatibility, we check various // allowed conversions. - + // Handle number and number widening if ((isPrimitiveNumberClass(sourceClass) || - sourceClass == Character.class) + sourceClass == Character.class) && isPrimitiveNumberClass(targetClass)) { // Can be widened ? int targetSize = getNumberSize(targetClass); @@ -431,7 +437,7 @@ public abstract class ESLoader extends ESObject { } else { debugInfo = " rejected (not widening numbers)"; } - // Handle String of length 1 as a Char, which can be converted to a number + // Handle String of length 1 as a Char, which can be converted to a number } else if (targetClass == Character.class && params[i] instanceof String) { if (((String) params[i]).length()==1) { @@ -440,6 +446,7 @@ public abstract class ESLoader extends ESObject { convertToChar = new boolean[n]; } convertToChar[i] = true; + distance += 1; debugInfo = " accepted (String(1) as Character)"; } else { debugInfo = " rejected (String not of length 1)";