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 11:05:43 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-02-24 11:05:43 +0000
commit99022df227f5503b68838d97e0a6b3fa5f558f1b (patch)
tree5ae2f0fddfaf8cf38a22f2e954387f1e59ec6e1f /src/main/java/org/junit/runners/model/FrameworkMember.java
parent468041bf45125e9964a67db1a51cb2dbed975c69 (diff)
parent82af4b8b1d440f44b6ebac4db1fd61ae1d35a15e (diff)
downloadjunit-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.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();
/**