Place the namer into the context object.
This CL moves the namer into the context object and makes it a parameter
to the various generators. The old constructor is maintained until we've
updated downstream repos.
Bug: tint:273
Change-Id: I49b2519c4250be21fb73374b16e7c702b727078f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/32580
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/writer/hlsl/generator.cc b/src/writer/hlsl/generator.cc
index d521533..fa76960 100644
--- a/src/writer/hlsl/generator.cc
+++ b/src/writer/hlsl/generator.cc
@@ -22,14 +22,18 @@
Generator::Generator(ast::Module module)
: Text(std::move(module)),
- impl_(std::make_unique<GeneratorImpl>(&module_)) {}
+ impl_(std::make_unique<GeneratorImpl>(ctx_, &module_)) {}
+
+Generator::Generator(Context* ctx, ast::Module module)
+ : Text(ctx, std::move(module)),
+ impl_(std::make_unique<GeneratorImpl>(ctx_, &module_)) {}
Generator::~Generator() = default;
void Generator::Reset() {
set_error("");
out_ = std::ostringstream();
- impl_ = std::make_unique<GeneratorImpl>(&module_);
+ impl_ = std::make_unique<GeneratorImpl>(ctx_, &module_);
}
bool Generator::Generate() {
diff --git a/src/writer/hlsl/generator.h b/src/writer/hlsl/generator.h
index 83f6d27..93213e6 100644
--- a/src/writer/hlsl/generator.h
+++ b/src/writer/hlsl/generator.h
@@ -30,8 +30,13 @@
class Generator : public Text {
public:
/// Constructor
+ /// DEPRECATED
/// @param module the module to convert
explicit Generator(ast::Module module);
+ /// Constructor
+ /// @param ctx the context, must be non-null
+ /// @param module the module to convert
+ Generator(Context* ctx, ast::Module module);
~Generator() override;
/// Resets the generator
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index 1ae094c..726757b 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -104,7 +104,10 @@
} // namespace
-GeneratorImpl::GeneratorImpl(ast::Module* module) : module_(module) {}
+GeneratorImpl::GeneratorImpl(Context* ctx, ast::Module* module)
+ : ctx_(ctx), module_(module) {
+ assert(ctx);
+}
GeneratorImpl::~GeneratorImpl() = default;
diff --git a/src/writer/hlsl/generator_impl.h b/src/writer/hlsl/generator_impl.h
index 1bb9a32..c51fcf2 100644
--- a/src/writer/hlsl/generator_impl.h
+++ b/src/writer/hlsl/generator_impl.h
@@ -25,6 +25,7 @@
#include "src/ast/scalar_constructor_expression.h"
#include "src/ast/type/struct_type.h"
#include "src/ast/type_constructor_expression.h"
+#include "src/context.h"
#include "src/scope_stack.h"
#include "src/writer/hlsl/namer.h"
@@ -36,8 +37,9 @@
class GeneratorImpl {
public:
/// Constructor
+ /// @param ctx the context object, must be non-null
/// @param module the module to generate
- explicit GeneratorImpl(ast::Module* module);
+ GeneratorImpl(Context* ctx, ast::Module* module);
~GeneratorImpl();
/// Increment the emitter indent level
@@ -371,6 +373,7 @@
size_t indent_ = 0;
Namer namer_;
+ Context* ctx_ = nullptr;
ast::Module* module_ = nullptr;
std::string current_ep_name_;
bool generating_entry_point_ = false;
diff --git a/src/writer/hlsl/generator_impl_alias_type_test.cc b/src/writer/hlsl/generator_impl_alias_type_test.cc
index d50db38..ae8a6e6 100644
--- a/src/writer/hlsl/generator_impl_alias_type_test.cc
+++ b/src/writer/hlsl/generator_impl_alias_type_test.cc
@@ -12,7 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "src/ast/module.h"
#include "src/ast/struct.h"
#include "src/ast/struct_member.h"
#include "src/ast/struct_member_decoration.h"
@@ -33,7 +32,7 @@
ast::type::F32Type f32;
ast::type::AliasType alias("a", &f32);
- ASSERT_TRUE(gen().EmitConstructedType(out(), &alias)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructedType(out, &alias)) << gen.error();
EXPECT_EQ(result(), R"(typedef float a;
)");
}
@@ -42,7 +41,7 @@
ast::type::F32Type f32;
ast::type::AliasType alias("float", &f32);
- ASSERT_TRUE(gen().EmitConstructedType(out(), &alias)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructedType(out, &alias)) << gen.error();
EXPECT_EQ(result(), R"(typedef float float_tint_0;
)");
}
@@ -67,9 +66,7 @@
ast::type::StructType s("A", std::move(str));
ast::type::AliasType alias("B", &s);
- ast::Module m;
- GeneratorImpl g(&m);
- ASSERT_TRUE(gen().EmitConstructedType(out(), &alias)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructedType(out, &alias)) << gen.error();
EXPECT_EQ(result(), R"(struct B {
float a;
int b;
diff --git a/src/writer/hlsl/generator_impl_array_accessor_test.cc b/src/writer/hlsl/generator_impl_array_accessor_test.cc
index 5b488d4..b399f7e 100644
--- a/src/writer/hlsl/generator_impl_array_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_array_accessor_test.cc
@@ -37,7 +37,7 @@
ast::ArrayAccessorExpression expr(std::move(ary), std::move(idx));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "ary[5]");
}
@@ -47,7 +47,7 @@
ast::ArrayAccessorExpression expr(std::move(ary), std::move(idx));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "ary[idx]");
}
diff --git a/src/writer/hlsl/generator_impl_assign_test.cc b/src/writer/hlsl/generator_impl_assign_test.cc
index c366717..8b9da6a 100644
--- a/src/writer/hlsl/generator_impl_assign_test.cc
+++ b/src/writer/hlsl/generator_impl_assign_test.cc
@@ -32,9 +32,9 @@
auto rhs = std::make_unique<ast::IdentifierExpression>("rhs");
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(result(), " lhs = rhs;\n");
}
diff --git a/src/writer/hlsl/generator_impl_binary_test.cc b/src/writer/hlsl/generator_impl_binary_test.cc
index bec7a6d..fe5b0ad 100644
--- a/src/writer/hlsl/generator_impl_binary_test.cc
+++ b/src/writer/hlsl/generator_impl_binary_test.cc
@@ -50,7 +50,7 @@
return out;
}
-using HlslBinaryTest = TestHelperBase<testing::TestWithParam<BinaryData>>;
+using HlslBinaryTest = TestParamHelper<BinaryData>;
TEST_P(HlslBinaryTest, Emit) {
auto params = GetParam();
@@ -59,7 +59,7 @@
ast::BinaryExpression expr(params.op, std::move(left), std::move(right));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), params.result);
}
INSTANTIATE_TEST_SUITE_P(
@@ -90,7 +90,7 @@
ast::BinaryExpression expr(ast::BinaryOp::kLogicalAnd, std::move(left),
std::move(right));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "(_tint_tmp)");
EXPECT_EQ(pre_result(), R"(bool _tint_tmp = left;
if (_tint_tmp) {
@@ -113,7 +113,7 @@
std::make_unique<ast::BinaryExpression>(ast::BinaryOp::kLogicalOr,
std::move(c), std::move(d)));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "(_tint_tmp_0)");
EXPECT_EQ(pre_result(), R"(bool _tint_tmp = a;
if (_tint_tmp) {
@@ -137,7 +137,7 @@
ast::BinaryExpression expr(ast::BinaryOp::kLogicalOr, std::move(left),
std::move(right));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "(_tint_tmp)");
EXPECT_EQ(pre_result(), R"(bool _tint_tmp = left;
if (!_tint_tmp) {
@@ -190,7 +190,7 @@
std::move(body));
expr.set_else_statements(std::move(else_stmts));
- ASSERT_TRUE(gen().EmitStatement(out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &expr)) << gen.error();
EXPECT_EQ(result(), R"(bool _tint_tmp = a;
if (_tint_tmp) {
_tint_tmp = b;
@@ -223,7 +223,7 @@
std::move(a), std::move(b)),
std::move(c)));
- ASSERT_TRUE(gen().EmitStatement(out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &expr)) << gen.error();
EXPECT_EQ(result(), R"(bool _tint_tmp = a;
if (_tint_tmp) {
_tint_tmp = b;
@@ -251,7 +251,7 @@
std::move(b), std::move(c)),
std::move(d)));
- ASSERT_TRUE(gen().EmitStatement(out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &expr)) << gen.error();
EXPECT_EQ(result(), R"(bool _tint_tmp = b;
if (!_tint_tmp) {
_tint_tmp = c;
@@ -282,7 +282,7 @@
ast::VariableDeclStatement expr(std::move(var));
- ASSERT_TRUE(gen().EmitStatement(out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &expr)) << gen.error();
EXPECT_EQ(result(), R"(bool _tint_tmp = b;
if (_tint_tmp) {
_tint_tmp = c;
@@ -309,7 +309,7 @@
std::make_unique<ast::BinaryExpression>(
ast::BinaryOp::kLogicalOr, std::move(b), std::move(c))));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(pre_result(), R"(bool _tint_tmp = a;
if (_tint_tmp) {
bool _tint_tmp_0 = b;
@@ -329,7 +329,7 @@
auto func =
std::make_unique<ast::Function>("foo", ast::VariableList{}, &void_type);
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
ast::ExpressionList params;
params.push_back(std::make_unique<ast::BinaryExpression>(
@@ -354,7 +354,7 @@
ast::CallStatement expr(std::make_unique<ast::CallExpression>(
std::make_unique<ast::IdentifierExpression>("foo"), std::move(params)));
- ASSERT_TRUE(gen().EmitStatement(out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &expr)) << gen.error();
EXPECT_EQ(result(), R"(bool _tint_tmp = a;
if (_tint_tmp) {
_tint_tmp = b;
diff --git a/src/writer/hlsl/generator_impl_bitcast_test.cc b/src/writer/hlsl/generator_impl_bitcast_test.cc
index ffe34d7..e7cd737 100644
--- a/src/writer/hlsl/generator_impl_bitcast_test.cc
+++ b/src/writer/hlsl/generator_impl_bitcast_test.cc
@@ -34,7 +34,7 @@
auto id = std::make_unique<ast::IdentifierExpression>("id");
ast::BitcastExpression bitcast(&f32, std::move(id));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &bitcast)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &bitcast)) << gen.error();
EXPECT_EQ(result(), "asfloat(id)");
}
@@ -43,7 +43,7 @@
auto id = std::make_unique<ast::IdentifierExpression>("id");
ast::BitcastExpression bitcast(&i32, std::move(id));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &bitcast)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &bitcast)) << gen.error();
EXPECT_EQ(result(), "asint(id)");
}
@@ -52,7 +52,7 @@
auto id = std::make_unique<ast::IdentifierExpression>("id");
ast::BitcastExpression bitcast(&u32, std::move(id));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &bitcast)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &bitcast)) << gen.error();
EXPECT_EQ(result(), "asuint(id)");
}
diff --git a/src/writer/hlsl/generator_impl_block_test.cc b/src/writer/hlsl/generator_impl_block_test.cc
index fd309e7..6d3549a 100644
--- a/src/writer/hlsl/generator_impl_block_test.cc
+++ b/src/writer/hlsl/generator_impl_block_test.cc
@@ -29,9 +29,9 @@
ast::BlockStatement b;
b.append(std::make_unique<ast::DiscardStatement>());
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &b)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &b)) << gen.error();
EXPECT_EQ(result(), R"( {
discard;
}
@@ -42,9 +42,9 @@
ast::BlockStatement b;
b.append(std::make_unique<ast::DiscardStatement>());
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitBlock(out(), &b)) << gen().error();
+ ASSERT_TRUE(gen.EmitBlock(out, &b)) << gen.error();
EXPECT_EQ(result(), R"({
discard;
})");
diff --git a/src/writer/hlsl/generator_impl_break_test.cc b/src/writer/hlsl/generator_impl_break_test.cc
index 7185ca9..3eb2f7f 100644
--- a/src/writer/hlsl/generator_impl_break_test.cc
+++ b/src/writer/hlsl/generator_impl_break_test.cc
@@ -29,9 +29,9 @@
TEST_F(HlslGeneratorImplTest_Break, Emit_Break) {
ast::BreakStatement b;
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &b)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &b)) << gen.error();
EXPECT_EQ(result(), " break;\n");
}
diff --git a/src/writer/hlsl/generator_impl_call_test.cc b/src/writer/hlsl/generator_impl_call_test.cc
index 63070e0..58a8a1e 100644
--- a/src/writer/hlsl/generator_impl_call_test.cc
+++ b/src/writer/hlsl/generator_impl_call_test.cc
@@ -37,9 +37,9 @@
auto func = std::make_unique<ast::Function>("my_func", ast::VariableList{},
&void_type);
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &call)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &call)) << gen.error();
EXPECT_EQ(result(), "my_func()");
}
@@ -54,9 +54,9 @@
auto func = std::make_unique<ast::Function>("my_func", ast::VariableList{},
&void_type);
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &call)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &call)) << gen.error();
EXPECT_EQ(result(), "my_func(param1, param2)");
}
@@ -72,9 +72,9 @@
auto func = std::make_unique<ast::Function>("my_func", ast::VariableList{},
&void_type);
- mod()->AddFunction(std::move(func));
- gen().increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &call)) << gen().error();
+ mod.AddFunction(std::move(func));
+ gen.increment_indent();
+ ASSERT_TRUE(gen.EmitStatement(out, &call)) << gen.error();
EXPECT_EQ(result(), " my_func(param1, param2);\n");
}
diff --git a/src/writer/hlsl/generator_impl_case_test.cc b/src/writer/hlsl/generator_impl_case_test.cc
index c0330b9..686e16e 100644
--- a/src/writer/hlsl/generator_impl_case_test.cc
+++ b/src/writer/hlsl/generator_impl_case_test.cc
@@ -40,9 +40,9 @@
lit.push_back(std::make_unique<ast::SintLiteral>(&i32, 5));
ast::CaseStatement c(std::move(lit), std::move(body));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitCase(out(), &c)) << gen().error();
+ ASSERT_TRUE(gen.EmitCase(out, &c)) << gen.error();
EXPECT_EQ(result(), R"( case 5: {
break;
}
@@ -56,9 +56,9 @@
lit.push_back(std::make_unique<ast::SintLiteral>(&i32, 5));
ast::CaseStatement c(std::move(lit), std::make_unique<ast::BlockStatement>());
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitCase(out(), &c)) << gen().error();
+ ASSERT_TRUE(gen.EmitCase(out, &c)) << gen.error();
EXPECT_EQ(result(), R"( case 5: {
break;
}
@@ -75,9 +75,9 @@
lit.push_back(std::make_unique<ast::SintLiteral>(&i32, 5));
ast::CaseStatement c(std::move(lit), std::move(body));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitCase(out(), &c)) << gen().error();
+ ASSERT_TRUE(gen.EmitCase(out, &c)) << gen.error();
EXPECT_EQ(result(), R"( case 5: {
/* fallthrough */
}
@@ -95,9 +95,9 @@
lit.push_back(std::make_unique<ast::SintLiteral>(&i32, 6));
ast::CaseStatement c(std::move(lit), std::move(body));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitCase(out(), &c)) << gen().error();
+ ASSERT_TRUE(gen.EmitCase(out, &c)) << gen.error();
EXPECT_EQ(result(), R"( case 5:
case 6: {
break;
@@ -112,9 +112,9 @@
body->append(std::make_unique<ast::BreakStatement>());
c.set_body(std::move(body));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitCase(out(), &c)) << gen().error();
+ ASSERT_TRUE(gen.EmitCase(out, &c)) << gen.error();
EXPECT_EQ(result(), R"( default: {
break;
}
diff --git a/src/writer/hlsl/generator_impl_cast_test.cc b/src/writer/hlsl/generator_impl_cast_test.cc
index b92b104..9c88e51 100644
--- a/src/writer/hlsl/generator_impl_cast_test.cc
+++ b/src/writer/hlsl/generator_impl_cast_test.cc
@@ -36,7 +36,7 @@
ast::TypeConstructorExpression cast(&f32, std::move(params));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &cast)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &cast)) << gen.error();
EXPECT_EQ(result(), "float(id)");
}
@@ -49,7 +49,7 @@
ast::TypeConstructorExpression cast(&vec3, std::move(params));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &cast)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &cast)) << gen.error();
EXPECT_EQ(result(), "vector<float, 3>(id)");
}
diff --git a/src/writer/hlsl/generator_impl_constructor_test.cc b/src/writer/hlsl/generator_impl_constructor_test.cc
index 4211ee8..1a953d0 100644
--- a/src/writer/hlsl/generator_impl_constructor_test.cc
+++ b/src/writer/hlsl/generator_impl_constructor_test.cc
@@ -40,7 +40,7 @@
auto lit = std::make_unique<ast::BoolLiteral>(&bool_type, false);
ast::ScalarConstructorExpression expr(std::move(lit));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "false");
}
@@ -49,7 +49,7 @@
auto lit = std::make_unique<ast::SintLiteral>(&i32, -12345);
ast::ScalarConstructorExpression expr(std::move(lit));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "-12345");
}
@@ -58,7 +58,7 @@
auto lit = std::make_unique<ast::UintLiteral>(&u32, 56779);
ast::ScalarConstructorExpression expr(std::move(lit));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "56779u");
}
@@ -69,7 +69,7 @@
&f32, static_cast<float>((1 << 30) - 4));
ast::ScalarConstructorExpression expr(std::move(lit));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "1.07374182e+09f");
}
@@ -83,7 +83,7 @@
ast::TypeConstructorExpression expr(&f32, std::move(values));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "float(-1.20000004e-05f)");
}
@@ -97,7 +97,7 @@
ast::TypeConstructorExpression expr(&b, std::move(values));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "bool(true)");
}
@@ -111,7 +111,7 @@
ast::TypeConstructorExpression expr(&i32, std::move(values));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "int(-12345)");
}
@@ -125,7 +125,7 @@
ast::TypeConstructorExpression expr(&u32, std::move(values));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "uint(12345u)");
}
@@ -146,7 +146,7 @@
ast::TypeConstructorExpression expr(&vec, std::move(values));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(),
"vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f)");
}
@@ -158,7 +158,7 @@
ast::ExpressionList values;
ast::TypeConstructorExpression expr(&vec, std::move(values));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "vector<float, 3>(0.0f)");
}
@@ -194,7 +194,7 @@
ast::TypeConstructorExpression expr(&mat, std::move(mat_values));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
// A matrix of type T with n columns and m rows can also be constructed from
// n vectors of type T with m components.
@@ -233,7 +233,7 @@
ast::TypeConstructorExpression expr(&ary, std::move(ary_values));
- ASSERT_TRUE(gen().EmitConstructor(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(),
std::string("{") +
"vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f), " +
diff --git a/src/writer/hlsl/generator_impl_continue_test.cc b/src/writer/hlsl/generator_impl_continue_test.cc
index 170b7f7..7b548b9 100644
--- a/src/writer/hlsl/generator_impl_continue_test.cc
+++ b/src/writer/hlsl/generator_impl_continue_test.cc
@@ -29,9 +29,9 @@
TEST_F(HlslGeneratorImplTest_Continue, Emit_Continue) {
ast::ContinueStatement c;
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &c)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &c)) << gen.error();
EXPECT_EQ(result(), " continue;\n");
}
diff --git a/src/writer/hlsl/generator_impl_discard_test.cc b/src/writer/hlsl/generator_impl_discard_test.cc
index 8bf84fd..422d39c 100644
--- a/src/writer/hlsl/generator_impl_discard_test.cc
+++ b/src/writer/hlsl/generator_impl_discard_test.cc
@@ -26,9 +26,9 @@
TEST_F(HlslGeneratorImplTest_Discard, Emit_Discard) {
ast::DiscardStatement stmt;
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), " discard;\n");
}
diff --git a/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc b/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
index e089fca..9347e95 100644
--- a/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
+++ b/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
@@ -65,11 +65,11 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(foo_var.get());
- td().RegisterVariableForTesting(bar_var.get());
+ td.RegisterVariableForTesting(foo_var.get());
+ td.RegisterVariableForTesting(bar_var.get());
- mod()->AddGlobalVariable(std::move(foo_var));
- mod()->AddGlobalVariable(std::move(bar_var));
+ mod.AddGlobalVariable(std::move(foo_var));
+ mod.AddGlobalVariable(std::move(bar_var));
ast::VariableList params;
auto func =
@@ -87,13 +87,12 @@
std::make_unique<ast::IdentifierExpression>("bar")));
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
std::unordered_set<std::string> globals;
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().EmitEntryPointData(out(), func_ptr, globals))
- << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.EmitEntryPointData(out, func_ptr, globals)) << gen.error();
EXPECT_EQ(result(), R"(struct vtx_main_in {
float foo : TEXCOORD0;
int bar : TEXCOORD1;
@@ -127,11 +126,11 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(foo_var.get());
- td().RegisterVariableForTesting(bar_var.get());
+ td.RegisterVariableForTesting(foo_var.get());
+ td.RegisterVariableForTesting(bar_var.get());
- mod()->AddGlobalVariable(std::move(foo_var));
- mod()->AddGlobalVariable(std::move(bar_var));
+ mod.AddGlobalVariable(std::move(foo_var));
+ mod.AddGlobalVariable(std::move(bar_var));
ast::VariableList params;
auto func =
@@ -149,13 +148,12 @@
std::make_unique<ast::IdentifierExpression>("bar")));
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
std::unordered_set<std::string> globals;
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().EmitEntryPointData(out(), func_ptr, globals))
- << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.EmitEntryPointData(out, func_ptr, globals)) << gen.error();
EXPECT_EQ(result(), R"(struct vtx_main_out {
float foo : TEXCOORD0;
int bar : TEXCOORD1;
@@ -189,11 +187,11 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(foo_var.get());
- td().RegisterVariableForTesting(bar_var.get());
+ td.RegisterVariableForTesting(foo_var.get());
+ td.RegisterVariableForTesting(bar_var.get());
- mod()->AddGlobalVariable(std::move(foo_var));
- mod()->AddGlobalVariable(std::move(bar_var));
+ mod.AddGlobalVariable(std::move(foo_var));
+ mod.AddGlobalVariable(std::move(bar_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("main", std::move(params), &f32);
@@ -210,13 +208,12 @@
std::make_unique<ast::IdentifierExpression>("bar")));
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
std::unordered_set<std::string> globals;
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().EmitEntryPointData(out(), func_ptr, globals))
- << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.EmitEntryPointData(out, func_ptr, globals)) << gen.error();
EXPECT_EQ(result(), R"(struct main_in {
float foo : TEXCOORD0;
int bar : TEXCOORD1;
@@ -250,11 +247,11 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(foo_var.get());
- td().RegisterVariableForTesting(bar_var.get());
+ td.RegisterVariableForTesting(foo_var.get());
+ td.RegisterVariableForTesting(bar_var.get());
- mod()->AddGlobalVariable(std::move(foo_var));
- mod()->AddGlobalVariable(std::move(bar_var));
+ mod.AddGlobalVariable(std::move(foo_var));
+ mod.AddGlobalVariable(std::move(bar_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("main", std::move(params), &f32);
@@ -271,13 +268,12 @@
std::make_unique<ast::IdentifierExpression>("bar")));
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
std::unordered_set<std::string> globals;
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().EmitEntryPointData(out(), func_ptr, globals))
- << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.EmitEntryPointData(out, func_ptr, globals)) << gen.error();
EXPECT_EQ(result(), R"(struct main_out {
float foo : SV_Target0;
int bar : SV_Target1;
@@ -308,11 +304,11 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(foo_var.get());
- td().RegisterVariableForTesting(bar_var.get());
+ td.RegisterVariableForTesting(foo_var.get());
+ td.RegisterVariableForTesting(bar_var.get());
- mod()->AddGlobalVariable(std::move(foo_var));
- mod()->AddGlobalVariable(std::move(bar_var));
+ mod.AddGlobalVariable(std::move(foo_var));
+ mod.AddGlobalVariable(std::move(bar_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("main", std::move(params), &f32);
@@ -329,14 +325,13 @@
std::make_unique<ast::IdentifierExpression>("bar")));
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
std::unordered_set<std::string> globals;
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_FALSE(gen().EmitEntryPointData(out(), func_ptr, globals))
- << gen().error();
- EXPECT_EQ(gen().error(), R"(invalid location variable for pipeline stage)");
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_FALSE(gen.EmitEntryPointData(out, func_ptr, globals)) << gen.error();
+ EXPECT_EQ(gen.error(), R"(invalid location variable for pipeline stage)");
}
TEST_F(HlslGeneratorImplTest_EntryPoint,
@@ -361,11 +356,11 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(foo_var.get());
- td().RegisterVariableForTesting(bar_var.get());
+ td.RegisterVariableForTesting(foo_var.get());
+ td.RegisterVariableForTesting(bar_var.get());
- mod()->AddGlobalVariable(std::move(foo_var));
- mod()->AddGlobalVariable(std::move(bar_var));
+ mod.AddGlobalVariable(std::move(foo_var));
+ mod.AddGlobalVariable(std::move(bar_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("main", std::move(params), &f32);
@@ -382,14 +377,13 @@
std::make_unique<ast::IdentifierExpression>("bar")));
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
std::unordered_set<std::string> globals;
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_FALSE(gen().EmitEntryPointData(out(), func_ptr, globals))
- << gen().error();
- EXPECT_EQ(gen().error(), R"(invalid location variable for pipeline stage)");
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_FALSE(gen.EmitEntryPointData(out, func_ptr, globals)) << gen.error();
+ EXPECT_EQ(gen.error(), R"(invalid location variable for pipeline stage)");
}
TEST_F(HlslGeneratorImplTest_EntryPoint,
@@ -425,11 +419,11 @@
ast::Builtin::kFragDepth, Source{}));
depth_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
- td().RegisterVariableForTesting(depth_var.get());
+ td.RegisterVariableForTesting(coord_var.get());
+ td.RegisterVariableForTesting(depth_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
- mod()->AddGlobalVariable(std::move(depth_var));
+ mod.AddGlobalVariable(std::move(coord_var));
+ mod.AddGlobalVariable(std::move(depth_var));
ast::VariableList params;
auto func =
@@ -446,13 +440,12 @@
std::make_unique<ast::IdentifierExpression>("x"))));
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
std::unordered_set<std::string> globals;
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().EmitEntryPointData(out(), func_ptr, globals))
- << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.EmitEntryPointData(out, func_ptr, globals)) << gen.error();
EXPECT_EQ(result(), R"(struct main_in {
vector<float, 4> coord : SV_Position;
};
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index 5f02e3a..3df6492 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -64,10 +64,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
- gen().increment_indent();
+ mod.AddFunction(std::move(func));
+ gen.increment_indent();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"( void my_func() {
return;
}
@@ -85,10 +85,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
- gen().increment_indent();
+ mod.AddFunction(std::move(func));
+ gen.increment_indent();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"( void GeometryShader_tint_0() {
return;
}
@@ -114,10 +114,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
- gen().increment_indent();
+ mod.AddFunction(std::move(func));
+ gen.increment_indent();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"( void my_func(float a, int b) {
return;
}
@@ -142,11 +142,11 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(foo_var.get());
- td().RegisterVariableForTesting(bar_var.get());
+ td.RegisterVariableForTesting(foo_var.get());
+ td.RegisterVariableForTesting(bar_var.get());
- mod()->AddGlobalVariable(std::move(foo_var));
- mod()->AddGlobalVariable(std::move(bar_var));
+ mod.AddGlobalVariable(std::move(foo_var));
+ mod.AddGlobalVariable(std::move(bar_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
@@ -161,10 +161,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(struct frag_main_in {
float foo : TEXCOORD0;
};
@@ -204,11 +204,11 @@
ast::Builtin::kFragDepth, Source{}));
depth_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
- td().RegisterVariableForTesting(depth_var.get());
+ td.RegisterVariableForTesting(coord_var.get());
+ td.RegisterVariableForTesting(depth_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
- mod()->AddGlobalVariable(std::move(depth_var));
+ mod.AddGlobalVariable(std::move(coord_var));
+ mod.AddGlobalVariable(std::move(depth_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
@@ -225,10 +225,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(struct frag_main_in {
vector<float, 4> coord : SV_Position;
};
@@ -261,8 +261,8 @@
decos.push_back(std::make_unique<ast::SetDecoration>(1, Source{}));
coord_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
@@ -281,10 +281,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(cbuffer : register(b0) {
vector<float, 4> coord;
};
@@ -316,15 +316,15 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"uniforms", ast::StorageClass::kUniform, &s));
- mod()->AddConstructedType(&s);
+ mod.AddConstructedType(&s);
ast::VariableDecorationList decos;
decos.push_back(std::make_unique<ast::BindingDecoration>(0, Source{}));
decos.push_back(std::make_unique<ast::SetDecoration>(1, Source{}));
coord_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
@@ -345,10 +345,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(struct Uniforms {
vector<float, 4> coord;
};
@@ -397,8 +397,8 @@
decos.push_back(std::make_unique<ast::SetDecoration>(1, Source{}));
coord_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
@@ -417,10 +417,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(RWByteAddressBuffer coord : register(u0);
void frag_main() {
@@ -465,8 +465,8 @@
decos.push_back(std::make_unique<ast::SetDecoration>(1, Source{}));
coord_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
@@ -485,10 +485,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(ByteAddressBuffer coord : register(u0);
void frag_main() {
@@ -533,9 +533,9 @@
decos.push_back(std::make_unique<ast::SetDecoration>(1, Source{}));
coord_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
+ td.RegisterVariableForTesting(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ mod.AddGlobalVariable(std::move(coord_var));
ast::VariableList params;
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
@@ -555,10 +555,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(RWByteAddressBuffer coord : register(u0);
void frag_main() {
@@ -592,13 +592,13 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(0, Source{}));
val_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(foo_var.get());
- td().RegisterVariableForTesting(bar_var.get());
- td().RegisterVariableForTesting(val_var.get());
+ td.RegisterVariableForTesting(foo_var.get());
+ td.RegisterVariableForTesting(bar_var.get());
+ td.RegisterVariableForTesting(val_var.get());
- mod()->AddGlobalVariable(std::move(foo_var));
- mod()->AddGlobalVariable(std::move(bar_var));
- mod()->AddGlobalVariable(std::move(val_var));
+ mod.AddGlobalVariable(std::move(foo_var));
+ mod.AddGlobalVariable(std::move(bar_var));
+ mod.AddGlobalVariable(std::move(val_var));
ast::VariableList params;
params.push_back(std::make_unique<ast::Variable>(
@@ -617,7 +617,7 @@
std::make_unique<ast::IdentifierExpression>("foo")));
sub_func->set_body(std::move(body));
- mod()->AddFunction(std::move(sub_func));
+ mod.AddFunction(std::move(sub_func));
auto func_1 =
std::make_unique<ast::Function>("ep_1", std::move(params), &void_type);
@@ -637,10 +637,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func_1->set_body(std::move(body));
- mod()->AddFunction(std::move(func_1));
+ mod.AddFunction(std::move(func_1));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(struct ep_1_in {
float foo : TEXCOORD0;
};
@@ -680,9 +680,9 @@
ast::Builtin::kFragDepth, Source{}));
depth_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(depth_var.get());
+ td.RegisterVariableForTesting(depth_var.get());
- mod()->AddGlobalVariable(std::move(depth_var));
+ mod.AddGlobalVariable(std::move(depth_var));
ast::VariableList params;
params.push_back(std::make_unique<ast::Variable>(
@@ -695,7 +695,7 @@
std::make_unique<ast::IdentifierExpression>("param")));
sub_func->set_body(std::move(body));
- mod()->AddFunction(std::move(sub_func));
+ mod.AddFunction(std::move(sub_func));
auto func_1 =
std::make_unique<ast::Function>("ep_1", std::move(params), &void_type);
@@ -715,10 +715,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func_1->set_body(std::move(body));
- mod()->AddFunction(std::move(func_1));
+ mod.AddFunction(std::move(func_1));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(struct ep_1_out {
float depth : SV_Depth;
};
@@ -759,11 +759,11 @@
ast::Builtin::kFragDepth, Source{}));
depth_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
- td().RegisterVariableForTesting(depth_var.get());
+ td.RegisterVariableForTesting(coord_var.get());
+ td.RegisterVariableForTesting(depth_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
- mod()->AddGlobalVariable(std::move(depth_var));
+ mod.AddGlobalVariable(std::move(coord_var));
+ mod.AddGlobalVariable(std::move(depth_var));
ast::VariableList params;
params.push_back(std::make_unique<ast::Variable>(
@@ -781,7 +781,7 @@
std::make_unique<ast::IdentifierExpression>("param")));
sub_func->set_body(std::move(body));
- mod()->AddFunction(std::move(sub_func));
+ mod.AddFunction(std::move(sub_func));
auto func_1 =
std::make_unique<ast::Function>("ep_1", std::move(params), &void_type);
@@ -801,10 +801,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func_1->set_body(std::move(body));
- mod()->AddFunction(std::move(func_1));
+ mod.AddFunction(std::move(func_1));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(struct ep_1_in {
vector<float, 4> coord : SV_Position;
};
@@ -842,9 +842,9 @@
decos.push_back(std::make_unique<ast::SetDecoration>(1, Source{}));
coord_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
+ td.RegisterVariableForTesting(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ mod.AddGlobalVariable(std::move(coord_var));
ast::VariableList params;
params.push_back(std::make_unique<ast::Variable>(
@@ -859,7 +859,7 @@
std::make_unique<ast::IdentifierExpression>("x"))));
sub_func->set_body(std::move(body));
- mod()->AddFunction(std::move(sub_func));
+ mod.AddFunction(std::move(sub_func));
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
&void_type);
@@ -881,10 +881,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(cbuffer : register(b0) {
vector<float, 4> coord;
};
@@ -916,9 +916,9 @@
decos.push_back(std::make_unique<ast::SetDecoration>(1, Source{}));
coord_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(coord_var.get());
+ td.RegisterVariableForTesting(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ mod.AddGlobalVariable(std::move(coord_var));
ast::VariableList params;
params.push_back(std::make_unique<ast::Variable>(
@@ -933,7 +933,7 @@
std::make_unique<ast::IdentifierExpression>("x"))));
sub_func->set_body(std::move(body));
- mod()->AddFunction(std::move(sub_func));
+ mod.AddFunction(std::move(sub_func));
auto func = std::make_unique<ast::Function>("frag_main", std::move(params),
&void_type);
@@ -955,10 +955,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(RWByteAddressBuffer coord : register(u0);
float sub_func(float param) {
@@ -985,8 +985,8 @@
decos.push_back(std::make_unique<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(std::move(decos));
- td().RegisterVariableForTesting(bar_var.get());
- mod()->AddGlobalVariable(std::move(bar_var));
+ td.RegisterVariableForTesting(bar_var.get());
+ mod.AddGlobalVariable(std::move(bar_var));
ast::VariableList params;
auto func_1 =
@@ -1015,10 +1015,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func_1->set_body(std::move(body));
- mod()->AddFunction(std::move(func_1));
+ mod.AddFunction(std::move(func_1));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(struct ep_1_out {
float bar : SV_Target1;
};
@@ -1044,9 +1044,9 @@
func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kFragment, Source{}));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(void GeometryShader_tint_0() {
}
@@ -1067,10 +1067,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"([numthreads(1, 1, 1)]
void main() {
return;
@@ -1095,10 +1095,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"([numthreads(2, 4, 6)]
void main() {
return;
@@ -1123,10 +1123,10 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
- gen().increment_indent();
+ mod.AddFunction(std::move(func));
+ gen.increment_indent();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"( void my_func(float a[5]) {
return;
}
@@ -1180,9 +1180,9 @@
decos.push_back(std::make_unique<ast::SetDecoration>(0, Source{}));
data_var->set_decorations(std::move(decos));
- mod()->AddConstructedType(&s);
- td().RegisterVariableForTesting(data_var.get());
- mod()->AddGlobalVariable(std::move(data_var));
+ mod.AddConstructedType(&s);
+ td.RegisterVariableForTesting(data_var.get());
+ mod.AddGlobalVariable(std::move(data_var));
{
ast::VariableList params;
@@ -1202,7 +1202,7 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
}
{
@@ -1223,11 +1223,11 @@
body->append(std::make_unique<ast::ReturnStatement>());
func->set_body(std::move(body));
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
}
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(struct Data {
float d;
};
diff --git a/src/writer/hlsl/generator_impl_identifier_test.cc b/src/writer/hlsl/generator_impl_identifier_test.cc
index bf38e8d..2c0bfd2 100644
--- a/src/writer/hlsl/generator_impl_identifier_test.cc
+++ b/src/writer/hlsl/generator_impl_identifier_test.cc
@@ -25,14 +25,14 @@
TEST_F(HlslGeneratorImplTest_Identifier, EmitIdentifierExpression) {
ast::IdentifierExpression i("foo");
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &i)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &i)) << gen.error();
EXPECT_EQ(result(), "foo");
}
TEST_F(HlslGeneratorImplTest_Identifier,
EmitIdentifierExpression_Single_WithCollision) {
ast::IdentifierExpression i("virtual");
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &i)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &i)) << gen.error();
EXPECT_EQ(result(), "virtual_tint_0");
}
diff --git a/src/writer/hlsl/generator_impl_if_test.cc b/src/writer/hlsl/generator_impl_if_test.cc
index aa2c07a..f531cd6 100644
--- a/src/writer/hlsl/generator_impl_if_test.cc
+++ b/src/writer/hlsl/generator_impl_if_test.cc
@@ -32,9 +32,9 @@
body->append(std::make_unique<ast::ReturnStatement>());
ast::IfStatement i(std::move(cond), std::move(body));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &i)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &i)) << gen.error();
EXPECT_EQ(result(), R"( if (cond) {
return;
}
@@ -57,9 +57,9 @@
ast::IfStatement i(std::move(cond), std::move(body));
i.set_else_statements(std::move(elses));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &i)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &i)) << gen.error();
EXPECT_EQ(result(), R"( if (cond) {
return;
} else {
@@ -84,9 +84,9 @@
ast::IfStatement i(std::move(cond), std::move(body));
i.set_else_statements(std::move(elses));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &i)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &i)) << gen.error();
EXPECT_EQ(result(), R"( if (cond) {
return;
} else {
@@ -116,9 +116,9 @@
ast::IfStatement i(std::move(cond), std::move(body));
i.set_else_statements(std::move(elses));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &i)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &i)) << gen.error();
EXPECT_EQ(result(), R"( if (cond) {
return;
} else {
diff --git a/src/writer/hlsl/generator_impl_import_test.cc b/src/writer/hlsl/generator_impl_import_test.cc
index 4cd8a61..152a64a 100644
--- a/src/writer/hlsl/generator_impl_import_test.cc
+++ b/src/writer/hlsl/generator_impl_import_test.cc
@@ -47,8 +47,7 @@
return out;
}
-using HlslImportData_SingleParamTest =
- TestHelperBase<testing::TestWithParam<HlslImportData>>;
+using HlslImportData_SingleParamTest = TestParamHelper<HlslImportData>;
TEST_P(HlslImportData_SingleParamTest, FloatScalar) {
auto param = GetParam();
@@ -61,8 +60,8 @@
auto ident = std::make_unique<ast::IdentifierExpression>(param.name);
ast::CallExpression expr(std::move(ident), std::move(params));
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitCall(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), std::string(param.hlsl_name) + "(1.00000000f)");
}
INSTANTIATE_TEST_SUITE_P(HlslGeneratorImplTest_Import,
@@ -93,8 +92,7 @@
HlslImportData{"tanh", "tanh"},
HlslImportData{"trunc", "trunc"}));
-using HlslImportData_SingleIntParamTest =
- TestHelperBase<testing::TestWithParam<HlslImportData>>;
+using HlslImportData_SingleIntParamTest = TestParamHelper<HlslImportData>;
TEST_P(HlslImportData_SingleIntParamTest, IntScalar) {
auto param = GetParam();
@@ -108,16 +106,15 @@
std::make_unique<ast::IdentifierExpression>(param.name),
std::move(params));
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitCall(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), std::string(param.hlsl_name) + "(1)");
}
INSTANTIATE_TEST_SUITE_P(HlslGeneratorImplTest_Import,
HlslImportData_SingleIntParamTest,
testing::Values(HlslImportData{"abs", "abs"}));
-using HlslImportData_DualParamTest =
- TestHelperBase<testing::TestWithParam<HlslImportData>>;
+using HlslImportData_DualParamTest = TestParamHelper<HlslImportData>;
TEST_P(HlslImportData_DualParamTest, FloatScalar) {
auto param = GetParam();
@@ -133,8 +130,8 @@
std::make_unique<ast::IdentifierExpression>(param.name),
std::move(params));
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitCall(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(),
std::string(param.hlsl_name) + "(1.00000000f, 2.00000000f)");
}
@@ -148,8 +145,7 @@
HlslImportData{"reflect", "reflect"},
HlslImportData{"step", "step"}));
-using HlslImportData_DualParam_VectorTest =
- TestHelperBase<testing::TestWithParam<HlslImportData>>;
+using HlslImportData_DualParam_VectorTest = TestParamHelper<HlslImportData>;
TEST_P(HlslImportData_DualParam_VectorTest, FloatVector) {
auto param = GetParam();
@@ -181,8 +177,8 @@
std::make_unique<ast::IdentifierExpression>(param.name),
std::move(params));
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitCall(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(),
std::string(param.hlsl_name) +
"(vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f), "
@@ -192,8 +188,7 @@
HlslImportData_DualParam_VectorTest,
testing::Values(HlslImportData{"cross", "cross"}));
-using HlslImportData_DualParam_Int_Test =
- TestHelperBase<testing::TestWithParam<HlslImportData>>;
+using HlslImportData_DualParam_Int_Test = TestParamHelper<HlslImportData>;
TEST_P(HlslImportData_DualParam_Int_Test, IntScalar) {
auto param = GetParam();
@@ -209,8 +204,8 @@
std::make_unique<ast::IdentifierExpression>(param.name),
std::move(params));
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitCall(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), std::string(param.hlsl_name) + "(1, 2)");
}
INSTANTIATE_TEST_SUITE_P(HlslGeneratorImplTest_Import,
@@ -218,8 +213,7 @@
testing::Values(HlslImportData{"max", "max"},
HlslImportData{"min", "min"}));
-using HlslImportData_TripleParamTest =
- TestHelperBase<testing::TestWithParam<HlslImportData>>;
+using HlslImportData_TripleParamTest = TestParamHelper<HlslImportData>;
TEST_P(HlslImportData_TripleParamTest, FloatScalar) {
auto param = GetParam();
@@ -237,8 +231,8 @@
std::make_unique<ast::IdentifierExpression>(param.name),
std::move(params));
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitCall(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), std::string(param.hlsl_name) +
"(1.00000000f, 2.00000000f, 3.00000000f)");
}
@@ -254,8 +248,7 @@
FAIL();
}
-using HlslImportData_TripleParam_Int_Test =
- TestHelperBase<testing::TestWithParam<HlslImportData>>;
+using HlslImportData_TripleParam_Int_Test = TestParamHelper<HlslImportData>;
TEST_P(HlslImportData_TripleParam_Int_Test, IntScalar) {
auto param = GetParam();
@@ -273,8 +266,8 @@
std::make_unique<ast::IdentifierExpression>(param.name),
std::move(params));
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitCall(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), std::string(param.hlsl_name) + "(1, 2, 3)");
}
INSTANTIATE_TEST_SUITE_P(HlslGeneratorImplTest_Import,
@@ -295,12 +288,12 @@
std::make_unique<ast::IdentifierExpression>("determinant"),
std::move(params));
- mod()->AddGlobalVariable(std::move(var));
+ mod.AddGlobalVariable(std::move(var));
// Register the global
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitCall(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), std::string("determinant(var)"));
}
diff --git a/src/writer/hlsl/generator_impl_intrinsic_test.cc b/src/writer/hlsl/generator_impl_intrinsic_test.cc
index 78db9f9..37e4eba 100644
--- a/src/writer/hlsl/generator_impl_intrinsic_test.cc
+++ b/src/writer/hlsl/generator_impl_intrinsic_test.cc
@@ -36,10 +36,10 @@
out << data.hlsl_name;
return out;
}
-using HlslIntrinsicTest = TestHelperBase<testing::TestWithParam<IntrinsicData>>;
+using HlslIntrinsicTest = TestParamHelper<IntrinsicData>;
TEST_P(HlslIntrinsicTest, Emit) {
auto param = GetParam();
- EXPECT_EQ(gen().generate_intrinsic_name(param.intrinsic), param.hlsl_name);
+ EXPECT_EQ(gen.generate_intrinsic_name(param.intrinsic), param.hlsl_name);
}
INSTANTIATE_TEST_SUITE_P(
HlslGeneratorImplTest_Intrinsic,
@@ -89,22 +89,22 @@
std::make_unique<ast::IdentifierExpression>("outer_product"),
std::move(params));
- td().RegisterVariableForTesting(a.get());
- td().RegisterVariableForTesting(b.get());
+ td.RegisterVariableForTesting(a.get());
+ td.RegisterVariableForTesting(b.get());
- mod()->AddGlobalVariable(std::move(a));
- mod()->AddGlobalVariable(std::move(b));
+ mod.AddGlobalVariable(std::move(a));
+ mod.AddGlobalVariable(std::move(b));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&call)) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&call)) << td.error();
- gen().increment_indent();
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &call)) << gen().error();
+ gen.increment_indent();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &call)) << gen.error();
EXPECT_EQ(result(), " float3x2(a * b[0], a * b[1], a * b[2])");
}
TEST_F(HlslGeneratorImplTest_Intrinsic, Intrinsic_Bad_Name) {
- EXPECT_EQ(gen().generate_intrinsic_name(ast::Intrinsic::kNone), "");
+ EXPECT_EQ(gen.generate_intrinsic_name(ast::Intrinsic::kNone), "");
}
TEST_F(HlslGeneratorImplTest_Intrinsic, Intrinsic_Call) {
@@ -121,13 +121,13 @@
ast::Variable v1("param1", ast::StorageClass::kFunction, &vec);
ast::Variable v2("param2", ast::StorageClass::kFunction, &vec);
- td().RegisterVariableForTesting(&v1);
- td().RegisterVariableForTesting(&v2);
+ td.RegisterVariableForTesting(&v1);
+ td.RegisterVariableForTesting(&v2);
- ASSERT_TRUE(td().DetermineResultType(&call)) << td().error();
+ ASSERT_TRUE(td.DetermineResultType(&call)) << td.error();
- gen().increment_indent();
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &call)) << gen().error();
+ gen.increment_indent();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &call)) << gen.error();
EXPECT_EQ(result(), " dot(param1, param2)");
}
diff --git a/src/writer/hlsl/generator_impl_loop_test.cc b/src/writer/hlsl/generator_impl_loop_test.cc
index 576b7b2..7496064 100644
--- a/src/writer/hlsl/generator_impl_loop_test.cc
+++ b/src/writer/hlsl/generator_impl_loop_test.cc
@@ -38,9 +38,9 @@
body->append(std::make_unique<ast::DiscardStatement>());
ast::LoopStatement l(std::move(body), {});
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &l)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &l)) << gen.error();
EXPECT_EQ(result(), R"( for(;;) {
discard;
}
@@ -55,9 +55,9 @@
continuing->append(std::make_unique<ast::ReturnStatement>());
ast::LoopStatement l(std::move(body), std::move(continuing));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &l)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &l)) << gen.error();
EXPECT_EQ(result(), R"( {
bool tint_hlsl_is_first_1 = true;
for(;;) {
@@ -95,9 +95,9 @@
std::move(lhs), std::move(rhs)));
ast::LoopStatement outer(std::move(body), std::move(continuing));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &outer)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &outer)) << gen.error();
EXPECT_EQ(result(), R"( {
bool tint_hlsl_is_first_1 = true;
for(;;) {
@@ -165,9 +165,9 @@
std::move(lhs), std::move(rhs)));
ast::LoopStatement outer(std::move(body), std::move(continuing));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &outer)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &outer)) << gen.error();
EXPECT_EQ(result(), R"( {
bool tint_hlsl_is_first_1 = true;
float lhs;
diff --git a/src/writer/hlsl/generator_impl_member_accessor_test.cc b/src/writer/hlsl/generator_impl_member_accessor_test.cc
index 5a345c2..57112e8 100644
--- a/src/writer/hlsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_member_accessor_test.cc
@@ -69,12 +69,12 @@
ast::MemberAccessorExpression expr(std::move(str), std::move(mem));
- td().RegisterVariableForTesting(str_var.get());
- gen().register_global(str_var.get());
- mod()->AddGlobalVariable(std::move(str_var));
+ td.RegisterVariableForTesting(str_var.get());
+ gen.register_global(str_var.get());
+ mod.AddGlobalVariable(std::move(str_var));
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "str.mem");
}
@@ -117,14 +117,14 @@
std::make_unique<ast::IdentifierExpression>("data"),
std::make_unique<ast::IdentifierExpression>("b"));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr));
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asfloat(data.Load(4))");
}
@@ -167,14 +167,14 @@
std::make_unique<ast::IdentifierExpression>("data"),
std::make_unique<ast::IdentifierExpression>("a"));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr));
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asint(data.Load(0))");
}
TEST_F(HlslGeneratorImplTest_MemberAccessor,
@@ -225,17 +225,17 @@
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- td().RegisterVariableForTesting(coord_var.get());
- td().RegisterVariableForTesting(b_var.get());
- gen().register_global(coord_var.get());
- gen().register_global(b_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
- mod()->AddGlobalVariable(std::move(b_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ td.RegisterVariableForTesting(b_var.get());
+ gen.register_global(coord_var.get());
+ gen.register_global(b_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
+ mod.AddGlobalVariable(std::move(b_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&assign));
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&assign));
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(result(), R"(matrix<float, 3, 2> _tint_tmp = b;
data.Store3(4 + 0, asuint(_tint_tmp[0]));
data.Store3(4 + 16, asuint(_tint_tmp[1]));
@@ -289,14 +289,14 @@
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&assign));
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&assign));
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(
result(),
R"(matrix<float, 3, 2> _tint_tmp = matrix<float, 3, 2>(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
@@ -346,14 +346,14 @@
std::make_unique<ast::IdentifierExpression>("data"),
std::make_unique<ast::IdentifierExpression>("a"));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr));
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(),
"asfloat(matrix<uint, 2, 3>(data.Load2(4 + 0), data.Load2(4 + 8), "
"data.Load2(4 + 16)))");
@@ -403,14 +403,14 @@
std::make_unique<ast::IdentifierExpression>("data"),
std::make_unique<ast::IdentifierExpression>("a"));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr));
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(
result(),
"asfloat(matrix<uint, 3, 2>(data.Load3(4 + 0), data.Load3(4 + 16)))");
@@ -451,14 +451,14 @@
std::make_unique<ast::IdentifierExpression>("data"),
std::make_unique<ast::IdentifierExpression>("a"));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr));
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(),
"asfloat(matrix<uint, 3, 3>(data.Load3(0 + 0), data.Load3(0 + 16), "
"data.Load3(0 + 32)))");
@@ -510,14 +510,14 @@
std::make_unique<ast::ScalarConstructorExpression>(
std::make_unique<ast::SintLiteral>(&i32, 1)));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr));
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asfloat(data.Load((4 * 1) + (16 * 2) + 16))");
}
@@ -560,14 +560,14 @@
std::make_unique<ast::ScalarConstructorExpression>(
std::make_unique<ast::SintLiteral>(&i32, 2)));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asint(data.Load((4 * 2) + 0))");
}
@@ -618,14 +618,14 @@
std::make_unique<ast::ScalarConstructorExpression>(
std::make_unique<ast::SintLiteral>(&i32, 3))));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
- ASSERT_TRUE(td().DetermineResultType(&expr)) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asint(data.Load((4 * ((2 + 4) - 3)) + 0))");
}
@@ -665,11 +665,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &s));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
auto lhs = std::make_unique<ast::MemberAccessorExpression>(
std::make_unique<ast::IdentifierExpression>("data"),
@@ -678,8 +678,8 @@
std::make_unique<ast::FloatLiteral>(&f32, 2.0f));
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- ASSERT_TRUE(td().DetermineResultType(&assign));
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&assign));
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(result(), R"(data.Store(4, asuint(2.00000000f));
)");
}
@@ -717,11 +717,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &s));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
auto lhs = std::make_unique<ast::ArrayAccessorExpression>(
std::make_unique<ast::MemberAccessorExpression>(
@@ -733,8 +733,8 @@
std::make_unique<ast::SintLiteral>(&i32, 2));
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- ASSERT_TRUE(td().DetermineResultType(&assign)) << td().error();
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&assign)) << td.error();
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(result(), R"(data.Store((4 * 2) + 0, asuint(2));
)");
}
@@ -775,11 +775,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &s));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
auto lhs = std::make_unique<ast::MemberAccessorExpression>(
std::make_unique<ast::IdentifierExpression>("data"),
@@ -788,8 +788,8 @@
std::make_unique<ast::SintLiteral>(&i32, 2));
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- ASSERT_TRUE(td().DetermineResultType(&assign));
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&assign));
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(result(), R"(data.Store(0, asuint(2));
)");
}
@@ -832,18 +832,18 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &s));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
ast::MemberAccessorExpression expr(
std::make_unique<ast::IdentifierExpression>("data"),
std::make_unique<ast::IdentifierExpression>("b"));
- ASSERT_TRUE(td().DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asfloat(data.Load3(16))");
}
@@ -885,11 +885,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &s));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
auto lit1 = std::make_unique<ast::FloatLiteral>(&f32, 1.f);
auto lit2 = std::make_unique<ast::FloatLiteral>(&f32, 2.f);
@@ -910,8 +910,8 @@
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- ASSERT_TRUE(td().DetermineResultType(&assign));
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&assign));
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(
result(),
R"(data.Store3(16, asuint(vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f)));
@@ -974,11 +974,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &pre_struct));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
ast::MemberAccessorExpression expr(
std::make_unique<ast::ArrayAccessorExpression>(
@@ -989,8 +989,8 @@
std::make_unique<ast::SintLiteral>(&i32, 2))),
std::make_unique<ast::IdentifierExpression>("b"));
- ASSERT_TRUE(td().DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asfloat(data.Load3(16 + (32 * 2) + 0))");
}
@@ -1050,11 +1050,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &pre_struct));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
ast::MemberAccessorExpression expr(
std::make_unique<ast::MemberAccessorExpression>(
@@ -1067,8 +1067,8 @@
std::make_unique<ast::IdentifierExpression>("b")),
std::make_unique<ast::IdentifierExpression>("xy"));
- ASSERT_TRUE(td().DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asfloat(data.Load3(16 + (32 * 2) + 0)).xy");
}
@@ -1129,11 +1129,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &pre_struct));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
ast::MemberAccessorExpression expr(
std::make_unique<ast::MemberAccessorExpression>(
@@ -1146,8 +1146,8 @@
std::make_unique<ast::IdentifierExpression>("b")),
std::make_unique<ast::IdentifierExpression>("g"));
- ASSERT_TRUE(td().DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asfloat(data.Load((4 * 1) + 16 + (32 * 2) + 0))");
}
@@ -1207,11 +1207,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &pre_struct));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
ast::ArrayAccessorExpression expr(
std::make_unique<ast::MemberAccessorExpression>(
@@ -1225,8 +1225,8 @@
std::make_unique<ast::ScalarConstructorExpression>(
std::make_unique<ast::SintLiteral>(&i32, 1)));
- ASSERT_TRUE(td().DetermineResultType(&expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &expr)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&expr));
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &expr)) << gen.error();
EXPECT_EQ(result(), "asfloat(data.Load((4 * 1) + 16 + (32 * 2) + 0))");
}
@@ -1286,11 +1286,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &pre_struct));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
auto lhs = std::make_unique<ast::MemberAccessorExpression>(
std::make_unique<ast::ArrayAccessorExpression>(
@@ -1317,8 +1317,8 @@
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- ASSERT_TRUE(td().DetermineResultType(&assign));
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&assign));
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(
result(),
R"(data.Store3(16 + (32 * 2) + 0, asuint(vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f)));
@@ -1381,11 +1381,11 @@
std::make_unique<ast::DecoratedVariable>(std::make_unique<ast::Variable>(
"data", ast::StorageClass::kStorageBuffer, &pre_struct));
- td().RegisterVariableForTesting(coord_var.get());
- gen().register_global(coord_var.get());
- mod()->AddGlobalVariable(std::move(coord_var));
+ td.RegisterVariableForTesting(coord_var.get());
+ gen.register_global(coord_var.get());
+ mod.AddGlobalVariable(std::move(coord_var));
- ASSERT_TRUE(td().Determine()) << td().error();
+ ASSERT_TRUE(td.Determine()) << td.error();
auto lhs = std::make_unique<ast::MemberAccessorExpression>(
std::make_unique<ast::MemberAccessorExpression>(
@@ -1403,8 +1403,8 @@
ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
- ASSERT_TRUE(td().DetermineResultType(&assign));
- ASSERT_TRUE(gen().EmitStatement(out(), &assign)) << gen().error();
+ ASSERT_TRUE(td.DetermineResultType(&assign));
+ ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
EXPECT_EQ(result(),
R"(data.Store((4 * 1) + 16 + (32 * 2) + 0, asuint(1.00000000f));
)");
diff --git a/src/writer/hlsl/generator_impl_module_constant_test.cc b/src/writer/hlsl/generator_impl_module_constant_test.cc
index a63b7db..93dd49c 100644
--- a/src/writer/hlsl/generator_impl_module_constant_test.cc
+++ b/src/writer/hlsl/generator_impl_module_constant_test.cc
@@ -51,8 +51,7 @@
var->set_constructor(
std::make_unique<ast::TypeConstructorExpression>(&ary, std::move(exprs)));
- ASSERT_TRUE(gen().EmitProgramConstVariable(out(), var.get()))
- << gen().error();
+ ASSERT_TRUE(gen.EmitProgramConstVariable(out, var.get())) << gen.error();
EXPECT_EQ(
result(),
"static const float pos[3] = {1.00000000f, 2.00000000f, 3.00000000f};\n");
@@ -71,8 +70,7 @@
var->set_constructor(std::make_unique<ast::ScalarConstructorExpression>(
std::make_unique<ast::FloatLiteral>(&f32, 3.0f)));
- ASSERT_TRUE(gen().EmitProgramConstVariable(out(), var.get()))
- << gen().error();
+ ASSERT_TRUE(gen.EmitProgramConstVariable(out, var.get())) << gen.error();
EXPECT_EQ(result(), R"(#ifndef WGSL_SPEC_CONSTANT_23
#define WGSL_SPEC_CONSTANT_23 3.00000000f
#endif
@@ -92,8 +90,7 @@
var->set_decorations(std::move(decos));
var->set_is_const(true);
- ASSERT_TRUE(gen().EmitProgramConstVariable(out(), var.get()))
- << gen().error();
+ ASSERT_TRUE(gen.EmitProgramConstVariable(out, var.get())) << gen.error();
EXPECT_EQ(result(), R"(#ifndef WGSL_SPEC_CONSTANT_23
#error spec constant required for constant id 23
#endif
diff --git a/src/writer/hlsl/generator_impl_return_test.cc b/src/writer/hlsl/generator_impl_return_test.cc
index d3b785a..ee90420 100644
--- a/src/writer/hlsl/generator_impl_return_test.cc
+++ b/src/writer/hlsl/generator_impl_return_test.cc
@@ -29,18 +29,18 @@
TEST_F(HlslGeneratorImplTest_Return, Emit_Return) {
ast::ReturnStatement r;
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &r)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &r)) << gen.error();
EXPECT_EQ(result(), " return;\n");
}
TEST_F(HlslGeneratorImplTest_Return, Emit_ReturnWithValue) {
auto expr = std::make_unique<ast::IdentifierExpression>("expr");
ast::ReturnStatement r(std::move(expr));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &r)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &r)) << gen.error();
EXPECT_EQ(result(), " return expr;\n");
}
diff --git a/src/writer/hlsl/generator_impl_switch_test.cc b/src/writer/hlsl/generator_impl_switch_test.cc
index c8e7771..3768c0d 100644
--- a/src/writer/hlsl/generator_impl_switch_test.cc
+++ b/src/writer/hlsl/generator_impl_switch_test.cc
@@ -52,9 +52,9 @@
auto cond = std::make_unique<ast::IdentifierExpression>("cond");
ast::SwitchStatement s(std::move(cond), std::move(body));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &s)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &s)) << gen.error();
EXPECT_EQ(result(), R"( switch(cond) {
case 5: {
break;
diff --git a/src/writer/hlsl/generator_impl_test.cc b/src/writer/hlsl/generator_impl_test.cc
index 26b7003..22a6613 100644
--- a/src/writer/hlsl/generator_impl_test.cc
+++ b/src/writer/hlsl/generator_impl_test.cc
@@ -31,9 +31,9 @@
ast::type::VoidType void_type;
auto func = std::make_unique<ast::Function>("my_func", ast::VariableList{},
&void_type);
- mod()->AddFunction(std::move(func));
+ mod.AddFunction(std::move(func));
- ASSERT_TRUE(gen().Generate(out())) << gen().error();
+ ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_EQ(result(), R"(void my_func() {
}
@@ -41,22 +41,22 @@
}
TEST_F(HlslGeneratorImplTest, InputStructName) {
- ASSERT_EQ(gen().generate_name("func_main_in"), "func_main_in");
+ ASSERT_EQ(gen.generate_name("func_main_in"), "func_main_in");
}
TEST_F(HlslGeneratorImplTest, InputStructName_ConflictWithExisting) {
// Register the struct name as existing.
- auto* namer = gen().namer_for_testing();
+ auto* namer = gen.namer_for_testing();
namer->NameFor("func_main_out");
- ASSERT_EQ(gen().generate_name("func_main_out"), "func_main_out_0");
+ ASSERT_EQ(gen.generate_name("func_main_out"), "func_main_out_0");
}
TEST_F(HlslGeneratorImplTest, NameConflictWith_InputStructName) {
- ASSERT_EQ(gen().generate_name("func_main_in"), "func_main_in");
+ ASSERT_EQ(gen.generate_name("func_main_in"), "func_main_in");
ast::IdentifierExpression ident("func_main_in");
- ASSERT_TRUE(gen().EmitIdentifier(pre(), out(), &ident));
+ ASSERT_TRUE(gen.EmitIdentifier(pre, out, &ident));
EXPECT_EQ(result(), "func_main_in_0");
}
@@ -68,11 +68,10 @@
out << data.builtin;
return out;
}
-using HlslBuiltinConversionTest =
- TestHelperBase<testing::TestWithParam<HlslBuiltinData>>;
+using HlslBuiltinConversionTest = TestParamHelper<HlslBuiltinData>;
TEST_P(HlslBuiltinConversionTest, Emit) {
auto params = GetParam();
- EXPECT_EQ(gen().builtin_to_attribute(params.builtin),
+ EXPECT_EQ(gen.builtin_to_attribute(params.builtin),
std::string(params.attribute_name));
}
INSTANTIATE_TEST_SUITE_P(
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index 8cac130..ecab2d4 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -47,7 +47,7 @@
ast::type::F32Type f32;
ast::type::AliasType alias("alias", &f32);
- ASSERT_TRUE(gen().EmitType(out(), &alias, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &alias, "")) << gen.error();
EXPECT_EQ(result(), "alias");
}
@@ -55,7 +55,7 @@
ast::type::F32Type f32;
ast::type::AliasType alias("bool", &f32);
- ASSERT_TRUE(gen().EmitType(out(), &alias, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &alias, "")) << gen.error();
EXPECT_EQ(result(), "bool_tint_0");
}
@@ -63,7 +63,7 @@
ast::type::BoolType b;
ast::type::ArrayType a(&b, 4);
- ASSERT_TRUE(gen().EmitType(out(), &a, "ary")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &a, "ary")) << gen.error();
EXPECT_EQ(result(), "bool ary[4]");
}
@@ -72,7 +72,7 @@
ast::type::ArrayType a(&b, 4);
ast::type::ArrayType c(&a, 5);
- ASSERT_TRUE(gen().EmitType(out(), &c, "ary")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &c, "ary")) << gen.error();
EXPECT_EQ(result(), "bool ary[5][4]");
}
@@ -84,7 +84,7 @@
ast::type::ArrayType c(&a, 5);
ast::type::ArrayType d(&c);
- ASSERT_TRUE(gen().EmitType(out(), &c, "ary")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &c, "ary")) << gen.error();
EXPECT_EQ(result(), "bool ary[5][4][1]");
}
@@ -94,7 +94,7 @@
ast::type::ArrayType c(&a, 5);
ast::type::ArrayType d(&c, 6);
- ASSERT_TRUE(gen().EmitType(out(), &d, "ary")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &d, "ary")) << gen.error();
EXPECT_EQ(result(), "bool ary[6][5][4]");
}
@@ -102,7 +102,7 @@
ast::type::BoolType b;
ast::type::ArrayType a(&b, 4);
- ASSERT_TRUE(gen().EmitType(out(), &a, "bool")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &a, "bool")) << gen.error();
EXPECT_EQ(result(), "bool bool_tint_0[4]");
}
@@ -110,7 +110,7 @@
ast::type::BoolType b;
ast::type::ArrayType a(&b, 4);
- ASSERT_TRUE(gen().EmitType(out(), &a, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &a, "")) << gen.error();
EXPECT_EQ(result(), "bool[4]");
}
@@ -118,7 +118,7 @@
ast::type::BoolType b;
ast::type::ArrayType a(&b);
- ASSERT_TRUE(gen().EmitType(out(), &a, "ary")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &a, "ary")) << gen.error();
EXPECT_EQ(result(), "bool ary[]");
}
@@ -127,28 +127,28 @@
ast::type::BoolType b;
ast::type::ArrayType a(&b);
- ASSERT_TRUE(gen().EmitType(out(), &a, "double")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &a, "double")) << gen.error();
EXPECT_EQ(result(), "bool double_tint_0[]");
}
TEST_F(HlslGeneratorImplTest_Type, EmitType_Bool) {
ast::type::BoolType b;
- ASSERT_TRUE(gen().EmitType(out(), &b, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &b, "")) << gen.error();
EXPECT_EQ(result(), "bool");
}
TEST_F(HlslGeneratorImplTest_Type, EmitType_F32) {
ast::type::F32Type f32;
- ASSERT_TRUE(gen().EmitType(out(), &f32, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &f32, "")) << gen.error();
EXPECT_EQ(result(), "float");
}
TEST_F(HlslGeneratorImplTest_Type, EmitType_I32) {
ast::type::I32Type i32;
- ASSERT_TRUE(gen().EmitType(out(), &i32, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &i32, "")) << gen.error();
EXPECT_EQ(result(), "int");
}
@@ -156,7 +156,7 @@
ast::type::F32Type f32;
ast::type::MatrixType m(&f32, 3, 2);
- ASSERT_TRUE(gen().EmitType(out(), &m, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &m, "")) << gen.error();
EXPECT_EQ(result(), "matrix<float, 3, 2>");
}
@@ -165,7 +165,7 @@
ast::type::F32Type f32;
ast::type::PointerType p(&f32, ast::StorageClass::kWorkgroup);
- ASSERT_TRUE(gen().EmitType(out(), &p, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &p, "")) << gen.error();
EXPECT_EQ(result(), "float*");
}
@@ -188,7 +188,7 @@
ast::type::StructType s("S", std::move(str));
- ASSERT_TRUE(gen().EmitStructType(out(), &s, "S")) << gen().error();
+ ASSERT_TRUE(gen.EmitStructType(out, &s, "S")) << gen.error();
EXPECT_EQ(result(), R"(struct S {
int a;
float b;
@@ -215,7 +215,7 @@
ast::type::StructType s("S", std::move(str));
- ASSERT_TRUE(gen().EmitType(out(), &s, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &s, "")) << gen.error();
EXPECT_EQ(result(), "S");
}
@@ -246,7 +246,7 @@
ast::type::StructType s("S", std::move(str));
- ASSERT_TRUE(gen().EmitType(out(), &s, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &s, "")) << gen.error();
EXPECT_EQ(result(), R"(struct {
int8_t pad_0[4];
int a;
@@ -274,7 +274,7 @@
ast::type::StructType s("S", std::move(str));
- ASSERT_TRUE(gen().EmitStructType(out(), &s, "S")) << gen().error();
+ ASSERT_TRUE(gen.EmitStructType(out, &s, "S")) << gen.error();
EXPECT_EQ(result(), R"(struct S {
int double_tint_0;
float float_tint_0;
@@ -305,7 +305,7 @@
ast::type::StructType s("S", std::move(str));
- ASSERT_TRUE(gen().EmitStructType(out(), &s, "B")) << gen().error();
+ ASSERT_TRUE(gen.EmitStructType(out, &s, "B")) << gen.error();
EXPECT_EQ(result(), R"(struct B {
int a;
float b;
@@ -315,7 +315,7 @@
TEST_F(HlslGeneratorImplTest_Type, EmitType_U32) {
ast::type::U32Type u32;
- ASSERT_TRUE(gen().EmitType(out(), &u32, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &u32, "")) << gen.error();
EXPECT_EQ(result(), "uint");
}
@@ -323,28 +323,28 @@
ast::type::F32Type f32;
ast::type::VectorType v(&f32, 3);
- ASSERT_TRUE(gen().EmitType(out(), &v, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &v, "")) << gen.error();
EXPECT_EQ(result(), "vector<float, 3>");
}
TEST_F(HlslGeneratorImplTest_Type, EmitType_Void) {
ast::type::VoidType v;
- ASSERT_TRUE(gen().EmitType(out(), &v, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &v, "")) << gen.error();
EXPECT_EQ(result(), "void");
}
TEST_F(HlslGeneratorImplTest_Type, EmitSampler) {
ast::type::SamplerType sampler(ast::type::SamplerKind::kSampler);
- ASSERT_TRUE(gen().EmitType(out(), &sampler, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &sampler, "")) << gen.error();
EXPECT_EQ(result(), "SamplerState");
}
TEST_F(HlslGeneratorImplTest_Type, EmitSamplerComparison) {
ast::type::SamplerType sampler(ast::type::SamplerKind::kComparisonSampler);
- ASSERT_TRUE(gen().EmitType(out(), &sampler, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &sampler, "")) << gen.error();
EXPECT_EQ(result(), "SamplerComparisonState");
}
@@ -356,14 +356,13 @@
out << data.dim;
return out;
}
-using HlslDepthtexturesTest =
- TestHelperBase<testing::TestWithParam<HlslDepthTextureData>>;
+using HlslDepthtexturesTest = TestParamHelper<HlslDepthTextureData>;
TEST_P(HlslDepthtexturesTest, Emit) {
auto params = GetParam();
ast::type::DepthTextureType s(params.dim);
- ASSERT_TRUE(gen().EmitType(out(), &s, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &s, "")) << gen.error();
EXPECT_EQ(result(), params.result);
}
INSTANTIATE_TEST_SUITE_P(
@@ -385,15 +384,14 @@
out << data.dim;
return out;
}
-using HlslSampledtexturesTest =
- TestHelperBase<testing::TestWithParam<HlslTextureData>>;
+using HlslSampledtexturesTest = TestParamHelper<HlslTextureData>;
TEST_P(HlslSampledtexturesTest, Emit) {
auto params = GetParam();
ast::type::F32Type f32;
ast::type::SampledTextureType s(params.dim, &f32);
- ASSERT_TRUE(gen().EmitType(out(), &s, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &s, "")) << gen.error();
EXPECT_EQ(result(), params.result);
}
INSTANTIATE_TEST_SUITE_P(
@@ -415,7 +413,7 @@
ast::type::F32Type f32;
ast::type::MultisampledTextureType s(ast::type::TextureDimension::k2d, &f32);
- ASSERT_TRUE(gen().EmitType(out(), &s, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &s, "")) << gen.error();
EXPECT_EQ(result(), "Texture2D");
}
@@ -429,8 +427,7 @@
out << data.dim << (data.ro ? "ReadOnly" : "WriteOnly");
return out;
}
-using HlslStoragetexturesTest =
- TestHelperBase<testing::TestWithParam<HlslStorageTextureData>>;
+using HlslStoragetexturesTest = TestParamHelper<HlslStorageTextureData>;
TEST_P(HlslStoragetexturesTest, Emit) {
auto params = GetParam();
@@ -439,7 +436,7 @@
: ast::AccessControl::kWriteOnly,
ast::type::ImageFormat::kR16Float);
- ASSERT_TRUE(gen().EmitType(out(), &s, "")) << gen().error();
+ ASSERT_TRUE(gen.EmitType(out, &s, "")) << gen.error();
EXPECT_EQ(result(), params.result);
}
INSTANTIATE_TEST_SUITE_P(
diff --git a/src/writer/hlsl/generator_impl_unary_op_test.cc b/src/writer/hlsl/generator_impl_unary_op_test.cc
index b723132..751e23f 100644
--- a/src/writer/hlsl/generator_impl_unary_op_test.cc
+++ b/src/writer/hlsl/generator_impl_unary_op_test.cc
@@ -33,14 +33,14 @@
out << data.op;
return out;
}
-using HlslUnaryOpTest = TestHelperBase<testing::TestWithParam<UnaryOpData>>;
+using HlslUnaryOpTest = TestParamHelper<UnaryOpData>;
TEST_P(HlslUnaryOpTest, Emit) {
auto params = GetParam();
auto expr = std::make_unique<ast::IdentifierExpression>("expr");
ast::UnaryOpExpression op(params.op, std::move(expr));
- ASSERT_TRUE(gen().EmitExpression(pre(), out(), &op)) << gen().error();
+ ASSERT_TRUE(gen.EmitExpression(pre, out, &op)) << gen.error();
EXPECT_EQ(result(), std::string(params.name) + "(expr)");
}
INSTANTIATE_TEST_SUITE_P(HlslGeneratorImplTest_UnaryOp,
diff --git a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
index f18e466..81df764 100644
--- a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
@@ -38,9 +38,9 @@
std::make_unique<ast::Variable>("a", ast::StorageClass::kNone, &f32);
ast::VariableDeclStatement stmt(std::move(var));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), " float a;\n");
}
@@ -51,9 +51,9 @@
var->set_is_const(true);
ast::VariableDeclStatement stmt(std::move(var));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), " const float a;\n");
}
@@ -65,9 +65,9 @@
std::make_unique<ast::Variable>("a", ast::StorageClass::kNone, &ary);
ast::VariableDeclStatement stmt(std::move(var));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), " float a[5];\n");
}
@@ -78,9 +78,9 @@
std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &f32);
ast::VariableDeclStatement stmt(std::move(var));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), " float a;\n");
}
@@ -90,9 +90,9 @@
std::make_unique<ast::Variable>("a", ast::StorageClass::kPrivate, &f32);
ast::VariableDeclStatement stmt(std::move(var));
- gen().increment_indent();
+ gen.increment_indent();
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), " float a;\n");
}
@@ -106,7 +106,7 @@
var->set_constructor(std::move(ident));
ast::VariableDeclStatement stmt(std::move(var));
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), R"(float a = initializer;
)");
}
@@ -125,7 +125,7 @@
var->set_constructor(std::move(zero_vec));
ast::VariableDeclStatement stmt(std::move(var));
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), R"(vector<float, 3> a = vector<float, 3>(0.0f);
)");
}
@@ -144,7 +144,7 @@
var->set_constructor(std::move(zero_mat));
ast::VariableDeclStatement stmt(std::move(var));
- ASSERT_TRUE(gen().EmitStatement(out(), &stmt)) << gen().error();
+ ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(
result(),
R"(matrix<float, 3, 2> a = matrix<float, 3, 2>(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/src/writer/hlsl/test_helper.h b/src/writer/hlsl/test_helper.h
index 93dcca2..d83cee1 100644
--- a/src/writer/hlsl/test_helper.h
+++ b/src/writer/hlsl/test_helper.h
@@ -32,40 +32,34 @@
template <typename T>
class TestHelperBase : public T {
public:
- TestHelperBase() : td_(&ctx_, &mod_), impl_(&mod_) {}
+ TestHelperBase() : td(&ctx, &mod), gen(&ctx, &mod) {}
~TestHelperBase() = default;
- /// @returns the generator implementation
- GeneratorImpl& gen() { return impl_; }
-
- /// @returns the module
- ast::Module* mod() { return &mod_; }
-
- /// @returns the type determiner
- TypeDeterminer& td() { return td_; }
-
- /// @returns the output stream
- std::ostream& out() { return out_; }
-
- /// @returns the pre stream
- std::ostream& pre() { return pre_; }
-
/// @returns the result string
- std::string result() const { return out_.str(); }
+ std::string result() const { return out.str(); }
/// @returns the pre result string
- std::string pre_result() const { return pre_.str(); }
+ std::string pre_result() const { return pre.str(); }
- private:
- Context ctx_;
- ast::Module mod_;
- TypeDeterminer td_;
- GeneratorImpl impl_;
- std::ostringstream out_;
- std::ostringstream pre_;
+ /// The context
+ Context ctx;
+ /// The module
+ ast::Module mod;
+ /// The type determiner
+ TypeDeterminer td;
+ /// The generator
+ GeneratorImpl gen;
+
+ /// The output stream
+ std::ostringstream out;
+ /// The pre-output stream
+ std::ostringstream pre;
};
using TestHelper = TestHelperBase<testing::Test>;
+template <typename T>
+using TestParamHelper = TestHelperBase<testing::TestWithParam<T>>;
+
} // namespace hlsl
} // namespace writer
} // namespace tint