resolver: Validate that a call statement has no return value

Also split out validation tests from call_test.cc into call_validation_test.cc.

Bug: tint:886
Change-Id: I1e1dee9b7c348363e89080cdecd3119cc004658f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/54063
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
Ben Clayton
2021-06-11 13:22:27 +00:00
parent 0f1efe04c3
commit 7fe0106b12
24 changed files with 288 additions and 197 deletions

View File

@@ -53,7 +53,7 @@ fn test(vert_idx : u32) -> u32 {
[[stage(vertex)]]
fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
test(vert_idx);
ignore(test(vert_idx));
return vec4<f32>();
}
)";
@@ -72,7 +72,7 @@ fn test(vert_idx : u32) -> u32 {
[[stage(vertex)]]
fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
test((vert_idx + tint_symbol_1.first_vertex_index));
ignore(test((vert_idx + tint_symbol_1.first_vertex_index)));
return vec4<f32>();
}
)";
@@ -100,7 +100,7 @@ fn test(inst_idx : u32) -> u32 {
[[stage(vertex)]]
fn entry([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
test(inst_idx);
ignore(test(inst_idx));
return vec4<f32>();
}
)";
@@ -119,7 +119,7 @@ fn test(inst_idx : u32) -> u32 {
[[stage(vertex)]]
fn entry([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
test((inst_idx + tint_symbol_1.first_instance_index));
ignore(test((inst_idx + tint_symbol_1.first_instance_index)));
return vec4<f32>();
}
)";
@@ -152,7 +152,7 @@ struct Inputs {
[[stage(vertex)]]
fn entry(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
test(inputs.instance_idx, inputs.vert_idx);
ignore(test(inputs.instance_idx, inputs.vert_idx));
return vec4<f32>();
}
)";
@@ -179,7 +179,7 @@ struct Inputs {
[[stage(vertex)]]
fn entry(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
test((inputs.instance_idx + tint_symbol_1.first_instance_index), (inputs.vert_idx + tint_symbol_1.first_vertex_index));
ignore(test((inputs.instance_idx + tint_symbol_1.first_instance_index), (inputs.vert_idx + tint_symbol_1.first_vertex_index)));
return vec4<f32>();
}
)";
@@ -211,7 +211,7 @@ fn func2(vert_idx : u32) -> u32 {
[[stage(vertex)]]
fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
func2(vert_idx);
ignore(func2(vert_idx));
return vec4<f32>();
}
)";
@@ -234,7 +234,7 @@ fn func2(vert_idx : u32) -> u32 {
[[stage(vertex)]]
fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
func2((vert_idx + tint_symbol_1.first_vertex_index));
ignore(func2((vert_idx + tint_symbol_1.first_vertex_index)));
return vec4<f32>();
}
)";
@@ -262,19 +262,19 @@ fn func(i : u32) -> u32 {
[[stage(vertex)]]
fn entry_a([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
func(vert_idx);
ignore(func(vert_idx));
return vec4<f32>();
}
[[stage(vertex)]]
fn entry_b([[builtin(vertex_index)]] vert_idx : u32, [[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
func(vert_idx + inst_idx);
ignore(func(vert_idx + inst_idx));
return vec4<f32>();
}
[[stage(vertex)]]
fn entry_c([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
func(inst_idx);
ignore(func(inst_idx));
return vec4<f32>();
}
)";
@@ -294,19 +294,19 @@ fn func(i : u32) -> u32 {
[[stage(vertex)]]
fn entry_a([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
func((vert_idx + tint_symbol_1.first_vertex_index));
ignore(func((vert_idx + tint_symbol_1.first_vertex_index)));
return vec4<f32>();
}
[[stage(vertex)]]
fn entry_b([[builtin(vertex_index)]] vert_idx : u32, [[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
func(((vert_idx + tint_symbol_1.first_vertex_index) + (inst_idx + tint_symbol_1.first_instance_index)));
ignore(func(((vert_idx + tint_symbol_1.first_vertex_index) + (inst_idx + tint_symbol_1.first_instance_index))));
return vec4<f32>();
}
[[stage(vertex)]]
fn entry_c([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
func((inst_idx + tint_symbol_1.first_instance_index));
ignore(func((inst_idx + tint_symbol_1.first_instance_index)));
return vec4<f32>();
}
)";
@@ -338,7 +338,7 @@ fn test() -> u32 {
[[stage(vertex)]]
fn entry() {
test();
ignore(test());
pos = vec4<f32>();
}
)";
@@ -361,7 +361,7 @@ fn test() -> u32 {
[[stage(vertex)]]
fn entry() {
test();
ignore(test());
pos = vec4<f32>();
}
)";
@@ -393,7 +393,7 @@ fn test() -> u32 {
[[stage(vertex)]]
fn entry() {
test();
ignore(test());
pos = vec4<f32>();
}
)";
@@ -416,7 +416,7 @@ fn test() -> u32 {
[[stage(vertex)]]
fn entry() {
test();
ignore(test());
pos = vec4<f32>();
}
)";
@@ -448,7 +448,7 @@ fn test() -> u32 {
[[stage(vertex)]]
fn entry() {
test();
ignore(test());
pos = vec4<f32>();
}
)";
@@ -474,7 +474,7 @@ fn test() -> u32 {
[[stage(vertex)]]
fn entry() {
test();
ignore(test());
pos = vec4<f32>();
}
)";
@@ -509,7 +509,7 @@ fn func2() -> u32 {
[[stage(vertex)]]
fn entry() {
func2();
ignore(func2());
pos = vec4<f32>();
}
)";
@@ -536,7 +536,7 @@ fn func2() -> u32 {
[[stage(vertex)]]
fn entry() {
func2();
ignore(func2());
pos = vec4<f32>();
}
)";

View File

@@ -50,7 +50,7 @@ fn test() -> u32 {
[[stage(vertex)]]
fn entry() -> [[builtin(position)]] vec4<f32> {
test();
ignore(test());
return vec4<f32>();
}
)";
@@ -64,7 +64,7 @@ fn tint_symbol_1() -> u32 {
[[stage(vertex)]]
fn tint_symbol_2() -> [[builtin(position)]] vec4<f32> {
tint_symbol_1();
ignore(tint_symbol_1());
return vec4<f32>();
}
)";