英語版
このページの英語版を見る
dmd.typesem
D型の意味解析。
Authors:
License:
出典 typesem.d
- bool
isCopyable
(Typet
); - t 型がコピー可能かどうかを判定する。Parameters:
Type t
チェックする型 Returns:コピー可能なら真 - int
mutabilityOfType
(boolisref
, Typet
); - (ref)tの間接法の変更可能性を判断する。Returns:型に変更可能な間接表現がある場合は0を返す。 すべての間接関数が不変の場合、2を返す。 そうでない場合、const/inout間接関数を持つ型は1を返す。Parameters:
bool isref
真ならば ref t
そうでなければt
Type t
をチェックする。 - void
purityLevel
(TypeFunctiontypeFunction
); - typeFunction'の'purity'フィールドを設定する。 パラメータ型が前方参照される可能性があるため、このようなことは怠ること。
- Expression
typeToExpression
(Typet
); - 我々は間違って
t
を型として解析してしまった。 やり直すt
型修飾子がない場合のみ、式としてやり直す。Parameters:Type t
誤った型 Returns:tはExpressionとしてやり直される。 - bool
checkComplexTransition
(Typetype
, const ref Locloc
, Scope*sc
); - https://issues.dlang.org/show_bug.cgi?id=14488 最も内側の基本型が複素数か虚数かをチェックする。 トランジショナル・メッセージを出すように設定されている場合のみ、警告を出すようにする。Parameters:
Type type
チェックする型 Loc loc
ソースの位置。 Scope* sc
型のスコープ。 - MATCH
callMatch
(TypeFunctiontf
, Typetthis
, ArgumentListargumentList
, intflag
= 0, void delegate(const(char)*) scopeerrorHelper
= null, Scope*sc
= null); - args "が"tf"関数型にマッチしている。 マッチレベルを決定する。Parameters:
TypeFunction tf
関数型 Type tthis
this ポインタの型、メンバ関数でない場合はNULL。 ArgumentList argumentList
関数呼び出しの引数。 int flag
1: 部分的な順序照合を行う void delegate(const(char)*) scope errorHelper
エラーメッセージのために呼び出されるデリゲート Scope* sc
コンテキスト Returns:MATCHxxxx - bool
hasPointers
(Typet
); - 型がコレクションサイクル中にGCによってスキャンされる必要があるポインタを持つ場合、!=0を返す。 を返す。
- Type
typeSemantic
(Typetype
, const ref Locloc
, Scope*sc
); - 型のセマンティック解析を行う。Parameters:
Type type
型ASTノード Loc loc
型の位置。 Scope* sc
コンテキスト Returns:Type 意味解析が完了した状態で、 。 に遭遇した場合Terror - Type
merge
(Typetype
); - と同一の型が
type
と同じ型がtype
.stringtableにある場合は を返す。そうでなければ、それをtype
.stringtable. いくつかの型はマージされず、そのまま返される。Parameters:Type type
既存の型と照合する型 Returns:マージされた型 - Type
merge2
(Typetype
); - このバージョンは、デコがすでに計算されていてもマージを行う。 デコを持つがマージされない型に必要である。
- Expression
getProperty
(Typet
, Scope*scope_
, const ref Locloc
, Identifierident
, intflag
, Expressionsrc
= null); - 型だけが必要な組み込みプロパティを計算する。Parameters:
Type t
プロパティが計算される"@型 Scope* scope_
プロパティがアクセスされるスコープ。可視性のチェックにのみ使用される。 Loc loc
プロパティが出現する場所。 Identifier ident
プロパティの識別子。 int flag
flag & 1の場合、"not a property"エラーは報告せず、単にNULLを返す。 Expression src
"型"の式。 t
またはNULLを返す。Returns:プロパティを表す式、またはプロパティでない場合はNULLを返す。 - void
resolve
(Typemt
, const ref Locloc
, Scope*sc
, out Expressionpe
, out Typept
, out Dsymbolps
, boolintypeid
= false); - 型'mt'を型、シンボル、式のいずれかに解決する。 エラーが発生した場合は、Type.terrorに解決する。Parameters:
Type mt
解決される型 Loc loc
型に遭遇した場所 Scope* sc
型のスコープ Expression pe
がセットされる。 Type pt
がセットされる。 Dsymbol ps
tがシンボルの場合に設定される bool intypeid
型idの場合はtrueがセットされる。 - Expression
dotExp
(Typemt
, Scope*sc
, Expressione
, Identifierident
, DotExpFlagflag
); - この型はe.typeと同じである。Parameters:
Type mt
ドット式が使われる型である。 Scope* sc
スコープのインスタンス化 Expression e
変換する式 Identifier ident
使用される識別子 DotExpFlag flag
DotExpFlagビットフラグ Returns:e.identが解決された結果の式 - Expression
defaultInit
(Typemt
, const ref Locloc
, const boolisCfile
= false); - 型のデフォルトの初期化式を取得する。Parameters:
Type mt
init式が返される型。 Loc loc
式が評価される必要がある場所。 bool isCfile
デフォルトの初期化子は、Cとは異なる Returns:型の初期化式。 - Type
addStorageClass
(Typetype
, StorageClassstc
); - 型にストレージクラス修飾子を追加する。
- Type
getComplexLibraryType
(const ref Locloc
, Scope*sc
, TYty
); - core.stdc.configから複合型を取り出す。Parameters:
Loc loc
エラーメッセージ用 Scope* sc
コンテキスト TY ty
複合型または虚数型 Returns:Complex!float、Complex!double、Complex!real、またはエラーの場合はnullを指定する。 - Covariant
covariant
(Typesrc
, Typet
, StorageClass*pstc
= null, boolcppCovariant
= false); - 共変数とは、'src'が't'を代替できることを意味する、 すなわち、純粋な関数は純粋でない関数にマッチする。Parameters:
Type src
ソース型 Type t
型'src'が共変である。 StorageClass* pstc
もしnullでなければ、STCxxxxを格納する。 bool cppCovariant
extern(C++)関数型がC++の共変ルールに従う必要がある場合はtrueを指定する。 Returns:Covariant.yes 、または共変でない理由のいずれかの列挙型値。 - StorageClass
parameterStorageClass
(TypeFunctiontf
, Typetthis
, Parameterp
, VarDeclarations*outerVars
= null, boolindirect
= false); - p.に指定されたストレージ・クラスを取る、 に指定されたストレージ・クラスを取り、関数のシグネチャを使用して、次のように推測する。 STC.scope_とSTC.return_がORされるべきかどうかを推測する。 (これは名前のマングリングには影響しない)。Parameters:
TypeFunction tf
シグネチャを取得するために使用するTypeFunction Type tthis
this "型"。パラメータがない場合はNULLとなる。 Parameter p
この関数のパラメータ。 VarDeclarations* outerVars
もしあれば、pがエスケープできるコンテキスト変数 bool indirect
これは間接関数呼び出しか仮想関数呼び出しか? Returns:STC.scope_またはSTC.return_がORされたストレージクラス。 - Type
constOf
(Typetype
); - const'に変換する。
- Type
immutableOf
(Typetype
); - immutable'に変換する。
- Type
mutableOf
(Typetype
); - 型を "変更可能"にする。
- Type
unSharedOf
(Typetype
); - 型を非共有にする。 0 => 0 const => const immutable(不変) => immutable(不変 共有 => 0 共有 const => const wild => wild ワイルドコンスト => ワイルドコンスト 共有ワイルド => ワイルド 共有野生 const => 野生 const
- Type
wildOf
(Typetype
); - wild'に変換する。
- Type
toHeadMutable
(const Typet
); - 最上位が変更可能な型を返す。Parameters:
Type t
トップレベルが変更可能な型を返す。 Returns:トップ・レベルが変更可能な型のバージョン - Type
castMod
(Typetype
, MODmod
); - MODxxxxビットを既存の型に適用する。
- Type
addMod
(Typetype
, MODmod
); - 既存の型にMODxxxxビットを追加する。 置き換えるのではなく、追加する。 を追加する。
- bool
isRecursiveAliasThis
(ref Typeatt
, Typet
); - もし't'が再帰的な'alias this'型であれば、'att'をチェックして設定する。この目的は、alias thisチェーンにサイクルがある場合に、無限ループを防ぐことである。 複数のalias this は存在しないので、チェーンはリーフで終わる、 あるいは、ある時点でループして戻ってくる。
例: s0 -> (s1 -> s2 -> s3 -> s1)
S0 は再帰的エイリアス this ではないので、これはfalse を返し、S1 への書き換えを試すことができる。 S1 は再帰的エイリアス this 型である。att
はnull に初期化される、 はまだfalse を返すが、att1 はS1 に設定される。 S2 とS3 への書き換えは試せるが、S1 への書き換えをもう一度試したいと思ったとき、次のことに気づく、 ということに気づく。att
==t
ループの最初に戻り、true が返される。Parameters:Type att
再帰を検出するための型参照。null に初期化する必要がある。 Type t
このエイリアスの'型'を書き換える。 Returns:false 書き換えが安全であれば、 。true
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku