Skip to content

Commit 565e952

Browse files
committed
Deploying to master from @ gfx-rs/wgpu@90859b4 🚀
1 parent 74b22cc commit 565e952

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

doc/naga/enum.AtomicFunction.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<a href="enum.Expression.html#variant.Load" title="variant naga::Expression::Load"><code>Expression::Load</code></a> and <a href="enum.Statement.html#variant.Store" title="variant naga::Statement::Store"><code>Statement::Store</code></a>.</p>
1616
<p>All <code>Handle&lt;Expression&gt;</code> values here refer to an expression in
1717
<a href="struct.Function.html#structfield.expressions" title="field naga::Function::expressions"><code>Function::expressions</code></a>.</p>
18-
</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Add" class="variant"><a href="#variant.Add" class="anchor">§</a><h3 class="code-header">Add</h3></section><section id="variant.Subtract" class="variant"><a href="#variant.Subtract" class="anchor">§</a><h3 class="code-header">Subtract</h3></section><section id="variant.And" class="variant"><a href="#variant.And" class="anchor">§</a><h3 class="code-header">And</h3></section><section id="variant.ExclusiveOr" class="variant"><a href="#variant.ExclusiveOr" class="anchor">§</a><h3 class="code-header">ExclusiveOr</h3></section><section id="variant.InclusiveOr" class="variant"><a href="#variant.InclusiveOr" class="anchor">§</a><h3 class="code-header">InclusiveOr</h3></section><section id="variant.Min" class="variant"><a href="#variant.Min" class="anchor">§</a><h3 class="code-header">Min</h3></section><section id="variant.Max" class="variant"><a href="#variant.Max" class="anchor">§</a><h3 class="code-header">Max</h3></section><section id="variant.Exchange" class="variant"><a href="#variant.Exchange" class="anchor">§</a><h3 class="code-header">Exchange</h3></section><div class="sub-variant" id="variant.Exchange.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Exchange.field.compare" class="section-header"><a href="#variant.Exchange.field.compare" class="anchor field">§</a><code>compare: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Handle.html" title="struct naga::Handle">Handle</a>&lt;<a class="enum" href="enum.Expression.html" title="enum naga::Expression">Expression</a>&gt;&gt;</code></span></div></div></div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AtomicFunction" class="impl"><a class="src rightside" href="../src/naga/front/wgsl/lower/mod.rs.html#3215-3229">source</a><a href="#impl-AtomicFunction" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.AtomicFunction.html" title="enum naga::AtomicFunction">AtomicFunction</a></h3></section></summary><div class="impl-items"><section id="method.map" class="method"><a class="src rightside" href="../src/naga/front/wgsl/lower/mod.rs.html#3216-3228">source</a><h4 class="code-header">pub fn <a href="#method.map" class="fn">map</a>(word: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self&gt;</h4></section></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Arbitrary%3C'arbitrary%3E-for-AtomicFunction" class="impl"><a class="src rightside" href="../src/naga/lib.rs.html#1094">source</a><a href="#impl-Arbitrary%3C'arbitrary%3E-for-AtomicFunction" class="anchor">§</a><h3 class="code-header">impl&lt;'arbitrary&gt; Arbitrary&lt;'arbitrary&gt; for <a class="enum" href="enum.AtomicFunction.html" title="enum naga::AtomicFunction">AtomicFunction</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.arbitrary" class="method trait-impl"><a class="src rightside" href="../src/naga/lib.rs.html#1094">source</a><a href="#method.arbitrary" class="anchor">§</a><h4 class="code-header">fn <a class="fn">arbitrary</a>(u: &amp;mut Unstructured&lt;'arbitrary&gt;) -&gt; Result&lt;Self&gt;</h4></section></summary><div class='docblock'>Generate an arbitrary value of <code>Self</code> from the given unstructured data. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.arbitrary_take_rest" class="method trait-impl"><a class="src rightside" href="../src/naga/lib.rs.html#1094">source</a><a href="#method.arbitrary_take_rest" class="anchor">§</a><h4 class="code-header">fn <a class="fn">arbitrary_take_rest</a>(u: Unstructured&lt;'arbitrary&gt;) -&gt; Result&lt;Self&gt;</h4></section></summary><div class='docblock'>Generate an arbitrary value of <code>Self</code> from the entirety of the given
18+
</div></details><h2 id="variants" class="variants section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Add" class="variant"><a href="#variant.Add" class="anchor">§</a><h3 class="code-header">Add</h3></section><section id="variant.Subtract" class="variant"><a href="#variant.Subtract" class="anchor">§</a><h3 class="code-header">Subtract</h3></section><section id="variant.And" class="variant"><a href="#variant.And" class="anchor">§</a><h3 class="code-header">And</h3></section><section id="variant.ExclusiveOr" class="variant"><a href="#variant.ExclusiveOr" class="anchor">§</a><h3 class="code-header">ExclusiveOr</h3></section><section id="variant.InclusiveOr" class="variant"><a href="#variant.InclusiveOr" class="anchor">§</a><h3 class="code-header">InclusiveOr</h3></section><section id="variant.Min" class="variant"><a href="#variant.Min" class="anchor">§</a><h3 class="code-header">Min</h3></section><section id="variant.Max" class="variant"><a href="#variant.Max" class="anchor">§</a><h3 class="code-header">Max</h3></section><section id="variant.Exchange" class="variant"><a href="#variant.Exchange" class="anchor">§</a><h3 class="code-header">Exchange</h3></section><div class="sub-variant" id="variant.Exchange.fields"><h4>Fields</h4><div class="sub-variant-field"><span id="variant.Exchange.field.compare" class="section-header"><a href="#variant.Exchange.field.compare" class="anchor field">§</a><code>compare: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Handle.html" title="struct naga::Handle">Handle</a>&lt;<a class="enum" href="enum.Expression.html" title="enum naga::Expression">Expression</a>&gt;&gt;</code></span></div></div></div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AtomicFunction" class="impl"><a class="src rightside" href="../src/naga/front/wgsl/lower/mod.rs.html#3233-3247">source</a><a href="#impl-AtomicFunction" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.AtomicFunction.html" title="enum naga::AtomicFunction">AtomicFunction</a></h3></section></summary><div class="impl-items"><section id="method.map" class="method"><a class="src rightside" href="../src/naga/front/wgsl/lower/mod.rs.html#3234-3246">source</a><h4 class="code-header">pub fn <a href="#method.map" class="fn">map</a>(word: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self&gt;</h4></section></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Arbitrary%3C'arbitrary%3E-for-AtomicFunction" class="impl"><a class="src rightside" href="../src/naga/lib.rs.html#1094">source</a><a href="#impl-Arbitrary%3C'arbitrary%3E-for-AtomicFunction" class="anchor">§</a><h3 class="code-header">impl&lt;'arbitrary&gt; Arbitrary&lt;'arbitrary&gt; for <a class="enum" href="enum.AtomicFunction.html" title="enum naga::AtomicFunction">AtomicFunction</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.arbitrary" class="method trait-impl"><a class="src rightside" href="../src/naga/lib.rs.html#1094">source</a><a href="#method.arbitrary" class="anchor">§</a><h4 class="code-header">fn <a class="fn">arbitrary</a>(u: &amp;mut Unstructured&lt;'arbitrary&gt;) -&gt; Result&lt;Self&gt;</h4></section></summary><div class='docblock'>Generate an arbitrary value of <code>Self</code> from the given unstructured data. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.arbitrary_take_rest" class="method trait-impl"><a class="src rightside" href="../src/naga/lib.rs.html#1094">source</a><a href="#method.arbitrary_take_rest" class="anchor">§</a><h4 class="code-header">fn <a class="fn">arbitrary_take_rest</a>(u: Unstructured&lt;'arbitrary&gt;) -&gt; Result&lt;Self&gt;</h4></section></summary><div class='docblock'>Generate an arbitrary value of <code>Self</code> from the entirety of the given
1919
unstructured data. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a class="src rightside" href="../src/naga/lib.rs.html#1094">source</a><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(depth: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; (<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;)</h4></section></summary><div class='docblock'>Get a size hint for how many bytes out of an <code>Unstructured</code> this type
2020
needs to construct itself. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.try_size_hint" class="method trait-impl"><a class="src rightside" href="../src/naga/lib.rs.html#1094">source</a><a href="#method.try_size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">try_size_hint</a>(
2121
depth: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>

doc/src/naga/front/wgsl/lower/mod.rs.html

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3228,6 +3228,24 @@
32283228
<a href="#3227" id="3227">3227</a>
32293229
<a href="#3228" id="3228">3228</a>
32303230
<a href="#3229" id="3229">3229</a>
3231+
<a href="#3230" id="3230">3230</a>
3232+
<a href="#3231" id="3231">3231</a>
3233+
<a href="#3232" id="3232">3232</a>
3234+
<a href="#3233" id="3233">3233</a>
3235+
<a href="#3234" id="3234">3234</a>
3236+
<a href="#3235" id="3235">3235</a>
3237+
<a href="#3236" id="3236">3236</a>
3238+
<a href="#3237" id="3237">3237</a>
3239+
<a href="#3238" id="3238">3238</a>
3240+
<a href="#3239" id="3239">3239</a>
3241+
<a href="#3240" id="3240">3240</a>
3242+
<a href="#3241" id="3241">3241</a>
3243+
<a href="#3242" id="3242">3242</a>
3244+
<a href="#3243" id="3243">3243</a>
3245+
<a href="#3244" id="3244">3244</a>
3246+
<a href="#3245" id="3245">3245</a>
3247+
<a href="#3246" id="3246">3246</a>
3248+
<a href="#3247" id="3247">3247</a>
32313249
</pre></div><pre class="rust"><code><span class="kw">use </span>std::num::NonZeroU32;
32323250

32333251
<span class="kw">use </span><span class="kw">crate</span>::front::wgsl::error::{Error, ExpectedToken, InvalidAssignmentType};
@@ -5414,7 +5432,25 @@
54145432
<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>LoweredGlobalDecl::Function(function)) =&gt; {
54155433
<span class="kw">let </span>arguments = arguments
54165434
.iter()
5417-
.map(|<span class="kw-2">&amp;</span>arg| <span class="self">self</span>.expression(arg, ctx))
5435+
.enumerate()
5436+
.map(|(i, <span class="kw-2">&amp;</span>arg)| {
5437+
<span class="comment">// Try to convert abstract values to the known argument types
5438+
</span><span class="kw">let </span><span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="kw">crate</span>::FunctionArgument {
5439+
ty: parameter_ty, ..
5440+
}) = ctx.module.functions[function].arguments.get(i)
5441+
<span class="kw">else </span>{
5442+
<span class="comment">// Wrong number of arguments... just concretize the type here
5443+
// and let the validator report the error.
5444+
</span><span class="kw">return </span><span class="self">self</span>.expression(arg, ctx);
5445+
};
5446+
5447+
<span class="kw">let </span>expr = <span class="self">self</span>.expression_for_abstract(arg, ctx)<span class="question-mark">?</span>;
5448+
ctx.try_automatic_conversions(
5449+
expr,
5450+
<span class="kw-2">&amp;</span><span class="kw">crate</span>::proc::TypeResolution::Handle(parameter_ty),
5451+
ctx.ast_expressions.get_span(arg),
5452+
)
5453+
})
54185454
.collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span class="kw">_</span>&gt;, <span class="kw">_</span>&gt;&gt;()<span class="question-mark">?</span>;
54195455

54205456
<span class="kw">let </span>has_result = ctx.module.functions[function].result.is_some();

0 commit comments

Comments
 (0)