aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/junit/runners/model/FrameworkMember.java
diff options
context:
space:
mode:
authorPete Bentley <prb@google.com>2021-02-24 10:26:16 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-02-24 10:26:16 +0000
commit82af4b8b1d440f44b6ebac4db1fd61ae1d35a15e (patch)
tree1331fa1b743d5d0a341f82ff555ce4c602f40ab9 /src/main/java/org/junit/runners/model/FrameworkMember.java
parentd5e30375603aa83d21d16fbef079caab4d24e4c1 (diff)
parentd8911c6e959a1bda9b2b77d9aa0d35eea7a401f9 (diff)
downloadjunit-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.java24
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();
/**