260 //step 1 - create fresh tvars |
260 //step 1 - create fresh tvars |
261 for (Type t : vars) { |
261 for (Type t : vars) { |
262 UndetVar uv = (UndetVar)inferenceContext.asFree(t); |
262 UndetVar uv = (UndetVar)inferenceContext.asFree(t); |
263 List<Type> upperBounds = uv.getBounds(InferenceBound.UPPER); |
263 List<Type> upperBounds = uv.getBounds(InferenceBound.UPPER); |
264 if (Type.containsAny(upperBounds, vars)) { |
264 if (Type.containsAny(upperBounds, vars)) { |
265 TypeSymbol fresh_tvar = new TypeSymbol(Flags.SYNTHETIC, uv.qtype.tsym.name, null, uv.qtype.tsym.owner); |
265 TypeSymbol fresh_tvar = new TypeVariableSymbol(Flags.SYNTHETIC, uv.qtype.tsym.name, null, uv.qtype.tsym.owner); |
266 fresh_tvar.type = new TypeVar(fresh_tvar, types.makeCompoundType(uv.getBounds(InferenceBound.UPPER)), null); |
266 fresh_tvar.type = new TypeVar(fresh_tvar, types.makeCompoundType(uv.getBounds(InferenceBound.UPPER)), null); |
267 todo.append(uv); |
267 todo.append(uv); |
268 uv.inst = fresh_tvar.type; |
268 uv.inst = fresh_tvar.type; |
269 } else if (upperBounds.nonEmpty()) { |
269 } else if (upperBounds.nonEmpty()) { |
270 uv.inst = types.glb(upperBounds); |
270 uv.inst = types.glb(upperBounds); |