diff options
author | Pete Bentley <prb@google.com> | 2021-02-24 11:05:43 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-02-24 11:05:43 +0000 |
commit | 99022df227f5503b68838d97e0a6b3fa5f558f1b (patch) | |
tree | 5ae2f0fddfaf8cf38a22f2e954387f1e59ec6e1f /src/main/java/org/junit/runners/model/FrameworkMember.java | |
parent | 468041bf45125e9964a67db1a51cb2dbed975c69 (diff) | |
parent | 82af4b8b1d440f44b6ebac4db1fd61ae1d35a15e (diff) | |
download | junit-99022df227f5503b68838d97e0a6b3fa5f558f1b.tar.gz |
Merge changes I8f5cd126,Ifdb59336,I6abae5ae,I5ec909df am: d135966357 am: d8911c6e95 am: 82af4b8b1d
Original change: https://android-review.googlesource.com/c/platform/external/junit/+/1601635
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ib180e48a4cc266c12a2d9238385adbb07540d3dc
Diffstat (limited to 'src/main/java/org/junit/runners/model/FrameworkMember.java')
-rw-r--r-- | src/main/java/org/junit/runners/model/FrameworkMember.java | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/main/java/org/junit/runners/model/FrameworkMember.java b/src/main/java/org/junit/runners/model/FrameworkMember.java index 724f096..5634b3f 100644 --- a/src/main/java/org/junit/runners/model/FrameworkMember.java +++ b/src/main/java/org/junit/runners/model/FrameworkMember.java @@ -12,15 +12,29 @@ public abstract class FrameworkMember<T extends FrameworkMember<T>> implements Annotatable { abstract boolean isShadowedBy(T otherMember); - boolean isShadowedBy(List<T> members) { - for (T each : members) { - if (isShadowedBy(each)) { - return true; + T handlePossibleBridgeMethod(List<T> members) { + for (int i = members.size() - 1; i >=0; i--) { + T otherMember = members.get(i); + if (isShadowedBy(otherMember)) { + if (otherMember.isBridgeMethod()) { + /* + * We need to return the previously-encountered bridge method + * because JUnit won't be able to call the parent method, + * because the parent class isn't public. + */ + members.remove(i); + return otherMember; + } + // We found a shadowed member that isn't a bridge method. Ignore it. + return null; } } - return false; + // No shadow or bridge method found. The caller should add *this* member. + return (T) this; } + abstract boolean isBridgeMethod(); + protected abstract int getModifiers(); /** |