mjc

org.multijava.mjc
Class CClassNameType

java.lang.Object
  extended byorg.multijava.util.Utils
      extended byorg.multijava.mjc.CType
          extended byorg.multijava.mjc.CClassType
              extended byorg.multijava.mjc.CClassNameType
All Implemented Interfaces:
Cloneable, Comparable, Constants, Constants, CTypeSignatureAppender
Direct Known Subclasses:
CClassFQNameType

public class CClassNameType
extends CClassType

This class represents a class type when the class name first appears as a forward reference. The internal structure must be filled in later when enough information is available to find the corresponding class declaration.

See Also:
CType

Nested Class Summary
 
Nested classes inherited from class org.multijava.mjc.CType
CType.MethodSignature, CType.MethodSignatureParser, CType.StringBuffers, CType.TupleCollection
 
Field Summary
private  String ident
           
(package private) static boolean ignoredJavaAlready
           
private  boolean isRawType
           
protected  String maybeQualifiedName
           
private  String originalQualifiedName
           
 
Fields inherited from class org.multijava.mjc.CClassType
arguments, EMPTY, EMPTY_ARG, index, universe
 
Fields inherited from class org.multijava.mjc.CType
instance, isMethodTypeVariable, isTypeVariable, type
 
Fields inherited from class org.multijava.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
Fields inherited from interface org.multijava.mjc.Constants
ACC_MODIFIER_FLAGS_MASK, ACC_NON_NULL, ACC_NON_NULL_BY_DEFAULT, ACC_NULLABLE, ACC_NULLABLE_BY_DEFAULT, ACC_PURE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, AMID_JAVA_MATH, AMID_MAX, AMID_SAFE_MATH, CMP_VERSION, IMPLICITLY_NON_NULL, JAV_ASSERTION_ERROR, JAV_CLASS, JAV_CLASSLOADER, JAV_CLASSNOTFOUND_EXCEPTION, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_NOCLASSDEFFOUND_ERROR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RMJ_RUNTIME_EXCEPTION, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_SERIALIZABLE, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_SUPER, JAV_THIS, JAV_THROWABLE, MJ_ANCHOR, NULLITY_MODS, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LAND, OPE_LE, OPE_LNOT, OPE_LOR, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_MAX, TID_SHORT, TID_VOID, UNIV_ARRAY_TMP, UNIV_TMP
 
Fields inherited from interface org.multijava.util.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, ATT_ANCHOR, ATT_BRIDGE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_DISPATCHER, ATT_EXCEPTIONS, ATT_GENERIC, ATT_GENERIC_FUNCTIONS, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_MM_BODY, ATT_REDIRECTOR, ATT_RMJ_GLUE, ATT_RMJ_SIGNATURE, ATT_RUNTIME_VISIBLE_ANNOTATIONS, ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATT_SIGNATURE, ATT_SOURCEFILE, ATT_SYNTHETIC, ATT_UNIVERSE_FIELD, ATT_UNIVERSE_METHOD, ATT_UNIVERSE_VERSION, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_dup_x1, opc_dup_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc2_w, opc_ldc_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
(package private) CClassNameType(String maybeQualifiedName)
          Construct a class type.
(package private) CClassNameType(String maybeQualifiedName, CUniverse univ, CClassType[][] arguments)
          Construct a class type.
 
Method Summary
 void appendGenericSignature(FastStringBuffer buff)
           
 boolean changesByErasure()
          Returns whether this type differs from its type erasure (JLS3 4.6).
protected  void checkInstantiation(CContextType context)
          Checks the instantiation of a generic type by performing the following checks on this type's CClass and all its owners: Type check the type variables of the class.
private  void checkPossibleRawType(CContextType context)
          Performs the necessary type checking for a raw type.
 CType checkType(CContextType context)
          Checks that this type is valid, throwing an exception if it is not.
private static void checkTypeArguments(CTypeVariable[] typeVariables, CClassType[] typeArguments, CContextType context)
          Performs the type checking on all the typeArguments (the type checked versions are re-stored into the same array) and checks whether the typeArguments are valid for the given typeVariables.
(package private)  void forgetChecking()
           
 CClassType[][] getAllArguments()
          return the arguments of this type
 CClassType[] getArguments()
           
 CType getCapture(CContextType context)
          Returns the result of applying capture conversion (JLS3 5.1.10) to this type.
 CClass getCClass()
          Returns the class object associated with this type.
 CType getErasure()
           
 String getIdent()
           
 boolean isGenericType()
          check to see whether this class type is Generic or Not
 boolean isMethodTypeVariable()
           
 boolean isRawType()
          Returns whether this is a raw type (JLS3 4.8).
 boolean isReifiableType()
          Returns whether this is a reifiable type (JLS3 4.7).
 boolean isTypeVariable()
          Check if a type is a type variable
 String originalQualifiedName()
           
 String printArgs()
          Print the type arguments of this class type
 String qualifiedName()
           
