minijava.typecheck
Class Type
java.lang.Object
minijava.typecheck.Type
- All Implemented Interfaces:
- Binding
- Direct Known Subclasses:
- Bool, Class, Int, IntArray
public abstract class Type
- extends java.lang.Object
- implements Binding
This is an abstract class that represents a type. In MiniJava,
this can either be integer (int
), integer array (int[]
),
boolean
, or custom class type.
- Author:
- Santoso Wijaya
- See Also:
Int
,
IntArray
,
Bool
,
Class
Constructor Summary |
protected |
Type(java.lang.String name)
|
Method Summary |
abstract boolean |
agrees(Type rhs)
Checks whether this Type "agrees" with the given argument. |
boolean |
equals(java.lang.Object t)
|
java.lang.String |
getTypeName()
|
int |
hashCode()
|
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Type
protected Type(java.lang.String name)
getTypeName
public java.lang.String getTypeName()
toString
public java.lang.String toString()
- Overrides:
toString
in class java.lang.Object
equals
public boolean equals(java.lang.Object t)
- Overrides:
equals
in class java.lang.Object
hashCode
public int hashCode()
- Overrides:
hashCode
in class java.lang.Object
agrees
public abstract boolean agrees(Type rhs)
- Checks whether this
Type
"agrees" with the given argument.
Two types are agreeable if they are equal primitives or, if they
are class types, rhs
is a subclass/subtype of this type.
- Parameters:
rhs
- the right hand side in the equivalence test
- Returns:
true
if type(this) == type(rhs)
, or ig
type(this) == supertype(rhs)
, and
false
otherwise