[JSR308] Revisiting array annotations
Igor Peshansky
igorp at us.ibm.com
Mon Oct 15 16:00:34 EDT 2007
Michael Ernst <mernst at csail.mit.edu> wrote on 10/15/2007 03:40:01 PM:
> Sorry for my delayed response to Igor's thoughtful message; I was out
> sick at the end of last week (but am getting better now). Let me
> address three issues first, and then devote a separate message to the
> most important issue that Igor raised.
>
> 1. Igor is right that the list of array syntax proposals is missing 2
> items. Section B.3 of the proposal lays out the space of 6
> possibilities:
>
> * 3 locations for annotations: inside-brackets, prefix, postfix
> * 2 possibilities for what the annotation modifies: array, elements
>
> but then explicit enumerates only 4 (not all 6).
>
> I have added the two missing items. I also changed the proposal
> numbers (1-4) to names (ARRAY-IN, ARRAY-PRE, ARRAY-POST, ELTS-IN,
> ELTS-PRE, ELTS-POST).
Thanks, looks good now.
> 2. I lean against permitting parentheses in type specifications. I
> fear this may change the feel of the Java language, and I want to be
> conservative in adopting such changes. I would also like to see how
> often it is necessary in practice. Obviously, if a compelling case
> can be made, then I am willing to change my mind.
In case it wasn't clear from my message, I lean against it as well.
We might want to address some other mechanisms for grouping type
specifications, however.
> 3. In a declaration, Java permits array dimensions to be specified
> both after the type and after the variable, as in this identity
> function on 2-D arrays of Integers:
>
> Integer[] id(Integer[] x []) [] { return x; }
>
> This syntax was probably motivated by C syntax. My feeling is that
> use of the brackets after the variable is relatively rare and is
> usually bad style, so we should focus first on what makes sense and is
> readable for the more standard declarations, such as
>
> Integer[][] id(Integer[][] x) { return x; }
>
> and only then worry about accommodating the other case.
The syntax for variables was certainly motivated by C. It's unclear
why the same syntax was adopted for methods -- perhaps for symmetry.
C does not allow putting the brackets after the parentheses (in fact,
returning arrays is not allowed in C).
I agree that we shouldn't worry overmuch about this corner case.
Igor
--
Igor Peshansky (note the spelling change!)
IBM T.J. Watson Research Center
XJ: No More Pain for XML's Gain (http://www.research.ibm.com/xj/)
X10: Parallel Productivity and Performance (http://x10.sf.net/)
More information about the JSR308
mailing list