protected  void registerAsVisibleIn(CContextType context)
          Registers the type represented by this as being visible in the given context.
 void setAllArguments(CClassType[][] args)
           
protected  void setClass(CClass clazz)
          Sets the CClass singleton that goes with this class type and registers that this name type has been checked.
protected  void setClassFromNameOrDieTrying()
          Attempts to associate this type with a CClass singleton having the name given by maybeQualifiedName.
 void setIdent(String id)
           
 String toString()
          Transforms this type to a string
 
Methods inherited from class org.multijava.mjc.CClassType
appendSignature, capture, clone, contains, createSubstitutedType, directlyVisibleTypes, equals, equals, equals, equals, getCUniverse, getCUniverseJMLString, getCUniverseMJString, getCUniverseString, getIndex, getSize, getUniverseByteConstant, getVisibleTypesFrom, hashCode, hasUnboundedWildcardTypeArgumentsOnly, hasWildcardTypeArgument, ident, implicitlyCastTo, isAlwaysAssignableTo, isAlwaysAssignableTo, isAlwaysAssignableTo, isAlwaysAssignableToNoUniverses, isAssignableTo, isCastableTo, isChecked, isCheckedException, isClassType, isConcrete, isInterface, isLocalTo, isNestedType, isParameterizedType, isRawTypeInvocationOf, isReference, isValidTypeArgumentFor, needsUncheckedConversion, needsUncheckedConversion, plantDispatchTest, resolveValueType, setCUniverse, setIndex, toVerboseString
 
Methods inherited from class org.multijava.mjc.CType
checked, compareTo, genGenericMethodSignature, genGenericMethodSignature, genGenericMethodSignatureHelper, genMethodSignature, genMultimethodSignature, getErasure, getGenericSignature, getLoadOpcode, getReturnOpcode, getSignature, getStoreOpcode, getTypeID, getValue, isArrayType, isBoolean, isCapture, isClassTypeVariable, isCodedAsInt, isFloatingPoint, isNumeric, isOrdinal, isPrimitive, isValueType, isVoid, isWildcard, parseGenericTypeSignature, parseGenericTypeSignature, parseMethodSignature, parseMethodSignature, parseSignature, parseSignature, setMethodTypeVariable, setTypeVariable, specializerSymbol, tupleToString, tupleToString
 
Methods inherited from class org.multijava.util.Utils
assertTrue, assertTrue, combineArrays, escapeString, escapeString, fail, fail, getFilePath, hasFlag, hasOtherFlags, parsePathParts, relativePathTo, splitQualifiedName, splitQualifiedName, stripJavaModifiers, stripNonJavaModifiers, stripPrivateModifier, unescapeString, vectorToArray, vectorToIntArray
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ignoredJavaAlready

static boolean ignoredJavaAlready

ident

private String ident

maybeQualifiedName

protected String maybeQualifiedName

originalQualifiedName

private final String originalQualifiedName

isRawType

private boolean isRawType
Constructor Detail

CClassNameType

CClassNameType(String maybeQualifiedName)
Construct a class type.


CClassNameType

CClassNameType(String maybeQualifiedName,
               CUniverse univ,
               CClassType[][] arguments)
Construct a class type. Package accessible since clients should call CTopLevel.getTypeRep(name,isFullyQualified) to get a singleton for the given name.

Parameters:
maybeQualifiedName - the name of the class, perhaps just partially qualified or not qualified at all, but with '/' not '.' separators if any separators are present
See Also:
CClassType#lookup(String,boolean)
Method Detail

toString

public String toString()
Transforms this type to a string

Overrides:
toString in class CClassType

printArgs

public String printArgs()
Print the type arguments of this class type

Overrides:
printArgs in class CClassType

appendGenericSignature

public void appendGenericSignature(FastStringBuffer buff)
Specified by:
appendGenericSignature in interface CTypeSignatureAppender
Overrides:
appendGenericSignature in class CType

qualifiedName

public String qualifiedName()
Overrides:
qualifiedName in class CClassType

originalQualifiedName

public String originalQualifiedName()
Overrides:
originalQualifiedName in class CClassType

getCClass

