/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/** A type annotation position.
*
* <p><b>This is NOT part of any supported API.
* If you write code that depends on this, you do so at your own risk.
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public class TypeAnnotationPosition {
// Tree position.
// For typecasts, type tests, new (and locals, as start_pc).
public boolean isValidOffset = false;
// For locals. arrays same length
// For type parameter bound
// For type parameter and method parameter
// For class extends, implements, and throws classes
// For wildcards
switch (type) {
// type case
case TYPECAST:
// object creation
case INSTANCEOF:
// new expression
case NEW:
case NEW_GENERIC_OR_ARRAY:
case NEW_TYPE_ARGUMENT:
break;
// local variable
case LOCAL_VARIABLE:
}
break;
// method receiver
case METHOD_RECEIVER:
// Do nothing
break;
// type parameters
case CLASS_TYPE_PARAMETER:
case METHOD_TYPE_PARAMETER:
break;
// type parameters bound
break;
// wildcard
case WILDCARD_BOUND:
break;
// Class extends and implements clauses
case CLASS_EXTENDS:
break;
// throws
case THROWS:
break;
case CLASS_LITERAL:
break;
// method parameter: not specified
break;
// method type argument: wasn't specified
case METHOD_TYPE_ARGUMENT:
break;
// We don't need to worry abut these
case FIELD_GENERIC_OR_ARRAY:
break;
case UNKNOWN:
break;
default:
// throw new AssertionError("unknown type: " + type);
}
if (type.hasLocation()) {
}
}
/**
* Indicates whether the target tree of the annotation has been optimized
* away from classfile or not.
* @return true if the target has not been optimized away
*/
public boolean emitToClassfile() {
return wildcard_position.isValidOffset;
else
}
}