Emit deprecation for fallthrough.
The `fallthrough` statement is being removed from WGSL. This CL adds a deprecation warning into the current implementation to prepare folks for the upcoming removal. Bug: tint:1644 Change-Id: I599984b6a30b39312c4b794a9ecd70f0f626c759 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/98841 Auto-Submit: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
parent
52cc4f5d1c
commit
735e4b4fa1
|
@ -2155,6 +2155,11 @@ Maybe<const ast::BlockStatement*> ParserImpl::case_body() {
|
|||
return Failure::kErrored;
|
||||
}
|
||||
|
||||
deprecated(source,
|
||||
"fallthrough is set to be removed from WGSL. "
|
||||
"Case can accept multiple selectors if the existing case bodies are empty. "
|
||||
"default is not yet supported in a case selector list.");
|
||||
|
||||
stmts.Push(create<ast::FallthroughStatement>(source));
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -3422,8 +3422,13 @@ fn foo() {
|
|||
)";
|
||||
|
||||
RunTest(src, false);
|
||||
EXPECT_EQ(error_,
|
||||
R"(test:14:7 warning: 'workgroupBarrier' must only be called from uniform control flow
|
||||
EXPECT_EQ(
|
||||
error_,
|
||||
R"(test:11:7 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||
fallthrough;
|
||||
^^^^^^^^^^^
|
||||
|
||||
test:14:7 warning: 'workgroupBarrier' must only be called from uniform control flow
|
||||
workgroupBarrier();
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -3487,8 +3492,13 @@ fn foo() {
|
|||
)";
|
||||
|
||||
RunTest(src, false);
|
||||
EXPECT_EQ(error_,
|
||||
R"(test:14:9 warning: 'workgroupBarrier' must only be called from uniform control flow
|
||||
EXPECT_EQ(
|
||||
error_,
|
||||
R"(test:10:7 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||
fallthrough;
|
||||
^^^^^^^^^^^
|
||||
|
||||
test:14:9 warning: 'workgroupBarrier' must only be called from uniform control flow
|
||||
workgroupBarrier();
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -3541,32 +3551,6 @@ test:6:11 note: reading from read_write storage buffer 'non_uniform' may result
|
|||
)");
|
||||
}
|
||||
|
||||
TEST_F(UniformityAnalysisTest, Switch_VarBecomesUniformInDifferentCase_WithFallthrough) {
|
||||
std::string src = R"(
|
||||
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
|
||||
@group(0) @binding(0) var<uniform> condition : i32;
|
||||
|
||||
fn foo() {
|
||||
var x = non_uniform;
|
||||
switch (condition) {
|
||||
case 0: {
|
||||
x = 5;
|
||||
fallthrough;
|
||||
}
|
||||
case 42: {
|
||||
if (x == 0) {
|
||||
workgroupBarrier();
|
||||
}
|
||||
}
|
||||
default: {
|
||||
}
|
||||
}
|
||||
}
|
||||
)";
|
||||
|
||||
RunTest(src, true);
|
||||
}
|
||||
|
||||
TEST_F(UniformityAnalysisTest, Switch_VarBecomesNonUniformInCase_BarrierAfter) {
|
||||
std::string src = R"(
|
||||
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||
fallthrough;
|
||||
^^^^^^^^^^^
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
int i = 0;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||
fallthrough;
|
||||
^^^^^^^^^^^
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
int i = 0;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||
fallthrough;
|
||||
^^^^^^^^^^^
|
||||
|
||||
#version 310 es
|
||||
|
||||
void f() {
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||
fallthrough;
|
||||
^^^^^^^^^^^
|
||||
|
||||
#include <metal_stdlib>
|
||||
|
||||
using namespace metal;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||
fallthrough;
|
||||
^^^^^^^^^^^
|
||||
|
||||
; SPIR-V
|
||||
; Version: 1.3
|
||||
; Generator: Google Tint Compiler; 0
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||
fallthrough;
|
||||
^^^^^^^^^^^
|
||||
|
||||
@compute @workgroup_size(1)
|
||||
fn f() {
|
||||
var i : i32;
|
||||
|
|
Loading…
Reference in New Issue