public CClass getCClass()
Returns the class object associated with this type. If this type was never checked (i.e., associated with a CClass singleton), then check it!

Overrides:
getCClass in class CClassType
Returns:
the class object associated with this type

checkType

public CType checkType(CContextType context)
                throws UnpositionedError
Checks that this type is valid, throwing an exception if it is not. For class types this check resolves type names into their fully qualified versions and sets the class parameter so that getCClass returns the appropriate singleton.

Overrides:
checkType in class CClassType
Parameters:
context - the context in which this type was declared
Throws:
UnpositionedError - this unpositioned error should be positioned by the calling node of the AST, typically by calling the addPosition method of UnpositionedError

checkInstantiation

protected void checkInstantiation(CContextType context)
                           throws UnpositionedError
Checks the instantiation of a generic type by performing the following checks on this type's CClass and all its owners:

Parameters:
context - The type checking context.
Throws:
UnpositionedError - if some error occurs during type checking.

checkPossibleRawType

private void checkPossibleRawType(CContextType context)
                           throws UnpositionedError
Performs the necessary type checking for a raw type. In particular, the following tasks are performed:

Parameters:
context - The type checking context.
Throws:
UnpositionedError - if some error occurs during type checking.

checkTypeArguments

private static void checkTypeArguments(CTypeVariable[] typeVariables,
                                       CClassType[] typeArguments,
                                       CContextType context)
                                throws UnpositionedError
Performs the type checking on all the typeArguments (the type checked versions are re-stored into the same array) and checks whether the typeArguments are valid for the given typeVariables.

Parameters:
typeVariables - The formal type variables.
typeArguments - The actual type arguments for the type variables.
context - The type checking context.
Throws:
UnpositionedError - if some error occurs during type checking.

registerAsVisibleIn

protected final void registerAsVisibleIn(CContextType context)
                                  throws UnpositionedError
Registers the type represented by this as being visible in the given context. Does nothing if context == null.

 requires maybeQualifiedName == null;
 

Throws:
UnpositionedError

setClassFromNameOrDieTrying

protected void setClassFromNameOrDieTrying()
                                    throws UnpositionedError
Attempts to associate this type with a CClass singleton having the name given by maybeQualifiedName. Called after all other options for finding the class have been exhausted.

Throws:
UnpositionedError - if singleton cannot be found
See Also:
maybeQualifiedName, CTopLevel.loadClass(String)

setClass

protected void setClass(CClass clazz)
Sets the CClass singleton that goes with this class type and registers that this name type has been checked.

Overrides:
setClass in class CClassType
Parameters:
clazz - the CClass singleton that goes with this class type

forgetChecking

void forgetChecking()

getErasure

public CType getErasure()
Overrides:
getErasure in class CClassType

getCapture

public CType getCapture(CContextType context)
                 throws UnpositionedError
Description copied from class: CType
Returns the result of applying capture conversion (JLS3 5.1.10) to this type.

Note that capture conversion only changes a parametrized type with at least one wildcard in its type arguments.

Overrides:
getCapture in class CType
Throws:
UnpositionedError

isGenericType

public boolean isGenericType()
check to see whether this class type is Generic or Not

Overrides:
isGenericType in class CType

isRawType

public boolean isRawType()
Description copied from class: CType
Returns whether this is a raw type (JLS3 4.8).

Overrides:
isRawType in class CType

isReifiableType

public boolean isReifiableType()
Description copied from class: CType
Returns whether this is a reifiable type (JLS3 4.7).

Overrides:
isReifiableType in class CType

changesByErasure

public boolean changesByErasure()
Description copied from class: CType
Returns whether this type differs from its type erasure (JLS3 4.6).

Overrides:
changesByErasure in class CType

getArguments

public CClassType[] getArguments()
Overrides:
getArguments in class CClassType

getAllArguments

public CClassType[][] getAllArguments()
Description copied from class: CClassType
return the arguments of this type

Overrides:
getAllArguments in class CClassType

setAllArguments

public void setAllArguments(CClassType[][] args)
Overrides:
setAllArguments in class CClassType

isTypeVariable

public boolean isTypeVariable()
Description copied from class: CType
Check if a type is a type variable

Overrides:
isTypeVariable in class CType

isMethodTypeVariable

public boolean isMethodTypeVariable()
Overrides:
isMethodTypeVariable in class CType

getIdent

public String getIdent()
Overrides:
getIdent in class CType

setIdent

public void setIdent(String id)

mjc

mjc is Copyright (C) 2000-2004 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. mjc is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.