import org.checkerframework.checker.guieffect.qual.PolyUIEffect; import org.checkerframework.checker.guieffect.qual.SafeEffect; import org.checkerframework.checker.guieffect.qual.UIEffect; // Should not inherit @UI! public class UIChild extends UIParent { @Override public void doingUIStuff() { //:: error: (call.invalid.ui) thingy.dangerous(); } // Should be an error to make this @UI @Override @UIEffect //:: error: (override.effect.invalid) public void doingSafeStuff() {} public void shouldNotBeUI() { //:: error: (call.invalid.ui) thingy.dangerous(); } @UIEffect @SafeEffect //:: error: (annotations.conflicts) public void doubleAnnot1() {} @UIEffect @PolyUIEffect //:: error: (annotations.conflicts) :: error: (polymorphism.invalid) public void doubleAnnot2() {} @PolyUIEffect @SafeEffect //:: error: (annotations.conflicts) :: error: (polymorphism.invalid) public void doubleAnnot3() {} }