On 08/30/2012 04:14 PM, Ulf Zibis wrote:
Am 30.08.2012 01:20, schrieb Stuart Marks:
On 8/29/12 4:36 AM, Ulf Zibis wrote:
@SuppressWarnings("fallthrough") is put to suppress warnings
generated by
another switch/case statements
Can't you move it from method scope to there?
while (i >= matchlen && !seencomma) {
switch(a[i-matchlen]) {
case ',':
seencomma = true;
/*FALLTHROUGH*/
case ' ': case '\r': case '\n':
case '\f': case '\t':
break;
default:
throw new IllegalArgumentException(
"invalid permission: " + actions);
}
i--;
}
Unfortunately there is no suitable place to put the annotation.
Annotations can only be placed on declarations, and the narrowest
enclosing declaration around this switch statement is, unfortunately,
the entire method. One might consider refactoring the switch
statement into its own method, but that kind of refactoring is too
large a change for warnings cleanup.
I can see that it is reasonable/possible to bind a
@SuppressWarnings("unchecked") to a declaration which contains the
unchecked assignment, but which declaration should contain a
fallthrough case?
So shouldn't @SuppressWarnings("fallthrough") better be binded to a
switch or case statement?
-Ulf
You can't put an annotation on a statement and the last time I check JSR
308,
(a long time ago), it was something that was put aside.
Rémi