| Previous CloneSet | Next CloneSet | Back to Main Report |
| Clone Mass | Clones in CloneSet | Parameter Count | Clone Similarity | Syntax Category [Sequence Length] |
|---|---|---|---|---|
| 14 | 2 | 3 | 0.972 | statement_sequence_member |
| Clone Abstraction | Parameter Bindings |
| Clone Instance (Click to see clone) | Line Count | Source Line | Source File |
|---|---|---|---|
| 1 | 14 | 2767 | plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java |
| 2 | 14 | 2785 | plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java |
| ||||
switch (wildV.boundKind) {
// U, ? extends V
case Wildcard.EXTENDS:
TypeBinding lub = lowerUpperBound(new TypeBinding[] {
u,wildV.bound
}, lubStack);
if (lub == null) return null;
// int is returned to denote cycle detected in lub computation - stop recursion by answering unbound wildcard
if (lub == TypeBinding.INT) return environment().createWildcard(genericType, rank, null, null
/*no extra bound*/
, Wildcard.UNBOUND);
return environment().createWildcard(genericType, rank, lub, null
/*no extra bound*/
, Wildcard.EXTENDS);
// U, ? super V
case Wildcard.SUPER:
TypeBinding[] glb = greaterLowerBound(new TypeBinding[] {
u,wildV.bound
} );
if (glb == null) return null;
return environment().createWildcard(genericType, rank, glb[0], null
/*no extra bound*/
, Wildcard.SUPER); // TODO (philippe) need to capture entire bounds
case Wildcard.UNBOUND:
}
|
| ||||
switch (wildU.boundKind) {
// U, ? extends V
case Wildcard.EXTENDS:
TypeBinding lub = lowerUpperBound(new TypeBinding[] {
wildU.bound, v
}, lubStack);
if (lub == null) return null;
// int is returned to denote cycle detected in lub computation - stop recursion by answering unbound wildcard
if (lub == TypeBinding.INT) return environment().createWildcard(genericType, rank, null, null
/*no extra bound*/
, Wildcard.UNBOUND);
return environment().createWildcard(genericType, rank, lub, null
/*no extra bound*/
, Wildcard.EXTENDS);
// U, ? super V
case Wildcard.SUPER:
TypeBinding[] glb = greaterLowerBound(new TypeBinding[] {
wildU.bound, v
} );
if (glb == null) return null;
return environment().createWildcard(genericType, rank, glb[0], null
/*no extra bound*/
, Wildcard.SUPER); // TODO (philippe) need to capture entire bounds
case Wildcard.UNBOUND:
}
|
| |||
switch ( [[#variable92267e00]].boundKind) {
// U, ? extends V
case Wildcard.EXTENDS:
TypeBinding lub = lowerUpperBound(new TypeBinding[] {
[[#variable92267d60]],
[[#variable922677e0]]
}, lubStack);
if (lub == null)
return null;
// int is returned to denote cycle detected in lub computation - stop recursion by answering unbound wildcard
if (lub == TypeBinding.INT)
return environment().createWildcard(genericType, rank, null, null
/*no extra bound*/
, Wildcard.UNBOUND);
return environment().createWildcard(genericType, rank, lub, null
/*no extra bound*/
, Wildcard.EXTENDS);
// U, ? super V
case Wildcard.SUPER:
TypeBinding[] glb = greaterLowerBound(new TypeBinding[] {
[[#variable92267d60]],
[[#variable922677e0]]
} );
if (glb == null)
return null;
return environment().createWildcard(genericType, rank, glb[0], null
/*no extra bound*/
, Wildcard.SUPER); // TODO (philippe) need to capture entire bounds // TODO (philippe) need to capture entire bounds
case Wildcard.UNBOUND:
}
|
| CloneAbstraction |
| Parameter Index | Clone Instance | Parameter Name | Value |
|---|---|---|---|
| 1 | 1 | [[#92267e00]] | wildV |
| 1 | 2 | [[#92267e00]] | wildU |
| 2 | 1 | [[#92267d60]] | u |
| 2 | 2 | [[#92267d60]] | wildU.bound |
| 3 | 1 | [[#922677e0]] | wildV.bound |
| 3 | 2 | [[#922677e0]] | v |