Skip to content

Commit d9861ec

Browse files
committed
Restore that fields shadow fields from super class
This commit restores the shadowing behaviour of JUnit 4.12. Some users of JUnit 4 have tests that rely on this behaviour. Their tests would fail with JUnit 4.13. This commit finally reverts 39b8a92. Some parts have already been reverted by ed6813d.
1 parent 29f930a commit d9861ec

File tree

5 files changed

+8
-19
lines changed

5 files changed

+8
-19
lines changed

src/main/java/org/junit/runners/model/FrameworkField.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public <T extends Annotation> T getAnnotation(Class<T> annotationType) {
4747

4848
@Override
4949
public boolean isShadowedBy(FrameworkField otherMember) {
50-
return isStatic() && otherMember.getName().equals(getName());
50+
return otherMember.getName().equals(getName());
5151
}
5252

5353
@Override

src/main/java/org/junit/runners/model/FrameworkMember.java

+1-12
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,7 @@ public abstract class FrameworkMember<T extends FrameworkMember<T>> implements
1212
Annotatable {
1313
abstract boolean isShadowedBy(T otherMember);
1414

15-
/**
16-
* Check if this member is shadowed by any of the given members. If it
17-
* is, the other member is removed.
18-
*
19-
* @return member that should be used, or {@code null} if no member should be used.
20-
*/
21-
final T handlePossibleShadowedMember(List<T> members) {
15+
T handlePossibleBridgeMethod(List<T> members) {
2216
for (int i = members.size() - 1; i >=0; i--) {
2317
T otherMember = members.get(i);
2418
if (isShadowedBy(otherMember)) {
@@ -36,11 +30,6 @@ final T handlePossibleShadowedMember(List<T> members) {
3630
}
3731
}
3832
// No shadow or bridge method found. The caller should add *this* member.
39-
return self();
40-
}
41-
42-
@SuppressWarnings("unchecked")
43-
private T self() {
4433
return (T) this;
4534
}
4635

src/main/java/org/junit/runners/model/TestClass.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ protected static <T extends FrameworkMember<T>> void addToAnnotationLists(T memb
8484
for (Annotation each : member.getAnnotations()) {
8585
Class<? extends Annotation> type = each.annotationType();
8686
List<T> members = getAnnotatedMembers(map, type, true);
87-
T memberToAdd = member.handlePossibleShadowedMember(members);
87+
T memberToAdd = member.handlePossibleBridgeMethod(members);
8888
if (memberToAdd == null) {
8989
return;
9090
}

src/test/java/org/junit/runners/model/TestClassTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public static class SubclassWithField extends SuperclassWithField {
4646
}
4747

4848
@Test
49-
public void fieldsOnSubclassesDoNotShadowSuperclasses() {
49+
public void fieldsOnSubclassesShadowSuperclasses() {
5050
assertThat(new TestClass(SubclassWithField.class).getAnnotatedFields(
51-
Rule.class).size(), is(2));
51+
Rule.class).size(), is(1));
5252
}
5353

5454
public static class OuterClass {

src/test/java/org/junit/tests/running/methods/AnnotationTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -633,13 +633,13 @@ public void test() {
633633
}
634634
}
635635

636-
public void testFieldsNeverTreatedAsShadowed() throws Exception {
636+
public void testFieldsShadowFieldsFromParent() throws Exception {
637637
log = "";
638638
assertThat(testResult(SubFieldShadowing.class), isSuccessful());
639639
assertEquals(
640-
"super.rule.before() sub.rule.before() "
640+
"sub.rule.before() "
641641
+ "Test "
642-
+ "sub.rule.after() super.rule.after() ",
642+
+ "sub.rule.after() ",
643643
log);
644644
}
645645

0 commit comments

Comments
 (0)