Lines 440-444
Link Here
|
440 |
return this.firstBound; |
440 |
return this.firstBound; |
441 |
} |
441 |
} |
442 |
return this.superclass; // java/lang/Object |
442 |
return this.superclass; // java/lang/Object |
443 |
} |
443 |
} |
|
|
444 |
|
445 |
/** |
446 |
* Return the first upper bound of this if it does not reference this, else |
447 |
* elaborate and return a copy of the first upper bound of this where raw types |
448 |
* replace parameterized types that reference this. The type variables matching |
449 |
* relies on names. Examples (in which this is named T): |
450 |
* <pre> |
451 |
* T ->>; /java/lang/Object |
452 |
* T extends X&I -> X |
453 |
* T extends X<String> -> X<String> |
454 |
* T extends X<T> -> X#RAW |
455 |
* </pre> |
456 |
* The result has the property of not relying upon recursion for its definition. |
457 |
* @return the first upper bound of this if it does not reference this, a |
458 |
* modified copy of the first upper bound of this else |
459 |
*/ |
460 |
TypeBinding semiRawifiedFirstUpperBound() { |
461 |
if (this.firstBound == null) { |
462 |
return this.superclass; // java/lang/Object |
463 |
} |
464 |
return this.firstBound.clearedOf(this); |
465 |
} |
466 |
|
467 |
boolean uses(TypeVariableBinding variable) { |
468 |
return CharOperation.equals(variable.sourceName, this.sourceName); |
469 |
} |
444 |
} |
470 |
} |