for (int i = 0, size = inputs.size(); i < size; ++i) {
if (overload.inputSetAt(i) != inputSet)
continue;
if (notVararg && (i >= lastPositionalInput))
break;
TPreptimeValue inputTpv = inputs.get(i);
TInstance inputInstance = inputTpv.type();
TInstance resultInstance;
if (inputInstance != null) {
TClass inputTClass = inputInstance.typeClass();
if (inputTClass == targetTClass) {
resultInstance = inputInstance;
}
else {
TCast requiredCast = resolver.cast(inputTClass, targetTClass);
if (requiredCast == null)
throw new OverloadException("can't cast " + inputInstance + " to " + targetTClass);
inputInstance = requiredCast.preferredTarget(inputTpv);
resultInstance = inputInstance;
}
}
// no inputInstance = no type attributes
else {
assert inputTpv.isNullable() : inputTpv;
// TODO: Generalize to e.g. instance(nullable) -> unknownInstance(nullable) ?
if(targetTClass instanceof TString) {
resultInstance = targetTClass.instance(Integer.MAX_VALUE, // no length would be preferable
StringFactory.DEFAULT_CHARSET_ID,
StringFactory.NULL_COLLATION_ID,