英語版
このページの英語版を見る

dmd.dcast

キャスト式の意味解析。
Authors:

出典 dcast.d

Expression implicitCastTo(Expression e, Scope* sc, Type t);
式を暗黙的に型にキャストしようとする t.
このルーチンは e.マッチング・レベルをチェックする、 implicitConvTo を使用する。
Parameters:
Expression e キャストされる式
Scope* sc 現在のスコープ
Type t 期待される結果の型
Returns:
結果としてキャストされる式(変異する e)、あるいはErrorExp 暗黙の変換が不可能な場合。
MATCH implicitConvTo(Expression e, Type t);
式を型に暗黙的に変換できるかどうかをチェックする。 型に変換できるかどうかをチェックする。 t.
implicitCastTo とは異なり、このルーチンは実際のキャストを行わない、 MATCH レベルまでの変換が可能かどうかをチェックするだけである。
Parameters:
Expression e キャストされる式
Type t 期待される結果の型
Returns:
MATCHe.typet.
MATCH cimplicitConvTo(Expression e, Type t);
implicitConvTo()と同じである。 Dよりもかなり寛容である。 C11 6.3および6.5.16.1。
Parameters:
Expression e キャストされる式
Type t 期待される結果の型
Returns:
MATCHe.typet.
Type toStaticArrayType(SliceExp e);
Expression castTo(Expression e, Scope* sc, Type t, Type att = null);
明示的にキャストする。 式が間接表現を持たないと仮定する。 e式は間接表現を持たないと仮定する。 (パラメータ'att'は、'alias this'の再帰を止めるために使われる)。
Expression inferType(Expression e, Type t, int flag = 0);
型推論の対象を設定する。 t ターゲット型 フラグ1:推論に失敗してもエラーを表示しない。
Expression scaleFactor(BinExp be, Scope* sc);
ポインタとの加減算をスケールする。
Type typeMerge(Scope* sc, EXP op, ref Expression pe1, ref Expression pe2);
e1e2 の型を共通のサブセットにマージする。
パラメータe1e2 は、必要に応じてその場で書き換える。
Parameters:
Scope* sc 現在のスコープ
EXP op 以下のような演算子 e1 op e2.実際には、EXP.question または二項演算子のいずれかである。
Expression pe1 演算のLHSは、次のように書き換えられる。
Expression pe2 演算の右辺は次のように書き換えられる。
Returns:
成功の場合は結果の型、エラーの場合はnull
Expression typeCombine(BinExp be, Scope* sc);
葉を共通の型にする。
Returns:
成功の場合はnull、エラーの場合はErrorExpを返す。
Expression integralPromotions(Expression e, Scope* sc);
積分プロモーション(convertchk)を行う。 を変換しない。
void fix16997(Scope* sc, UnaExp ue);
これは、単項 + - ~ の非プロモーション動作から、Cのような積分プロモーション動作への移行を提供する。 の非プロモーション動作からCのような積分プロモーション動作への移行を提供する。
Parameters:
Scope* sc コンテキスト
UnaExp ue NegExp、UAddExp、またはComExpをルールに従って修正する。
bool arrayTypeCompatibleWithoutCasting(Type t1, Type t2);
両方の型がキャストなしで等価比較できる配列であるかどうかを確認する。 であるかどうかを調べる。等しい場合は真を返す。 これは、イミュータブルな配列とミュータブルな配列の比較を可能にするためである。 配列と変更可能な配列を比較できるようにするためである。
@trusted IntRange getIntRange(Expression e);
Expression specialNoreturnCast(Expression toBeCasted, Type to);
noreturn型の式を他の型に "キャスト"するヘルパー関数。 noreturnは暗黙のうちに他の型に変換可能である。 しかし、dmdバックエンドはnoreturn式からの素朴なキャストを好まない。 (特にassert(0))を嫌うので、この関数は生成する:
(assert(0), value) の代わりに cast(to)(assert(0)).
value 現在のところ to.initになっているが、読み取ることができないので、もっとシンプルにできるだろう。
Parameters:
Expression toBeCasted キャストするnoreturn型の式
Type to 式をキャストする型。
Returns:
CommaExp。失敗するとErrorExpが返される。