All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class epp.TypeSystem

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

public class TypeSystem
extends Object
EPP プリプロセッサが持つメソッドのうち ファイル TypeSystem.java で定義されるメソッドは、 型同士の間の関係を定義します。.

注意: このクラスは、 javadoc を作るための便宜的なクラスです。 実際の EPP のソースコード中には存在しません。

plug-in は、これらのメソッドを拡張することで、 新たに導入した型と既存の型との間の関係を定義することができます。

いくつかのメソッドは、 TypeChecker から呼び出しやすいように、 クラス Type の static method としても定義されています。 例えば、メソッド isSuperType(t1, t2) は、 TypeChecker のメソッド中から Type.isSuperType(t1, t2) と書いて呼び出すことができます。 このメソッドは、実際には Ld-2 メソッドに delegation されます。

See Also:
Type

Constructor Index

 o TypeSystem()

Method Index

 o argumentListToSignatureString(Tree)
argumentList の各 actural parameter の型を1つの文字列にします。.
 o checkVariableDeclaratorId(Type, Tree, Tree[])
 o coerce(Type, Tree)
引数の tree の型が、型 type として使用可能かをチェックし、 tree を返します。.
 o coerceArgumentList(Tree, MethodInfo)
argumentList が持つ各 actural parameter を、 selectedMethod が期待する型に、 coerce します。.
 o confirmArgs(MethodInfo, Tree)
method が、 argumentList に適合するなら true 、そうでないなら false を返します。.
 o confirmType(Type, Tree)
引数 type が引数 tree で表される式の型の super type かどうかチェックします。.
 o doesImplement(ClassInfo, ClassInfo)
info1 が info2 によって implement されているなら true 、 そうでないなら false を返します。.
 o equals(Type, Type)
t1 が t2 と同じ型ならば true 、そうでないなら false を 返します。.
 o isAncestor(ClassInfo, ClassInfo)
info1 が info2 の super class ならば true 、 そうでないなら false を返します。.
 o isSuperType(Type, Type)
t1 が t2 の super type ならば true 、 そうでないなら false を返します。.
 o moreSpecificMethod(MethodInfo, MethodInfo)
Returns true iff m1 is more specific than m2.
 o selectField(Type, Symbol)
targetType が fieldName という名前のフィールドを持っていればそれを 返します。.
 o selectMostSpecificMethod(String, MethodInfo[], Tree)
methods の中から、引数 argumentList で表される引数に適合し、 なおかつ最も特定的なメソッドを1つ選んで返します。.
 o typeCheckAndSelectMethod(Type, Symbol, Tree)
argumentList を型チェックして、呼び出すべきメソッドを選択します。.
 o typeCheckBlockStatement(Tree, int, Tree[], TreeVec)
 o typeCheckBlockStatements(int, Tree[], TreeVec)
args の i 番目以降の tree を型チェックし、 結果を newArgs に入れます。.
 o typeCheckVariableDeclarator(Tree, int, Tree[], TreeVec, Tree, Tree, Tree, int, Tree[], TreeVec)
 o typeCheckVariableDeclarators(int, Tree[], TreeVec, Tree, Tree, Tree, int, Tree[], TreeVec)

Constructors

 o TypeSystem
 public TypeSystem()

Methods

 o equals
 public boolean equals(Type t1,
                       Type t2)
t1 が t2 と同じ型ならば true 、そうでないなら false を 返します。.

このメソッドは、クラス Type の static method から delegation されます。

 o confirmType
 public void confirmType(Type type,
                         Tree tree)
引数 type が引数 tree で表される式の型の super type かどうかチェックします。. もしそうなら、何もしません。 super type でないなら、 EppUserError が throw されます。

 o isSuperType
 public boolean isSuperType(Type t1,
                            Type t2)
t1 が t2 の super type ならば true 、 そうでないなら false を返します。. より正確には、以下のようになります。

Return true iff t1 is a super type or same type of t2.
If t1 is "unknown extended type", it is fatal error.
Otherwise, if t2 is "unknown extended type", false will be returned.

このメソッドは、クラス Type の static method から delegation されます。

 o isAncestor
 public boolean isAncestor(ClassInfo info1,
                           ClassInfo info2)
info1 が info2 の super class ならば true 、 そうでないなら false を返します。. より正確には、以下のようになります。

Return true iff info1 and info2 has the same name
or a class info1 is an ancestor of class info2.

