pub struct Function {
pub name: Option<String>,
pub arguments: Vec<FunctionArgument>,
pub result: Option<FunctionResult>,
pub local_variables: Arena<LocalVariable>,
pub expressions: Arena<Expression>,
pub named_expressions: FastIndexMap<Handle<Expression>, String>,
pub body: Block,
pub diagnostic_filter_leaf: Option<Handle<DiagnosticFilterNode>>,
}
Expand description
A function defined in the module.
Fields§
§name: Option<String>
Name of the function, if any.
arguments: Vec<FunctionArgument>
Information about function argument.
result: Option<FunctionResult>
The result of this function, if any.
local_variables: Arena<LocalVariable>
Local variables defined and used in the function.
expressions: Arena<Expression>
Expressions used inside this function.
If an Expression
is in this arena, then its subexpressions are in this
arena too. In other words, every Handle<Expression>
in this arena
refers to an Expression
in this arena too. The only way this arena
can refer to Module::global_expressions
is indirectly, via
Constant
and Override
expressions, which hold handles for their
respective types.
An Expression
must occur before all other Expression
s that use
its value.
named_expressions: FastIndexMap<Handle<Expression>, String>
Map of expressions that have associated variable names
body: Block
Block of instructions comprising the body of the function.
diagnostic_filter_leaf: Option<Handle<DiagnosticFilterNode>>
The leaf of all diagnostic filter rules tree (stored in Module::diagnostic_filters
)
parsed on this function.
In WGSL, this corresponds to @diagnostic(…)
attributes.
See DiagnosticFilterNode
for details on how the tree is represented and used in
validation.
Implementations§
source§impl Function
impl Function
sourcepub fn originating_global(
&self,
pointer: Handle<Expression>,
) -> Option<Handle<GlobalVariable>>
pub fn originating_global( &self, pointer: Handle<Expression>, ) -> Option<Handle<GlobalVariable>>
Return the global variable being accessed by the expression pointer
.
Assuming that pointer
is a series of Access
and AccessIndex
expressions that ultimately access some part of a GlobalVariable
,
return a handle for that global.
If the expression does not ultimately access a global variable, return
None
.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Function
impl RefUnwindSafe for Function
impl Send for Function
impl Sync for Function
impl Unpin for Function
impl UnwindSafe for Function
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)