diff options
author | Pete Bentley <prb@google.com> | 2021-02-24 10:26:16 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-02-24 10:26:16 +0000 |
commit | 82af4b8b1d440f44b6ebac4db1fd61ae1d35a15e (patch) | |
tree | 1331fa1b743d5d0a341f82ff555ce4c602f40ab9 /src/main/java/org/junit/runners/model/FrameworkMember.java | |
parent | d5e30375603aa83d21d16fbef079caab4d24e4c1 (diff) | |
parent | d8911c6e959a1bda9b2b77d9aa0d35eea7a401f9 (diff) | |
download | junit-82af4b8b1d440f44b6ebac4db1fd61ae1d35a15e.tar.gz |
Merge changes I8f5cd126,Ifdb59336,I6abae5ae,I5ec909df am: d135966357 am: d8911c6e95
Original change: https://android-review.googlesource.com/c/platform/external/junit/+/1601635
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ib00d0e3bda09315496b61b51b207bd8981c947e7
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(); /** |