All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class epp.Type

java.lang.Object
   |
   +----epp.Type

public abstract class Type
extends Object
implements Cloneable
クラス Type は、抽象構文木のノードに付けられる型情報です。.

型チェックパスにおいて、TypeChecker が Tree の各ノードを 型情報付きの Tree に変換します。 型情報付きの Tree からは、 tree.type() というメソッドで 型情報を取得できます。

type.tag() というメソッド呼び出しで、型の種類を得ることができます。 標準の Java の型を表す型のタグには、以下のものがあります。

:void, :char, :byte, :short, :int, :long, :float, :double, :boolean,
:null
:class
:arrayOf
これらの型は、クラス Type のサブクラス、 PrimitiveType, NullType, ClassType, ArrayType で表現されます。 ClassType, ArrayType の内部にアクセスする方法については、 それぞれのクラスの説明を参照して下さい。 PrimitiveType, NullType は、内部構造を持ちません。

plug-in は、クラス Type のサブクラスを定義し、新たな tag を持たせることで、 Java 言語に新たな型を導入することができます。 しかし、新たな primitive 型を追加することはできません。

クラス Type は、型を表現するために必要な情報を保持するだけで、 「型の意味」は一切定義しません。 型の意味は、 TypeSystem を定義するメソッド群や、 TypeChecker オブジェクトに よって定義されます。

この javadoc には含まれていませんが、 組み込み型のインスタンスを保持する以下の static variable が定義されています。

Type.Tnull
Type.Tvoid
Type.Tchar
Type.Tbyte
Type.Tshort
Type.Tint
Type.Tlong
Type.Tfloat
Type.Tdouble
Type.Tboolean
Type.TString	// java.lang.String
Type.TObject	// java.lang.Object
Type.TClass	// java.lang.Class

See Also:
type, PrimitiveType, ClassType, ArrayType, NullType, TypeSystem, TypeCheck, TypeChecker

Constructor Index

 o Type(Symbol)

Method Index

 o classInfo()
この型がもし :class 型ならば、 ClassInfo を返します。.
 o coerce(Type, Tree)
 o epp()
 o equals(Type, Type)
 o isPrimitiveType()
この型が primitive 型ならば true 、そうでないなら false を返します。.
 o isSuperType(Type, Type)
 o print()
Opts.out に、人間に見やすいように中身を出力するデバッグ用メソッドです。.
 o selectField(Type, Symbol)
 o tag()
この型のタグを返します。.
 o toTree()
この型をプログラム中で表現する tree を返します。.
 o typeCheckAndSelectMethod(Type, Symbol, Tree)
 o typeCheckBlockStatements(int, Tree[], TreeVec)

Constructors

 o Type
 public Type(Symbol tag)

Methods

 o epp
 public static Obj epp()
 o equals
 public static boolean equals(Type type1,
                              Type type2)
See Also:
equals
 o isSuperType
 public static boolean isSuperType(Type type1,
                                   Type type2)
See Also:
isSuperType
 o coerce
 public static Tree coerce(Type type,
                           Tree tree)
See Also:
coerce
 o selectField
 public static FieldInfo selectField(Type targetType,
                                     Symbol fieldName)
See Also:
selectField
 o typeCheckAndSelectMethod
 public static Object[] typeCheckAndSelectMethod(Type targetType,
                                                 Symbol methodName,
                                                 Tree argumentList)
See Also:
typeCheckAndSelectMethod
 o typeCheckBlockStatements
 public static void typeCheckBlockStatements(int i,
                                             Tree args[],
                                             TreeVec newArgs)
See Also:
typeCheckBlockStatements
 o isPrimitiveType
 public boolean isPrimitiveType()
この型が primitive 型ならば true 、そうでないなら false を返します。. primitive 型は、 :void, :char, :byte, :short, :int, :long, :float, :double, :boolean です。 (void は The Java Language Specification では型ではありませんが、 EPP では便宜的に primitive 型として扱います。)

:null, :class, :arrayOf は primitive 型ではありません。

See Also:
PrimitiveType
 o tag
 public Symbol tag()
この型のタグを返します。.

 o classInfo
 public ClassInfo classInfo()
この型がもし :class 型ならば、 ClassInfo を返します。. :class 型でないなら、 fatal error です。

See Also:
ClassType, ClassInfo
 o toTree
 public abstract Tree toTree()
この型をプログラム中で表現する tree を返します。. プログラム中で表現不可能な型(例えば null 型)に対してこのメソッドが 呼ばれたら、 EppUserError を throw します。

 o print
 public Type print()
Opts.out に、人間に見やすいように中身を出力するデバッグ用メソッドです。. このメソッドは返値として、自分自身を返します。


All Packages  Class Hierarchy  This Package  Previous  Next  Index