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
-
TypeSystem()
-
-
argumentListToSignatureString(Tree)
- argumentList の各 actural parameter の型を1つの文字列にします。.
-
checkVariableDeclaratorId(Type, Tree, Tree[])
-
-
coerce(Type, Tree)
- 引数の tree の型が、型 type として使用可能かをチェックし、
tree を返します。.
-
coerceArgumentList(Tree, MethodInfo)
- argumentList が持つ各 actural parameter を、
selectedMethod が期待する型に、 coerce します。.
-
confirmArgs(MethodInfo, Tree)
- method が、 argumentList に適合するなら true 、そうでないなら
false を返します。.
-
confirmType(Type, Tree)
- 引数 type が引数 tree で表される式の型の super type かどうかチェックします。.
-
doesImplement(ClassInfo, ClassInfo)
- info1 が info2 によって implement されているなら true 、
そうでないなら false を返します。.
-
equals(Type, Type)
- t1 が t2 と同じ型ならば true 、そうでないなら false を
返します。.
-
isAncestor(ClassInfo, ClassInfo)
- info1 が info2 の super class ならば true 、
そうでないなら false を返します。.
-
isSuperType(Type, Type)
- t1 が t2 の super type ならば true 、
そうでないなら false を返します。.
-
moreSpecificMethod(MethodInfo, MethodInfo)
- Returns true iff m1 is more specific than m2.
-
selectField(Type, Symbol)
- targetType が fieldName という名前のフィールドを持っていればそれを
返します。.
-
selectMostSpecificMethod(String, MethodInfo[], Tree)
- methods の中から、引数 argumentList で表される引数に適合し、
なおかつ最も特定的なメソッドを1つ選んで返します。.
-
typeCheckAndSelectMethod(Type, Symbol, Tree)
- argumentList を型チェックして、呼び出すべきメソッドを選択します。.
-
typeCheckBlockStatement(Tree, int, Tree[], TreeVec)
-
-
typeCheckBlockStatements(int, Tree[], TreeVec)
- args の i 番目以降の tree を型チェックし、
結果を newArgs に入れます。.
-
typeCheckVariableDeclarator(Tree, int, Tree[], TreeVec, Tree, Tree, Tree, int, Tree[], TreeVec)
-
-
typeCheckVariableDeclarators(int, Tree[], TreeVec, Tree, Tree, Tree, int, Tree[], TreeVec)
-
TypeSystem
public TypeSystem()
equals
public boolean equals(Type t1,
Type t2)
- t1 が t2 と同じ型ならば true 、そうでないなら false を
返します。.
このメソッドは、クラス Type の static method から
delegation されます。
confirmType
public void confirmType(Type type,
Tree tree)
- 引数 type が引数 tree で表される式の型の super type かどうかチェックします。.
もしそうなら、何もしません。
super type でないなら、 EppUserError が throw されます。
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 されます。
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 であった場合の動作は未定義です。)
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 .
coerce
public Tree coerce(Type type,
Tree tree)
- 引数の tree の型が、型 type として使用可能かをチェックし、
tree を返します。.
使用不可能な場合は、 EppUserError を throw します。
普通、 tree は変更されずにそのまま返されます。
plug-in はこのメソッドを拡張することで、
標準の Java にない「暗黙の型変換」を実装することができます。
このメソッドは、クラス Type の static method から
delegation されます。
selectField
public FieldInfo selectField(Type targetType,
Symbol fieldName)
- targetType が fieldName という名前のフィールドを持っていればそれを
返します。.
持っていなければ、 EppUserError が throw されます。
このメソッドは、クラス Type の static method から
delegation されます。
typeCheckAndSelectMethod
public Object[] typeCheckAndSelectMethod(Type targetType,
Symbol methodName,
Tree argumentList)
- argumentList を型チェックして、呼び出すべきメソッドを選択します。.
このメソッドは、2つの値を返します。
1つめは、選択されたメソッドで、その型は MethodInfo です。
2つめは、型チェックずみの argumentList で、その型は Tree です。
このメソッドは、クラス Type の static method から
delegation されます。
selectMostSpecificMethod
public MethodInfo selectMostSpecificMethod(String methodName,
MethodInfo methods[],
Tree argumentList)
- methods の中から、引数 argumentList で表される引数に適合し、
なおかつ最も特定的なメソッドを1つ選んで返します。.
そのようなメソッドが見つからない場合は、 EppUserError を throw
します。引数 methodName は、エラーメッセージ中で使われます。
confirmArgs
public boolean confirmArgs(MethodInfo method,
Tree argumentList)
- method が、 argumentList に適合するなら true 、そうでないなら
false を返します。.
moreSpecificMethod
public boolean moreSpecificMethod(MethodInfo m1,
MethodInfo m2)
- Returns true iff m1 is more specific than m2.
coerceArgumentList
public Tree coerceArgumentList(Tree argumentList,
MethodInfo selectedMethod)
- argumentList が持つ各 actural parameter を、
selectedMethod が期待する型に、 coerce します。.
- See Also:
- coerce
argumentListToSignatureString
public String argumentListToSignatureString(Tree argumentList)
- argumentList の各 actural parameter の型を1つの文字列にします。.
このメソッドは、エラーメッセージを作る時に
selectMostSpecificMethod から呼び出されます。
- See Also:
- selectMostSpecificMethod
typeCheckBlockStatements
public void typeCheckBlockStatements(int i,
Tree args[],
TreeVec newArgs)
- args の i 番目以降の tree を型チェックし、
結果を newArgs に入れます。.
このメソッドは、 block を型チェックする時などに呼び出されます。
このメソッドは、クラス Type の static method から
delegation されます。
typeCheckBlockStatement
public void typeCheckBlockStatement(Tree tree,
int i,
Tree args[],
TreeVec newArgs)
typeCheckVariableDeclarators
public void typeCheckVariableDeclarators(int vi,
Tree vardecls[],
TreeVec newVardecls,
Tree declTree,
Tree modifiers,
Tree typeTree,
int i,
Tree args[],
TreeVec newArgs)
typeCheckVariableDeclarator
public void typeCheckVariableDeclarator(Tree tree,
int vi,
Tree vardecls[],
TreeVec newVardecls,
Tree declTree,
Tree modifiers,
Tree typeTree,
int i,
Tree args[],
TreeVec newArgs)
checkVariableDeclaratorId
public Tree checkVariableDeclaratorId(Type type,
Tree tree,
Tree declaredVars[])
All Packages Class Hierarchy This Package Previous Next Index