info1 と info2 は共に class を表す ClassInfo でなければなりません。 (どちらかが interface を表す ClassInfo であった場合の動作は未定義です。)

 o doesImplement
 public boolean doesImplement(ClassInfo info1,
                              ClassInfo info2)
info1 が info2 によって implement されているなら true 、 そうでないなら false を返します。. info1 は、 interface を表す ClassInfo でなければなりません。 info2 は、 interface でも class でもかまいません。 より正確には、以下のようになります。

Return true iff info1 and info2 has the same name
or a interface info1 is implemented by a class info2
or a interface info1 is extended by a interface info2 .

 o coerce
 public Tree coerce(Type type,
                    Tree tree)
引数の tree の型が、型 type として使用可能かをチェックし、 tree を返します。. 使用不可能な場合は、 EppUserError を throw します。 普通、 tree は変更されずにそのまま返されます。

plug-in はこのメソッドを拡張することで、 標準の Java にない「暗黙の型変換」を実装することができます。

このメソッドは、クラス Type の static method から delegation されます。

 o selectField
 public FieldInfo selectField(Type targetType,
                              Symbol fieldName)
targetType が fieldName という名前のフィールドを持っていればそれを 返します。. 持っていなければ、 EppUserError が throw されます。

このメソッドは、クラス Type の static method から delegation されます。

 o typeCheckAndSelectMethod
 public Object[] typeCheckAndSelectMethod(Type targetType,
                                          Symbol methodName,
                                          Tree argumentList)
argumentList を型チェックして、呼び出すべきメソッドを選択します。. このメソッドは、2つの値を返します。 1つめは、選択されたメソッドで、その型は MethodInfo です。 2つめは、型チェックずみの argumentList で、その型は Tree です。

このメソッドは、クラス Type の static method から delegation されます。

 o selectMostSpecificMethod
 public MethodInfo selectMostSpecificMethod(String methodName,
                                            MethodInfo methods[],
                                            Tree argumentList)
methods の中から、引数 argumentList で表される引数に適合し、 なおかつ最も特定的なメソッドを1つ選んで返します。. そのようなメソッドが見つからない場合は、 EppUserError を throw します。引数 methodName は、エラーメッセージ中で使われます。

 o confirmArgs
 public boolean confirmArgs(MethodInfo method,
                            Tree argumentList)
method が、 argumentList に適合するなら true 、そうでないなら false を返します。.

 o moreSpecificMethod
 public boolean moreSpecificMethod(MethodInfo m1,
                                   MethodInfo m2)
Returns true iff m1 is more specific than m2.

 o coerceArgumentList
 public Tree coerceArgumentList(Tree argumentList,
                                MethodInfo selectedMethod)
argumentList が持つ各 actural parameter を、 selectedMethod が期待する型に、 coerce します。.

See Also:
coerce
 o argumentListToSignatureString
 public String argumentListToSignatureString(Tree argumentList)
argumentList の各 actural parameter の型を1つの文字列にします。. このメソッドは、エラーメッセージを作る時に selectMostSpecificMethod から呼び出されます。

See Also:
selectMostSpecificMethod
 o typeCheckBlockStatements
 public void typeCheckBlockStatements(int i,
                                      Tree args[],
                                      TreeVec newArgs)
args の i 番目以降の tree を型チェックし、 結果を newArgs に入れます。. このメソッドは、 block を型チェックする時などに呼び出されます。

このメソッドは、クラス Type の static method から delegation されます。

 o typeCheckBlockStatement
 public void typeCheckBlockStatement(Tree tree,
                                     int i,
                                     Tree args[],
                                     TreeVec newArgs)
 o typeCheckVariableDeclarators
 public void typeCheckVariableDeclarators(int vi,
                                          Tree vardecls[],
                                          TreeVec newVardecls,
                                          Tree declTree,
                                          Tree modifiers,
                                          Tree typeTree,
                                          int i,
                                          Tree args[],
                                          TreeVec newArgs)
 o typeCheckVariableDeclarator
 public void typeCheckVariableDeclarator(Tree tree,
                                         int vi,
                                         Tree vardecls[],
                                         TreeVec newVardecls,
                                         Tree declTree,
                                         Tree modifiers,
                                         Tree typeTree,
                                         int i,
                                         Tree args[],
                                         TreeVec newArgs)
 o checkVariableDeclaratorId
 public Tree checkVariableDeclaratorId(Type type,
                                       Tree tree,
                                       Tree declaredVars[])

All Packages  Class Hierarchy  This Package  Previous  Next  Index