Annotating a method with @OnlyRunBy(@ThreadDesc(name=".*"))
works to override all other, more narrow annotations and allow all threads to run, as expected. It looks pretty cumbersome, though, and doesn’t allow me to generate adequate warnings.
I think I should introduce a @OnlyRunBy(@ThreadDesc(anyThread=true))
annotation. If such an annotation is found, then the entire @OnlyRunBy
can be removed, but warnings should be emited that a superclass annotation overrides subclass annotations: It’s a just another subtyping violation.
Actually… I guess it’s the same as having no annotation at all. So in principle I could just not annotate these methods. It may still be easier to annotate an entire class as @OnlyRunBy(@ThreadDesc(eventThread=true))
and then have @OnlyRunBy(@ThreadDesc(anyThread=true))
annotations for a few methods.
I need to think about this for a while…