import checkers.igj.quals.*;
@I
class A {
void isAMutable() @Mutable { }
void isAImmutable() @Immutable { }
void isAReadOnly() @ReadOnly { }
void mutableMethodForA() @Mutable {
@I
class B {
void isBMutable() @Mutable { }
void isBImmutable() @Immutable { }
void isBReadOnly() @ReadOnly { }
void testImmutableForB() @Immutable {
isAMutable();
isAImmutable(); // error
isAReadOnly();
A.this.isAMutable();
A.this.isAImmutable(); // error
A.this.isAReadOnly();
isBMutable(); // error
isBImmutable();
isBReadOnly();
B.this.isBMutable(); // error
B.this.isBImmutable();
B.this.isBReadOnly();
}
void testMutableForB() @Mutable {
isAMutable();
isAImmutable(); // error
isAReadOnly();
A.this.isAMutable();
A.this.isAImmutable(); // error
A.this.isAReadOnly();
isBMutable();
isBImmutable(); // error
isBReadOnly();
B.this.isBMutable();
B.this.isBImmutable(); // error
B.this.isBReadOnly();
}
}
}
}