|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object jml2b.util.Profiler jml2b.structure.java.ParsedItem jml2b.structure.java.Type
Class representing types. Types can correspond to builtin types
(int
, short
, etc...), reference types
(correspoding to references to classes) or array types.
Types contains a tag that describes the type information available.
The tag can be equal to:
T_VOID
, only used for describing return values.
Correspond to the void
return value.
T_BOOLEAN
, indicating that the type corresponds to the
boolean
builtin type.
T_BYTE
, indicating that the type corresponds to the
byte
builtin type.
T_SHORT
, indicating that the type corresponds to the
short
builtin type.
T_CHAR
, indicating that the type corresponds to the
char
builtin type.
T_DOUBLE
, indicating that the type corresponds to the
double
builtin type.
T_FLOAT
, indicating that the type corresponds to the
float
builtin type.
T_INT
, indicating that the type corresponds to the
int
builtin type.
T_LONG
, indicating that the type corresponds to the
long
builtin type.
T_NULL
, indicating that the type corresponds to a
null
reference. Such type should never occur in a
signature, and is only used internally.
T_TYPE
, indicating that the type corresponds to a
type. The jml \type
operator can produce such
types.
T_REF
, indicating that the type corresponds to a
reference to a class. The corresponding class can be accessed using
the getRefType
method.
T_ARRAY
, indicating that the type corresponds to a
reference to an array. The type describing the elements stored
within the array is obtained using the getElemType
method. For those types, the getRefType
method can be
called and will return the special "array" class.
Type#getRefType();
,
Type#getElemType();
,
Serialized FormField Summary | |
static int |
T_ARRAY
indicate an array type. |
static int |
T_BOOLEAN
Constant representing the boolean type. |
static int |
T_BYTE
Constant representing the byte type. |
static int |
T_CHAR
Constant representing the char type. |
static int |
T_CLASS
used for typing class expression: this should always result in a typecheck error |
static int |
T_DOUBLE
Constant representing the double type. |
static int |
T_FLOAT
Constant representing the float type. |
static int |
T_INT
Constant representing the int type. |
static int |
T_LONG
Constant representing the long type. |
static int |
T_NULL
Constant representing the null type. |
static int |
T_REF
Constant used to tag references to classes. |
static int |
T_SHORT
Constant representing the short type. |
static int |
T_TYPE
used for return values of \elemtype and \type |
static int |
T_VOID
Constant representing the void type. |
Fields inherited from interface jml2b.link.Linkable |
STATE_LINKED, STATE_LINKED_STATEMENTS, STATE_LINKED_TYPE_CHECKED, STATE_UNLINKED |
Fields inherited from interface jml.JmlDeclParserTokenTypes |
ABRUPT_BEHAVIOR, ACCESSIBLE, ACCESSIBLE_KEYWORD, ACCESSIBLE_REDUNDANTLY, ACCESSIBLE_SEQ, ADDITIVE_ASSIGNMENT_OP, ADDITIVE_OP, AFFIRM_KEYWORD, ALSO, AND, ARRAY_DECLARATOR, ASGNABLE_SEQ, ASSERT, ASSERT_REDUNDANTLY, ASSIGN, ASSIGNABLE, ASSIGNABLE_KEYWORD, ASSIGNABLE_REDUNDANTLY, ASSUME, ASSUME_KEYWORD, ASSUME_REDUNDANTLY, AXIOM, BACKWARD_IMPLIES, BADCHAR, BAND, BAND_ASSIGN, BEHAVIOR, BITWISE_ASSIGNMENT_OP, BITWISE_OP, BNOT, BOR, BOR_ASSIGN, BREAKS, BREAKS_KEYWORD, BREAKS_REDUNDANTLY, BREAKS_SEQ, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, CALLABLE, CALLABLE_KEYWORD, CALLABLE_REDUNDANTLY, CALLABLE_SEQ, CASE, CAST, CHAR_LITERAL, CHOOSE, CHOOSE_IF, COLON, COMMA, CONJOINABLE_SPEC, CONSTRAINT, CONSTRAINT_KEYWORD, CONSTRAINT_REDUNDANTLY, CONSTRUCTOR, CONT_SEQ, CONTINUES, CONTINUES_KEYWORD, CONTINUES_REDUNDANTLY, DEC, DECREASES, DECREASES_REDUNDANTLY, DECREASING, DECREASING_KEYWORD, DECREASING_REDUNDANTLY, DEPENDS, DEPENDS_KEYWORD, DEPENDS_REDUNDANTLY, DIM_EXPRS, DIMS, DINFORMALLY, DIV, DIV_ASSIGN, DIV_SEQ, DIVERGES, DIVERGES_KEYWORD, DIVERGES_REDUNDANTLY, DOC_ATSIGN, DOC_ATSIGN_KEYWORD, DOC_AUTHOR, DOC_COMMENT, DOC_COMMENT_START, DOC_DEPRECATED, DOC_EXCEPTION, DOC_JML_SPECS, DOC_NL_WS, DOC_NON_EMPTY_TEXTLINE, DOC_NON_NL_WS, DOC_PARAM, DOC_RETURN, DOC_SEE, DOC_SERIAL, DOC_SERIALDATA, DOC_SERIALFIELD, DOC_SINCE, DOC_THROWS, DOC_UNKNOWN_KEYWORD, DOC_VERSION, DOT, DOT_DOT, ELSE, ENS_SEQ, ENSURES, ENSURES_KEYWORD, ENSURES_REDUNDANTLY, EOF, EQUAL, EQUALITY_OP, EQUIV, EQUIVALENCE_OP, ESC, EXAMPLE, EXCEPTIONAL_BEHAVIOR, EXCEPTIONAL_EXAMPLE, EXPONENT, EXSURES, EXSURES_REDUNDANTLY, EXT_ALSO, EXT_AND, FLOAT_SUFFIX, FOR, FOR_EXAMPLE, FOR_INIT, FOR_TEST, FOR_UPDATER, FORALL, GE, GHOST, GT, HENCE_BY, HENCE_BY_KEYWORD, HENCE_BY_REDUNDANTLY, HEX_DIGIT, IDENT, IGNORED_AT_IN_COMMENT, IMPLICATION_OP, IMPLIES_THAT, INC, INFORMAL_DESCRIPTION, INIT, INITIALIZER, INITIALLY, INSTANCE, INSTANCE_INIT, INVARIANT, INVARIANT_KEYWORD, INVARIANT_REDUNDANTLY, IS_SUBTYPE_OF, JAVA_BUILTIN_TYPE, JAVA_MODIFIER, JML_BACKSLASH_SEQUENCE, JML_MODIFIER, L_ARROW, LABEL, LABEL_KEYWORD, LAND, LBRACK, LCURLY, LCURLY_VBAR, LE, LET, LETOLD_KEYWORD, LIMPLIES, LITERAL_abstract, LITERAL_assert, LITERAL_boolean, LITERAL_break, LITERAL_byte, LITERAL_case, LITERAL_catch, LITERAL_char, LITERAL_class, LITERAL_const, LITERAL_continue, LITERAL_default, LITERAL_do, LITERAL_double, LITERAL_else, LITERAL_extends, LITERAL_false, LITERAL_final, LITERAL_finally, LITERAL_float, LITERAL_for, LITERAL_if, LITERAL_implements, LITERAL_import, LITERAL_instanceof, LITERAL_int, LITERAL_interface, LITERAL_long, LITERAL_native, LITERAL_new, LITERAL_null, LITERAL_package, LITERAL_private, LITERAL_protected, LITERAL_public, LITERAL_return, LITERAL_short, LITERAL_static, LITERAL_strictfp, LITERAL_super, LITERAL_switch, LITERAL_synchronized, LITERAL_this, LITERAL_throw, LITERAL_throws, LITERAL_transient, LITERAL_true, LITERAL_try, LITERAL_void, LITERAL_volatile, LITERAL_while, LNOT, LOGICAL_OP, LOOP_ASGNABLE_SEQ, LOOP_ASSIGNABLE_KEYWORD, LOOP_EXSURES, LOOP_INV_SEQ, LOOP_INVARIANT, LOOP_INVARIANT_REDUNDANTLY, LOOP_MODIFIES, LOOP_SIG_SEQ, LOR, LPAREN, LT, MAINTAINING, MAINTAINING_KEYWORD, MAINTAINING_REDUNDANTLY, MEASURED_BY, MEASURED_BY_KEYWORD, MEASURED_BY_REDUNDANTLY, METH, MINUS, MINUS_ASSIGN, ML_COMMENT, MOD, MOD_ASSIGN, MODEL, MODEL_PROGRAM, MODIFIABLE, MODIFIABLE_REDUNDANTLY, MODIFIER_SET, MODIFIES, MODIFIES_REDUNDANTLY, MONITORED, MONITORED_BY, MULTIPLICATIVE_ASSIGNMENT_OP, MULTIPLICATIVE_OP, NESTED_CLASS, NL_WS, NON_NL_WS, NON_NULL, NORMAL_BEHAVIOR, NORMAL_EXAMPLE, NOT_EQUAL, NOT_EQUIV, NOWARN_LABEL, NOWARN_LABEL_LIST, NULL_TREE_LOOKAHEAD, NUM_FLOAT, NUM_INT, OLD, OR, PARAM, PLUS, PLUS_ASSIGN, POST, POST_DEC, POST_INC, POST_INCREMENT_OP, POST_REDUNDANTLY, PRE, PRE_INCREMENT_OP, PRE_REDUNDANTLY, PRIVACY_MODIFIER, PURE, QUANT_VARS, QUANTIFIED_EXPR, QUANTIFIER_TOKEN, QUESTION, R_ARROW, RBRACK, RCURLY, READABLE_IF, REFINE, RELATIONAL_OP, REPLACE, REPRESENTS, REPRESENTS_KEYWORD, REPRESENTS_REDUNDANTLY, REQUIRES, REQUIRES_KEYWORD, REQUIRES_REDUNDANTLY, RETURNS, RETURNS_KEYWORD, RETURNS_REDUNDANTLY, RETURNS_SEQ, RPAREN, SEMI, SET, SET_COMPR, SHIFT_ASSIGNMENT_OP, SHIFT_OP, SIG_SEQ, SIGNALS, SIGNALS_KEYWORD, SIGNALS_REDUNDANTLY, SL, SL_ASSIGN, SL_COMMENT, SPEC_CASE, SPEC_PROTECTED, SPEC_PUBLIC, SPEC_SL_COMMENT, SPEC_STATEMENT, SR, SR_ASSIGN, STAR, STAR_ASSIGN, STAR_ELEMS, STATIC_INITIALIZER, STRING_LITERAL, SUBCLASSING_CONTRACT, T_ELEMTYPE, T_EVERYTHING, T_EXISTS, T_FIELDS_OF, T_FORALL, T_FRESH, T_INVARIANT_FOR, T_IS_INITIALIZED, T_LBLNEG, T_LBLPOS, T_LOCKSET, T_MAX, T_MIN, T_NONNULLELEMENTS, T_NOT_MODIFIED, T_NOT_SPECIFIED, T_NOTHING, T_NUM_OF, T_OLD, T_OTHER, T_PRODUCT, T_REACH, T_RESULT, T_SUCH_THAT, T_SUM, T_TYPEOF, T_TYPEOFALLTYPES, UNARY_NUMERIC_OP, UNINITIALIZED, UNREACHABLE, VAR_DECL, VBAR_RCURLY, VF_SEQ, VOCAB, WEAKLY, WHEN, WHEN_KEYWORD, WHEN_REDUNDANTLY, WS |
Constructor Summary | |
Type()
|
|
Type(AClass cl)
Creates a new type corresponding to the given class. |
|
Type(IJml2bConfiguration config,
Type t)
Creates a new array class containing the given elements. |
|
Type(int tag)
Creates a new builtin type with the given tag. |
|
Type(JmlFile jf,
antlr.collections.AST tree)
Creates a new type from the given AST. |
|
Type(java.lang.String typeDescriptor)
|
|
Type(Type t)
Creates a new array type using the given type as elements. |
Method Summary | |
static Type |
addDims(JmlFile jmlFile,
antlr.collections.AST dims_ast,
Type t)
count the number of dimensions in the given ast. |
static Type |
binaryNumericPromotion(Type t1,
Type t2)
|
static void |
clearAll()
Sets typeObject to null. |
static Type |
createUnlinkedClass(java.lang.String fqn)
Creates an unlinked type element corresponding to the given fully qualified class name. |
boolean |
equals(java.lang.Object o)
|
boolean |
equals(Type t)
|
static Type |
getBoolean()
Returns a type corresponding to the boolean builtin
type. |
static Type |
getByte()
|
static Type |
getChar()
Returns a type corresponding to the char builtin
type. |
int |
getDimension()
return the dimension of the type. |
Type |
getElemType()
Returns the type of the elements of an array type. |
static Type |
getInteger()
Returns a type corresponding to the int builtin
type. |
static Type |
getObject(IJml2bConfiguration config)
Returns a type corresponding to the java.lang.Object
class. |
AClass |
getRefType()
Returns the reference type for references or array types. |
static Type |
getShort()
|
int |
getTag()
Returns the tag describing the type of the type. |
AClass |
getTargetedClass()
Returns the class that is the type of the object or of the element of the type if it is an array. |
static Type |
getType()
Returns a type corresponding to the type builtin
type. |
boolean |
isArray()
Returns true if this type correspond to an array type. |
boolean |
isBoolean()
|
boolean |
isBuiltin()
Returns true if the type is a builtin-type. |
boolean |
isIntegral()
|
boolean |
isNumeric()
|
boolean |
isRef()
|
boolean |
isSubtypeOf(Type t)
return true iff this is a subtype of the given type. |
void |
link(IJml2bConfiguration config,
LinkContext f)
|
int |
linkStatements(IJml2bConfiguration config,
LinkContext f)
|
antlr.collections.AST |
parse(antlr.collections.AST type_ast)
create a type from the given AST. |
void |
setBuiltin(int type_tag)
Set the current type to represent a builtin type of the type type_tag . |
boolean |
setBuiltin(java.lang.String type_name)
Set the current type to represent a builtin type of the typ described by the given string. |
void |
setParsedItem(ParsedItem pi)
|
static java.lang.String |
signatureToString(java.util.Enumeration e)
Converts a signature to a string suitable for printing. |
java.lang.String |
toJava()
Converts the type to a java representation. |
ITranslationResult |
toLang(java.lang.String language)
|
java.lang.String |
toString()
|
Type |
unaryPromote()
|
Methods inherited from class jml2b.structure.java.ParsedItem |
change, change, getColumn, getJmlFile, getLine, save, setBox |
Methods inherited from class jml2b.util.Profiler |
runGC |
Methods inherited from class java.lang.Object |
getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final int T_INT
int
type.
public static final int T_SHORT
short
type.
public static final int T_BYTE
byte
type.
public static final int T_BOOLEAN
boolean
type.
public static final int T_CHAR
char
type.
public static final int T_REF
getRefType()
method.
Type#getRefType();
,
Constant Field Valuespublic static final int T_ARRAY
getElemType()
method.
Additionally, the getRefType()
method can be called and
will return the special "array" class.
Type#getElemType();
,
Type#getRefType();
,
Constant Field Valuespublic static final int T_VOID
void
type.
public static final int T_FLOAT
float
type.
public static final int T_LONG
long
type.
public static final int T_DOUBLE
double
type.
public static final int T_NULL
null
type. Although this
type will not appear directly in the source code (i.e. it is not
possible to declare variables having this type), it is required
internally for the method lookup and type checking.
public static final int T_TYPE
public static final int T_CLASS
Constructor Detail |
public Type()
public Type(java.lang.String typeDescriptor)
public Type(int tag)
T_REF
or T_ARRAY
, since those tags
requires additional information (reference type and array type).
tag
- the builtin type.public Type(AClass cl)
T_REF
, and its
reference type will be set to cl
.
cl
- the class described by the resultin type. Should not be
null
.public Type(IJml2bConfiguration config, Type t) throws Jml2bException
config
- the configuration to use for loading new classes. It
is required, since calling this constructor may theorically trigger
the loading of the java.lang.Object
class.t
- the type of the elements stored within the array. This
parameter should not be null
.public Type(Type t)
The element type will be initialised later, during the linking
phase.
This constructor is called from the addDims
method.
t
- The type of the elements. Should not be null
.addDims(JmlFile, AST, Type);
public Type(JmlFile jf, antlr.collections.AST tree)
jf
- the file where the type occured.tree
- the AST corresponding to the type.Method Detail |
public static Type binaryNumericPromotion(Type t1, Type t2)
public antlr.collections.AST parse(antlr.collections.AST type_ast) throws Jml2bException
Jml2bException
public boolean equals(Type t)
public void link(IJml2bConfiguration config, LinkContext f) throws Jml2bException
link
in interface Linkable
Jml2bException
public int linkStatements(IJml2bConfiguration config, LinkContext f) throws Jml2bException
linkStatements
in interface Linkable
Jml2bException
public AClass getRefType()
getRefType
in interface IType
public Type getElemType()
T_ARRAY
.
getElemType
in interface IType
public void setBuiltin(int type_tag)
type_tag
.
type_tag
- the type to which the type should be set. It should
correspond to a primitive type.public boolean setBuiltin(java.lang.String type_name)
type_name
- the name of the type.
public boolean equals(java.lang.Object o)
public boolean isArray()
true
if the type is an array type,
false
otherwise.public boolean isBuiltin()
T_TYPE
is considered a builtin-type.
true
if the type is a builtin one,
false
otherwise.public boolean isIntegral()
public boolean isNumeric()
public boolean isRef()
public Type unaryPromote()
public boolean isBoolean()
public int getDimension()
public AClass getTargetedClass()
public int getTag()
getTag
in interface IType
public static Type createUnlinkedClass(java.lang.String fqn)
fqn
- the fully qualified name of the class.
public java.lang.String toJava()
public boolean isSubtypeOf(Type t)
this
can be converted implicitely to t
.
This method will return true
in the case where the
types are equals.
t
- the type that should be compared.
true
if the current type is a subtype of
t
, false
otherwise.public static Type getObject(IJml2bConfiguration config) throws Jml2bException
java.lang.Object
class.
config
- the configuration that should be used for loading
classes.
java.lang.Object
class.
Jml2bException
public static void clearAll()
public static Type addDims(JmlFile jmlFile, antlr.collections.AST dims_ast, Type t) throws Jml2bException
Jml2bException
public static java.lang.String signatureToString(java.util.Enumeration e)
Type
elements.
e
- the enumeration corresponding to the signature.
String
representation of the
signature.public static Type getBoolean()
boolean
builtin
type.
This method is prefered to using new Type(T_BOOLEAN)
,
since it reuses the same instance for each type, thus reducing
memory use.
boolean
builtin
type.public static Type getInteger()
int
builtin
type.
This method is prefered to using new Type(T_INT)
,
since it reuses the same instance for each type, thus reducing
memory use.
int
builtin
type.public static Type getChar()
char
builtin
type.
This method is prefered to using new Type(T_CHAR)
,
since it reuses the same instance for each type, thus reducing
memory use.
char
builtin
type.public static Type getByte()
public static Type getShort()
public static Type getType()
type
builtin
type.
This method is prefered to using new Type(T_TYPE)
,
since it reuses the same instance for each type, thus reducing
memory use.
type
builtin
type.public java.lang.String toString()
public ITranslationResult toLang(java.lang.String language) throws LanguageException
LanguageException
public void setParsedItem(ParsedItem pi)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |