JML

org.multijava.mjc
Class CNullType

java.lang.Object
  extended byorg.multijava.util.Utils
      extended byorg.multijava.mjc.CType
          extended byorg.multijava.mjc.CClassType
              extended byorg.multijava.mjc.CNullType
All Implemented Interfaces:
Cloneable, Comparable, Constants, Constants, CTypeSignatureAppender

public class CNullType
extends CClassType

This class represents null class type in the type structure

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
 
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
CNullType()
          Construct a class type
 
Method Summary
 CClass getCClass()
          Returns the class object associated with this type.
protected  CClass getObject()
          get the object, if this type was never checked (reads from class files) check it!
 int getSize()
          Returns the size used in stack by value of this type
 boolean implicitlyCastTo(CType dest)
          implicitlyCastTo
 boolean isAlwaysAssignableTo(CType dest)
          Is this type assignable to the given type by assignment type conversion [JLS2 5.2] [JLS2 5.1.4].
 boolean isAlwaysAssignableTo(CType dest, boolean inst)
          Is this type assignable to the given type by assignment type conversion [JLS2 5.2] [JLS2 5.1.4]
 boolean isAlwaysAssignableTo(CType dest, CClassType[] subst)
           
 boolean isCastableTo(CType dest)
          isCastableTo
 boolean needsUncheckedConversion(CType dest)
          Returns whether unchecked conversion (JLS3 5.1.9) is required in order to convert from this type to the given type dest.
 String toString()
          Transforms this type to a string
 String toVerboseString()
          For the null literal the universe annotation is not meaningful.
 
Methods inherited from class org.multijava.mjc.CClassType
appendSignature, capture, checkType, clone, contains, createSubstitutedType, directlyVisibleTypes, equals, equals, equals, equals, getAllArguments, getArguments, getCUniverse, getCUniverseJMLString, getCUniverseMJString, getCUniverseString, getErasure, getIndex, getUniverseByteConstant, getVisibleTypesFrom, hashCode, hasUnboundedWildcardTypeArgumentsOnly, hasWildcardTypeArgument, ident, isAlwaysAssignableToNoUniverses, isAssignableTo, isChecked, isCheckedException, isClassType, isConcrete, isInterface, isLocalTo, isNestedType, isParameterizedType, isRawTypeInvocationOf, isReference, isValidTypeArgumentFor, needsUncheckedConversion, originalQualifiedName, plantDispatchTest, printArgs, qualifiedName, resolveValueType, setAllArguments, setClass, setCUniverse, setIndex
 
Methods inherited from class org.multijava.mjc.CType
appendGenericSignature, changesByErasure, checked, compareTo, genGenericMethodSignature, genGenericMethodSignature, genGenericMethodSignatureHelper, genMethodSignature, genMultimethodSignature, getCapture, getErasure, getGenericSignature, getIdent, getLoadOpcode, getReturnOpcode, getSignature, getStoreOpcode, getTypeID, getValue, isArrayType, isBoolean, isCapture, isClassTypeVariable, isCodedAsInt, isFloatingPoint, isGenericType, isMethodTypeVariable, isNumeric, isOrdinal, isPrimitive, isRawType, isReifiableType, isTypeVariable, 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
 

Constructor Detail

CNullType

public CNullType()
Construct a class type

Method Detail

isAlwaysAssignableTo

public boolean isAlwaysAssignableTo(CType dest)
Is this type assignable to the given type by assignment type conversion [JLS2 5.2] [JLS2 5.1.4].

Overrides:
isAlwaysAssignableTo in class CClassType
Parameters:
dest - the destination type
Returns:
true iff assignment is valid

isAlwaysAssignableTo

public boolean isAlwaysAssignableTo(CType dest,
                                    boolean inst)
Description copied from class: CClassType
Is this type assignable to the given type by assignment type conversion [JLS2 5.2] [JLS2 5.1.4]

Overrides:
isAlwaysAssignableTo in class CClassType

isAlwaysAssignableTo

public boolean isAlwaysAssignableTo(CType dest,
                                    CClassType[] subst)
Overrides:
isAlwaysAssignableTo in class CClassType

isCastableTo

public boolean isCastableTo(CType dest)
isCastableTo

Overrides:
isCastableTo in class CClassType
Parameters:
dest - the destination type
Returns:
cast is valid ?

implicitlyCastTo

public boolean implicitlyCastTo(CType dest)
implicitlyCastTo

Overrides:
implicitlyCastTo in class CClassType
Parameters:
dest - the expression type to cast to
Returns:
cast is valid ?

needsUncheckedConversion

public boolean needsUncheckedConversion(CType dest)
Description copied from class: CType
Returns whether unchecked conversion (JLS3 5.1.9) is required in order to convert from this type to the given type dest.

Overrides:
needsUncheckedConversion in class CClassType

getObject

protected CClass getObject()
get the object, if this type was never checked (reads from class files) check it!


getCClass

public CClass getCClass()
Returns the class object associated with this type. In this case it is always the java.lang.Object CClass singleton.

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

toString

public String toString()
Transforms this type to a string

Overrides:
toString in class CClassType

toVerboseString

public String toVerboseString()
For the null literal the universe annotation is not meaningful. By WMD.

Overrides:
toVerboseString in class CClassType

getSize

public int getSize()
Returns the size used in stack by value of this type

Overrides:
getSize in class CClassType

JML

JML is Copyright (C) 1998-2002 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. This release depends on code from the MultiJava project and is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.