Draft JEP: Keyword Management for the Java Language
Alex Buckley
alex.buckley at oracle.com
Sat May 4 00:31:43 UTC 2019
On 5/3/2019 4:44 PM, Dan Smith wrote:
> Clarification on the asides about `var`:
>
> "various linguistic heroics, such as reclassifying the identifier var as a type name but only in variable declarations"
>
> "a sequence of Java letters that is always tokenized as an identifier for which special provision is made in certain contexts (e.g., var, a type identifier in Java 10, also known as a reserved type name)."
>
> Here's the model:
> - `var` is an identifier
> - A *type identifier* is an identifier that can be used to name a type—a subset of all identifiers
> - `var` is *not* a type identifier
> - The identifier `var` is explicitly matched by the grammar rule LocalVariableType, and in that case given special meaning
Oops, yes, the JEP was wrong to say "var, a type identifier in Java 10".
> How I'd rephrase your notes:
>
> "various linguistic heroics, such as reclassifying the identifier var when it appears as a type name"
The phrasing "such as X _but only in ..._, or Y _but only in ..._" is
pedagogical -- it gets a point across in the high-level motivation.
However, I agree that "reclassifying" is too strong for `var` -- it is
always and everywhere an identifier -- so I have changed it to "such as
treating the identifier `var` as a type name _but only in local variable
declarations_"
> "a sequence of Java letters that is always tokenized as an identifier for which special provision is made in certain contexts (e.g., var, a reserved type name in Java 10)."
>
> (I don't know if the term "reserved type name" is formally defined somewhere, but it seems like an appropriate description.)
"reserved type name" isn't a JLS term, but I have no quarrel with it
being the primary label for `var` in the JEP. I linked to the special
syntactic treatment of `var` in 14.4 and the special semantic treatment
in 14.4.1.
Thanks,
Alex
More information about the jdk-dev
mailing list