blob: 7f7c6ddd8a974c7dd829930524f43c974888371a [file] [log] [blame]
class A {
private int value = 1;
static class B<T extends A> {
void print(T t) {
System.out.println(t.<error descr="'value' has private access in 'A'">value</error>);
}
}
}
abstract class Foo<T extends Foo<T>> {
private int field;
public int bar(T t){
return t.<error descr="'field' has private access in 'Foo'">field</error>;
}
}
class Bug {
// Idea incorrectly analyses this code with JDK 7
public <T extends Bug> void doit(T other) {
// Oops, was legal with JDK 6, no longer legal with JDK 7
other.<error descr="'mPrivate()' has private access in 'Bug'">mPrivate</error>();
// Redundant with JDK 6, not a redundant cast with JDK 7
((Bug)other).mPrivate();
}
// Idea correctly analyses this code
public void doit2(SubClass other) {
// Not legal with JDK 6 or 7
other.<error descr="'mPrivate()' has private access in 'Bug'">mPrivate</error>();
// Not redundant with JDK 6 or 7
((Bug)other).mPrivate();
}
private void mPrivate() {
}
}
class SubClass extends Bug {
}
class A67678
{
private void foo(){}
<T extends A67678 & Cloneable> void bar(T x)
{
x.<error descr="'foo()' has private access in 'A67678'">foo</error>();
}
}