RFR: JDK-8281169: Expand discussion of elements and types [v2]
Maurizio Cimadamore
mcimadamore at openjdk.org
Tue Aug 15 17:32:14 UTC 2023
On Thu, 10 Aug 2023 22:37:33 GMT, Joe Darcy <darcy at openjdk.org> wrote:
>> The goal is this change is to convey to the reader an accurate "vibe" for the dichotomy between elements and type in the javax.lang.model API rather than a primer on category theory (projection-embedding pairs, etc.).
>
> Joe Darcy has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
>
> - Iteration of spec update.
> - Merge branch 'master' into JDK-8281169
> - Checkpoint intermediate state.
> - Merge branch 'master' into JDK-8281169
> - JDK-8281169: Expand discussion of elements and types
src/java.compiler/share/classes/javax/lang/model/package-info.java line 114:
> 112: *
> 113: * <p>All elements can be {@linkplain
> 114: * javax.lang.model.element.Element#asType() mapped to} some type. For
I find this sentence not very clear. I'd phrase it more directly as "Class and interface elements map to..." but I think "prototypical type" is also part of the problem (what is it?). Perhaps it would be worth mentioning that this type has some interesting properties:
* if the element is a non-generic class, then the type is equal to a type mirror corresponding to the unannotated use of that type.
* if the element is a generic class, then the type is a parameterization of the class declaration, where the type arguments are the type variables of the declaring class/interface.
src/java.compiler/share/classes/javax/lang/model/package-info.java line 117:
> 115: * classes and interfaces, their elements get {@linkplain
> 116: * javax.lang.model.element.TypeElement#asType() mapped to} a
> 117: * prototypical type. Conversely, in general, many types can map to a
replace "to a given" with "to the same"
src/java.compiler/share/classes/javax/lang/model/package-info.java line 122:
> 120: * java.util.Set<E>}, and the type {@code java.util.Set<String>} would
> 121: * all {@linkplain javax.lang.model.type.DeclaredType#asElement() map
> 122: * to} the element for {@code java.util.Set}. Several kinds of types
It would be good to mention at least one `e.g.` for each case - e.g. `DeclaredType` have an element, but `ExecutableType` does not.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/15097#discussion_r1294904085
PR Review Comment: https://git.openjdk.org/jdk/pull/15097#discussion_r1294904356
PR Review Comment: https://git.openjdk.org/jdk/pull/15097#discussion_r1294906404
More information about the compiler-dev
mailing list