#include "src/tint/lang/wgsl/resolver/resolver.h"
#include "gtest/gtest.h"
#include "src/tint/lang/core/address_space.h"
#include "src/tint/lang/core/fluent_types.h"
#include "src/tint/lang/core/texel_format.h"
#include "src/tint/lang/core/type/texture_dimension.h"
#include "src/tint/lang/wgsl/extension.h"
#include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
#include "src/tint/lang/wgsl/sem/value_expression.h"
#include "src/tint/utils/containers/vector.h"
usingnamespacetint::core::number_suffixes;
usingnamespacetint::core::fluent_types;
namespace tint::resolver {
namespace {
struct SideEffectsTest : ResolverTest { … };
TEST_F(SideEffectsTest, Phony) { … }
TEST_F(SideEffectsTest, Literal) { … }
TEST_F(SideEffectsTest, VariableUser) { … }
TEST_F(SideEffectsTest, Call_Builtin_NoSE) { … }
TEST_F(SideEffectsTest, Call_Builtin_NoSE_WithSEArg) { … }
TEST_F(SideEffectsTest, Call_Builtin_SE) { … }
namespace builtin_tests {
struct Case { … };
static Case C(const char* name,
VectorRef<const char*> args,
bool has_side_effects,
bool returns_value,
ast::PipelineStage stage = ast::PipelineStage::kFragment) { … }
static std::ostream& operator<<(std::ostream& o, const Case& c) { … }
SideEffectsBuiltinTest;
TEST_P(SideEffectsBuiltinTest, Test) { … }
INSTANTIATE_TEST_SUITE_P(…);
}
TEST_F(SideEffectsTest, Call_Function) { … }
TEST_F(SideEffectsTest, Call_TypeConversion_NoSE) { … }
TEST_F(SideEffectsTest, Call_TypeConversion_SE) { … }
TEST_F(SideEffectsTest, Call_TypeInitializer_NoSE) { … }
TEST_F(SideEffectsTest, Call_TypeInitializer_SE) { … }
TEST_F(SideEffectsTest, MemberAccessor_Struct_NoSE) { … }
TEST_F(SideEffectsTest, MemberAccessor_Struct_SE) { … }
TEST_F(SideEffectsTest, MemberAccessor_Vector) { … }
TEST_F(SideEffectsTest, MemberAccessor_VectorSwizzleNoSE) { … }
TEST_F(SideEffectsTest, MemberAccessor_VectorSwizzleSE) { … }
TEST_F(SideEffectsTest, Binary_NoSE) { … }
TEST_F(SideEffectsTest, Binary_LeftSE) { … }
TEST_F(SideEffectsTest, Binary_RightSE) { … }
TEST_F(SideEffectsTest, Binary_BothSE) { … }
TEST_F(SideEffectsTest, Unary_NoSE) { … }
TEST_F(SideEffectsTest, Unary_SE) { … }
TEST_F(SideEffectsTest, IndexAccessor_NoSE) { … }
TEST_F(SideEffectsTest, IndexAccessor_ObjSE) { … }
TEST_F(SideEffectsTest, IndexAccessor_IndexSE) { … }
TEST_F(SideEffectsTest, IndexAccessor_BothSE) { … }
TEST_F(SideEffectsTest, Bitcast_NoSE) { … }
TEST_F(SideEffectsTest, Bitcast_SE) { … }
}
}