tint/resolver: Consistently use ConstEval::Result
Fixed: tint:1661
Change-Id: I527b5e2d03abeb53b177a1c69952953864ec0913
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111240
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/resolver/const_eval.cc b/src/tint/resolver/const_eval.cc
index f75481c..9275ef3 100644
--- a/src/tint/resolver/const_eval.cc
+++ b/src/tint/resolver/const_eval.cc
@@ -1561,11 +1561,7 @@
return Dispatch_ia_iu32(create, c0, c1);
};
- auto r = TransformElements(builder, ty, transform, args[0], args[1]);
- if (builder.Diagnostics().contains_errors()) {
- return utils::Failure;
- }
- return r;
+ return TransformElements(builder, ty, transform, args[0], args[1]);
}
ConstEval::Result ConstEval::OpShiftLeft(const sem::Type* ty,
@@ -1590,13 +1586,13 @@
UT mask = ~UT{0} << (bit_width - must_match_msb);
if ((e1u & mask) != 0 && (e1u & mask) != mask) {
AddError("shift left operation results in sign change", source);
- return nullptr;
+ return utils::Failure;
}
} else {
// If shift value >= bit_width, then any non-zero value would overflow
if (e1 != 0) {
AddError(OverflowErrorMessage(e1, "<<", e2), source);
- return nullptr;
+ return utils::Failure;
}
// It's UB in C++ to shift by greater or equal to the bit width (even if the lhs
@@ -1612,7 +1608,7 @@
"shift left value must be less than the bit width of the lhs, which is " +
std::to_string(bit_width),
source);
- return nullptr;
+ return utils::Failure;
}
if constexpr (std::is_signed_v<T>) {
@@ -1622,7 +1618,7 @@
UT mask = ~UT{0} << (bit_width - must_match_msb);
if ((e1u & mask) != 0 && (e1u & mask) != mask) {
AddError("shift left operation results in sign change", source);
- return nullptr;
+ return utils::Failure;
}
} else {
// If T is an unsigned integer type, and any of the e2 most significant bits of
@@ -1632,6 +1628,7 @@
UT mask = ~UT{0} << (bit_width - must_be_zero_msb);
if ((e1u & mask) != 0) {
AddError(OverflowErrorMessage(e1, "<<", e2), source);
+ return utils::Failure;
}
}
}
@@ -1647,14 +1644,10 @@
if (!sem::Type::DeepestElementOf(args[1]->Type())->Is<sem::U32>()) {
TINT_ICE(Resolver, builder.Diagnostics())
<< "Element type of rhs of ShiftLeft must be a u32";
- return nullptr;
- }
-
- auto r = TransformElements(builder, ty, transform, args[0], args[1]);
- if (builder.Diagnostics().contains_errors()) {
return utils::Failure;
}
- return r;
+
+ return TransformElements(builder, ty, transform, args[0], args[1]);
}
ConstEval::Result ConstEval::abs(const sem::Type* ty,
@@ -1758,11 +1751,7 @@
return Dispatch_fa_f32_f16(create, c0);
};
- auto r = TransformElements(builder, ty, transform, args[0]);
- if (builder.Diagnostics().contains_errors()) {
- return utils::Failure;
- }
- return r;
+ return TransformElements(builder, ty, transform, args[0]);
}
ConstEval::Result ConstEval::atan(const sem::Type* ty,