added a comment - - edited
The patch (THROWS.patch) is attached. It does a couple of things differently from r23304, but has basically the same idea for handling this issue (your fix changed the semantics of the isThrowable() method, which may change the behavior in other contexts). It also has a better (more general) fix for generic annotations than r22975.
The important effect of this patch is changing the position of @Throws in the method declaration. Instead of
@Throws[Foo] @Throws[Bar] def m(...) { ... }
@Throws[Baz] def n(...):T { ... }
it now has a more familiar syntax
def m(...) @Throws[Foo] @Throws[Bar] { ... }
def n(...):T @Throws[Baz] { ... }
FYI, I have a patch for that waiting on the contributor's agreement.