英語版
このページの英語版を見る
dmd.func
関数宣言を定義する。
- 関数/デリゲートリテラル
- 関数エイリアス
- (静的/共有)コンストラクタ/デストラクタ/ポストブリッツ
- invariant
- unittest
Authors:
License:
ソースfunc.d
カバレッジ https://codecov.io/gh/dlang/dmd/src/master/src/dmd/func.d
- enum
ILS
: ubyte; - インラインステータス
uninitialized
- まだ計算されていない
no
- インライン化不可
yes
- インライン化可能
- struct
Ensure
; - 結果識別子(nullの場合あり)と文のタプル。 これはout契約を保存するために使用される:out(id){ ensure }
- static Ensures*
arraySyntaxCopy
(Ensures*a
); - Ensureの配列の構文コピーを行う。
- class
FuncDeclaration
: dmd.declaration.Declaration; -
- Statement
fbody
; - 関数本体
- FuncDeclarations
foverrides
; - この関数は、
- const(char)*
mangleString
; - mangleExact()の結果変数から作成された文字化けシンボルを上書きする
- VarDeclaration
vresult
; - out契約の結果変数
- LabelDsymbol
returnLabel
; - キャッシュに格納される
- bool[size_t]
isTypeIsolatedCache
; - 非常に高価になる可能性がある isTypeIsolated チェックのキャッシュ用
- VarDeclaration
vthis
; - 'this' パラメータ(メンバーおよびネストされたもの)
- VarDeclaration
v_arguments
; - 'arguments' パラメータ
- VarDeclaration
v_argptr
; - 'argptr' 変数
- VarDeclarations*
parameters
; - パラメータのVarDeclarationの配列
- DsymbolTable
labtab
; - 文ラベルシンボルテーブル
- Dsymbol
overnext
; - オーバーロードリストの次の
- FuncDeclaration
overnext0
; - オーバーロードリストの次の項目(IFTI の実行時のみ使用される)
- Loc
endloc
; - メンバ関数の閉じ中括弧の位置
- int
vtblIndex
; - メンバ関数、vtbl[]へのインデックス
- int
inlineNest
; - ネストされたインラインの場合、!=0
- ForeachStatement
fes
; - if foreach body の場合、これは foreach
- BaseClass*
interfaceVirtual
; - 仮想関数だが、ベースインターフェースの vtbl[] にのみ表示される
- Type
tintro
; - if !=NULL であれば、これは 「導入」関数の型 であり、これは上書きしている
- StorageClass
storage_class2
; - テンプレートのストレージクラスをオーバーライドしている。
- int
hasReturnExp
; - 1 戻り値の exp; 文がある場合 2 "スロー"文がある場合 4 "アサート(0)"がある場合 8 "インラインasm"がある場合 16 複数の"return"文がある場合
- VarDeclaration
nrvo_var
; - 隠された変数に置き換える
- Symbol*
shidden
; - 関数に渡される隠されたポインタ
- GotoStatements*
gotos
; - 前方参照を持つ分岐
- VarDeclarations*
alignSectionVars
; - アラインメントが必要なローカル変数で、スタックアラインメントよりも大きな値を持つ
- Symbol*
salignSection
; - ポインタがアラインメントセクションに存在する場合、
- BUILTIN
builtin
; - これは既知の組み込み関数であり、コンパイル時に評価できる場合、設定する
- int
tookAddressOf
; - この関数のアドレスを取得した場合に設定される
- VarDeclarations
closureVars
; - ネストした関数から参照されるこの関数のローカル変数 (これらはこの関数の「クロージャ」に格納される。)
- VarDeclarations
outerVars
; - このネストされた関数によって参照される外部変数 (closureVarsの逆数)
- FuncDeclarations
siblingCallers
; - この関数を呼び出した兄弟ネスト関数
- AttributeViolation*
safetyViolation
; - @safe の推論に失敗した場合、関数@system の診断を改善するためのエラーを保存する
- ObjcFuncDeclaration
objc
; - Objective-C 統合に必要な関数宣言用のデータ。
- final int
overrides
(FuncDeclarationfd
); - 'this' が fd をオーバーライドしているかどうかを判断する。 オーバーライドしている場合は 0 を返す。
- bool
overloadInsert
(Dsymbols
); - このFuncDeclarationを新しいfでオーバーロードする。 成功した場合、つまり競合がない場合はtrueを返す。
- final TemplateDeclaration
findTemplateDeclRoot
(); - 関数テンプレートルートをオーバーロードリストから検索する
- final bool
inUnittest
(); - 関数が直接または間接的に unittest ブロックで宣言されている場合は true を返す。
- static MATCH
leastAsSpecialized
(FuncDeclarationf
, FuncDeclarationg
, Identifiers*names
); - 関数の部分的な特殊化の順序を決定する
f
。g
。 これは、TemplateDeclaration::leastAsSpecialized()と非常に似ている。Parameters: 最初の関数FuncDeclaration f
最初の関数 FuncDeclaration g
2番目の関数 Identifiers* names
パラメータの名前 Returns:一致する 'this' は g と同じくらい少なくとも特化されている 0 g は 'this' よりも特化されている - final LabelDsymbol
searchLabel
(Identifierident
, const ref Locloc
); - 指定された識別子を持つラベルを検索する。この関数は、labtab にマッピングが含まれていない場合、LabelDsymbol を挿入する
ident
。Parameters:Identifier ident
要求されたラベルの識別子 Loc loc
新しいラベルを作成する際に使用するLabelDsymbol Returns: xml-ph-0000@deepl.internalLabelDsymbolident
- final int
getLevel
(FuncDeclarationfd
, intintypeof
); - this からネストされた関数への語彙レベルの違いを判断する
fd
。Parameters:FuncDeclaration fd
呼び出しのターゲット int intypeof
!=0 if inside typeof Returns: 0 同じレベル0 同じレベル0 ネストの数を減らす -1 ネストの数を1増やす (
fd
this の内部にネストされている LevelError エラー、this はfd
- final const(char)*
toFullSignature
(); - 例えば 'int foo(int x, int y) pure'
- final bool
isAbstract
(); - semantic()がまだ実行されていない場合でも動作するようにオーバーライドする。
- final void
initInferAttributes
(); - この関数の属性を推論するための初期化。
- final bool
setImpure
(Locloc
= Loc.init, const(char)*fmt
= null, RootObjectarg0
= null); - この関数は純粋でないことを行っているので、"pureでない"とマークする。Parameters:
Loc loc
"pureでない"動作の場所 const(char)* fmt
エラーメッセージの書式文字列。関数の種類と名前には「%s%s 」を含める必要がある。 RootObject arg0
(オプション)フォーマット文字列の引数 Returns:true 純度エラーが発生した場合 - final bool
setUnsafe
(boolgag
= false, Locloc
= Loc.init, const(char)*fmt
= null, RootObjectarg0
= null, RootObjectarg1
= null, RootObjectarg2
= null); - 関数が安全でないことを意味する場合は、それをマークする。Parameters:
bool gag
エラーメッセージを抑制する(エスケープ.dで使用される) Loc loc
エラーの発生場所 const(char)* fmt
printf 形式のフォーマット文字列 RootObject arg0
(オプション) 最初の %s フォーマット指定子用の引数 RootObject arg1
(オプション) 2番目の %s フォーマット指定子に対する引数 RootObject arg2
(オプション)3番目の %s フォーマット指定子用の引数 Returns:安全なエラーがあるかどうか - final bool
setUnsafeCall
(FuncDeclarationf
); - この関数は@system 関数を呼び出している
f
ので、安全ではないとマークする。Parameters:FuncDeclaration f
呼び出される関数(推測される関数の診断に必要) Returns: 安全なエラーがあるかどうか安全なエラーがあるかどうか - final bool
setGC
(Locloc
, const(char)*fmt
, RootObjectarg0
= null); - この関数は、GCで割り当てが発生する可能性がある処理を行っているため、 nogc(ノーハウ)ではないとマークする。Parameters: 不純な動作の場所
Loc loc
不純な動作の場所 const(char)* fmt
エラーメッセージのフォーマット文字列。関数の種類と名前については、「%s%s 」を含める必要がある。 RootObject arg0
(オプション)フォーマット文字列の引数 Returns:関数が@nogcとしてマークされている場合、つまりユーザーエラーが発生したことを意味する場合は「true」とする - final bool
setGCCall
(FuncDeclarationf
); - 関数が非@nogc 関数fを呼び出し、それをnogcではないとマークする。Parameters:
FuncDeclaration f
関数が呼び出される Returns:関数が@nogcとマークされている場合、ユーザーエラーが発生したことを意味する - final void
setThrow
(Locloc
, const(char)*fmt
, RootObjectarg0
= null); - 関数は例外をスローする可能性がある処理を行っている。nothrowが推論される場合は、例外を登録する。Parameters:
Loc loc
アクションの場所 const(char)* fmt
エラーメッセージのフォーマット文字列 RootObject arg0
(オプション)フォーマット文字列の引数 - final void
setThrowCall
(Locloc
, FuncDeclarationf
); - 関数は、nothrow 以外の関数fを呼び出す。nothrowが推論されている場合は、その旨を記録するParameters:
Loc loc
呼び出しの場所 FuncDeclaration f
呼び出される関数 - final bool
isReturnIsolated
(); - 関数のパラメータ、変更可能なグローバル変数、上位関数からのポインタが 戻り値に漏れ出していないか確認する。Returns:関数の戻り値が関数への入力から隔離されている場合は「真」
- final bool
isTypeIsolated
(Typet
);
final boolisTypeIsolated
(Typet
, ref StringTable!TypeparentTypes
); - 関数パラメータ、変更可能なグローバル変数、上位関数からのポインタが 型に漏れ込んでいないか確認する
t
。Parameters:Type t
型をチェックして、それが分離されているかどうかを確認する Returns:true ift
関数への入力から隔離されている 場合はtrueを返す - const bool
isNested
(); - 関数に静的フレームポインタが必要かどうかを判断する。Returns:true 関数が他の関数内にネストされているかどうかを判断する。
契約 isNested() が true を返した場合、関数がデュアルコンテキストポインタを必要としない限り、isThis() は false を返すべきである。
- inout inout(AggregateDeclaration)
isThis
(); - 関数が非静的メンバ関数であり、暗黙的に「this」式を持つかどうかを判断する。Returns:その集合は、メンバーであるか、nullである。
契約 isThis() および isNested() は、関数が二重コンテキストポインタを必要とする場合は true を返し、 そうでない場合は isThis() が true を返す場合は isNested() は false を返す。
- final const bool
isUnique
(); - Returns:この関数のオーバーロードが存在しない場合は true を返す
- final bool
needsClosure
(); - この関数内のすべての変数で、ネストした関数から参照されているものについて確認し、 それらの変数に対してクロージャを作成する必要があるかどうかを判断する。
- final bool
checkClosure
(); - その関数にクロージャが含まれているか確認する。 @nogcの場合は、適切なエラーを報告する。 これは、FuncDeclaration::needsClosure()とほぼ一致する。Returns:エラーが発生した場合は true を返す。
- final bool
hasNestedFrameRefs
(); - 関数の変数が、その関数内にネストされた関数によって参照されているかどうかを判断する。
- static @safe bool
needsFensure
(FuncDeclarationfd
); - 指定した関数またはそのオーバーライドのいずれかで「アウト」契約が宣言されているかどうかを判断する。Parameters:
FuncDeclaration fd
検索する関数 Returns:true 'out'契約が見つかった - final ParameterList
getParameterList
(); - Returns:関数のパラメータリスト、および それが可変長引数であるかどうかを
- static FuncDeclaration
genCfunc
(Parameters*fparams
, Typetreturn
, const(char)*name
, StorageClassstc
= 0); - ランタイムライブラリ関数の FuncDeclaration を生成する。
- final bool
checkNRVO
(); - 関数のすべての return 文をチェックし、 NRVO を使用した戻り値が可能かどうかを検証する。Returns:false 結果が隠れた参照によって返されない場合。
- int
overloadApply
(Dsymbolfstart
, scope int delegate(Dsymbol)dg
, Scope*sc
= null); - オーバーロードされた関数/テンプレートを順に調べ、dg(s) を呼び出す。 dg(s) がゼロ以外の値を返すか、それ以上呼び出せなくなったら終了する。Parameters: シンボルから開始する
Dsymbol fstart
シンボルから開始する int delegate(Dsymbol) dg
オーバーロードのコンテキストで呼び出されるデリゲートから開始する Scope* sc
コンテキストで呼び出されるデリゲートから開始する。シンボルがアクセス可能(したがって可視)であるかどうかを確認するために使用される。 nullにすることも可能である Returns:==0 継続 !=0 完了 (そして、最後の dg() 呼び出しからの戻り値) - auto
MODMatchToBuffer
(OutBuffer*buf
, ubytelhsMod
, ubyterhsMod
); - 修飾子の不一致をチェックする。
lhsMod
、rhsMod
不一致の修飾子を 表示する。buf
。不一致の修飾子のlhsMod
一致しないもの、すなわちrhsMod
、すなわち lhs(shared) vs. rhs() は "shared" と表示し、lhs() vs. rhs(shared) は "共有でない" と表示する。Parameters:OutBuffer* buf
出力バッファに書き込む ubyte lhsMod
左辺の修飾子 ubyte lhsMod
右辺の修飾子 Returns: xml-ph-0000@deepl.internalとxml-ph-0001@deepl.internalが設定されたタプルisMutable とisNotShared が設定されたタプル が、lhsMod
それらの修飾子(右辺と比較して)が欠けている場合。Examples:OutBuffer buf; auto mismatches = MODMatchToBuffer(&buf, MODFlags.shared_, 0); assert(buf[] == "`shared` "); assert(!mismatches.isNotShared); buf.setsize(0); mismatches = MODMatchToBuffer(&buf, 0, MODFlags.shared_); assert(buf[] == "non-shared "); assert(mismatches.isNotShared); buf.setsize(0); mismatches = MODMatchToBuffer(&buf, MODFlags.const_, 0); assert(buf[] == "`const` "); assert(!mismatches.isMutable); buf.setsize(0); mismatches = MODMatchToBuffer(&buf, 0, MODFlags.const_); assert(buf[] == "mutable "); assert(mismatches.isMutable);
- Type
getIndirection
(Typet
); - tから1段階間接した型を返す。
- class
FuncAliasDeclaration
: dmd.func.FuncDeclaration; - 別のスコープからこのスコープに一連の関数をインポートする方法として使用される。
- class
FuncLiteralDeclaration
: dmd.func.FuncDeclaration; - class
CtorDeclaration
: dmd.func.FuncDeclaration; - class
PostBlitDeclaration
: dmd.func.FuncDeclaration; - class
DtorDeclaration
: dmd.func.FuncDeclaration; - class
StaticCtorDeclaration
: dmd.func.FuncDeclaration; - class
SharedStaticCtorDeclaration
: dmd.func.StaticCtorDeclaration; -
- bool
standalone
; - このコンストラクタを循環依存チェックから除外する
- class
StaticDtorDeclaration
: dmd.func.FuncDeclaration; - class
SharedStaticDtorDeclaration
: dmd.func.StaticDtorDeclaration; - class
InvariantDeclaration
: dmd.func.FuncDeclaration; - class
UnitTestDeclaration
: dmd.func.FuncDeclaration; - class
NewDeclaration
: dmd.func.FuncDeclaration; - struct
AttributeViolation
; - 関数属性の推論に失敗した理由を保存する。@safe やpureのような2つのモードがある:
- 通常の安全エラー、(fmtStr, arg0, arg1) に格納される
- 属性のない関数の呼び出しは、特別なケースである。なぜなら、その場合、
AttributeViolation
。この方法では、 大きなコールスタックの場合、エラーが根本原因までたどることができる。FunctionDeclaration はarg0 に格納され、fmtStr はnull でなければならない。- Loc
loc
; - エラーの発生場所
- const(char)*
fmtStr
; - printf形式のフォーマット文字列
- RootObject
arg0
;
RootObjectarg1
;
RootObjectarg2
; - 最大2つの%s 形式指定子を含む引数
- void
errorSupplementalInferredAttr
(FuncDeclarationfd
, intmaxDepth
, booldeprecation
, STCstc
); - 推論された理由を印刷する
fd
推測された理由を@system 補足エラーとしてParameters:FuncDeclaration fd
関数として、 int maxDepth
エラーを報告する関数の深さをいくつまでチェックするかを bool deprecation
エラーの代わりに非推奨の表示を行う STC stc
属性のストレージクラスをチェックする
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.109.1
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku