8004730: Add language model support for parameter reflection
authordarcy
Wed, 09 Jan 2013 20:02:53 -0800
changeset 15042 88ce00b3841a
parent 15041 0676d2a112ff
child 15043 4aae62f3b9a8
8004730: Add language model support for parameter reflection Reviewed-by: abuckley
langtools/src/share/classes/javax/lang/model/element/Element.java
langtools/src/share/classes/javax/lang/model/element/VariableElement.java
langtools/src/share/classes/javax/lang/model/element/package-info.java
--- a/langtools/src/share/classes/javax/lang/model/element/Element.java	Wed Jan 09 10:26:58 2013 -0800
+++ b/langtools/src/share/classes/javax/lang/model/element/Element.java	Wed Jan 09 20:02:53 2013 -0800
@@ -179,6 +179,10 @@
      * instance initializer}, an empty name is returned.
      *
      * @return the simple name of this element
+     * @see PackageElement#getSimpleName
+     * @see ExecutableElement#getSimpleName
+     * @see TypeElement#getSimpleName
+     * @see VariableElement#getSimpleName
      */
     Name getSimpleName();
 
@@ -202,6 +206,11 @@
      * {@linkplain TypeParameterElement#getGenericElement the
      * generic element} of the type parameter is returned.
      *
+     * <li> If this is a {@linkplain
+     * VariableElement#getEnclosingElement method or constructor
+     * parameter}, {@linkplain ExecutableElement the executable
+     * element} which declares the parameter is returned.
+     *
      * </ul>
      *
      * @return the enclosing element, or {@code null} if there is none
--- a/langtools/src/share/classes/javax/lang/model/element/VariableElement.java	Wed Jan 09 10:26:58 2013 -0800
+++ b/langtools/src/share/classes/javax/lang/model/element/VariableElement.java	Wed Jan 09 20:02:53 2013 -0800
@@ -62,4 +62,29 @@
      * @jls 4.12.4 final Variables
      */
     Object getConstantValue();
+
+    /**
+     * Returns the simple name of this variable element.
+     *
+     * <p>For method and constructor parameters, the name of each
+     * parameter must be distinct from the names of all other
+     * parameters of the same executable.  If the original source
+     * names are not available, an implementation may synthesize names
+     * subject to the distinctness requirement above.
+     *
+     * @return the simple name of this variable element
+     */
+    @Override
+    Name getSimpleName();
+
+    /**
+     * Returns the enclosing element of this variable.
+     *
+     * The enclosing element of a method or constructor parameter is
+     * the executable declaring the parameter.
+     *
+     * @return the enclosing element of this variable
+     */
+    @Override
+    Element getEnclosingElement();
 }
--- a/langtools/src/share/classes/javax/lang/model/element/package-info.java	Wed Jan 09 10:26:58 2013 -0800
+++ b/langtools/src/share/classes/javax/lang/model/element/package-info.java	Wed Jan 09 20:02:53 2013 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -48,9 +48,12 @@
  * {@linkplain java.lang.annotation.RetentionPolicy#SOURCE source}
  * {@linkplain java.lang.annotation.Retention retention} cannot be
  * recovered from class files and class files might not be able to
- * provide source position information.  The {@linkplain
- * javax.lang.model.element.Modifier modifiers} on an element may
- * differ in some cases including
+ * provide source position information.
+ *
+ * Names of parameters may not be recoverable from class files.
+ *
+ * The {@linkplain javax.lang.model.element.Modifier modifiers} on an
+ * element may differ in some cases including:
  *
  * <ul>
  * <li> {@code strictfp} on a class or interface