499 } |
499 } |
500 paramTypes = paramTypes.tail; |
500 paramTypes = paramTypes.tail; |
501 } |
501 } |
502 for (Type t : funcInterfaceContext.undetvars) { |
502 for (Type t : funcInterfaceContext.undetvars) { |
503 UndetVar uv = (UndetVar)t; |
503 UndetVar uv = (UndetVar)t; |
504 minimizeInst(uv, Warner.noWarnings); |
504 minimizeInst(uv, types.noWarnings); |
505 if (uv.inst == null && |
505 if (uv.inst == null && |
506 Type.filter(uv.getBounds(InferenceBound.UPPER), boundFilter).nonEmpty()) { |
506 Type.filter(uv.getBounds(InferenceBound.UPPER), boundFilter).nonEmpty()) { |
507 maximizeInst(uv, Warner.noWarnings); |
507 maximizeInst(uv, types.noWarnings); |
508 } |
508 } |
509 } |
509 } |
510 |
510 |
511 formalInterface = funcInterfaceContext.asInstType(formalInterface, types); |
511 formalInterface = funcInterfaceContext.asInstType(formalInterface, types); |
512 } |
512 } |
799 void solveAny(List<Type> varsToSolve, Types types, Infer infer) { |
799 void solveAny(List<Type> varsToSolve, Types types, Infer infer) { |
800 boolean progress = false; |
800 boolean progress = false; |
801 for (Type t : varsToSolve) { |
801 for (Type t : varsToSolve) { |
802 UndetVar uv = (UndetVar)asFree(t, types); |
802 UndetVar uv = (UndetVar)asFree(t, types); |
803 if (uv.inst == null) { |
803 if (uv.inst == null) { |
804 infer.minimizeInst(uv, Warner.noWarnings); |
804 infer.minimizeInst(uv, types.noWarnings); |
805 if (uv.inst != null) { |
805 if (uv.inst != null) { |
806 progress = true; |
806 progress = true; |
807 } |
807 } |
808 } |
808 } |
809 } |
809 } |