[hlsl-writer] Refactor output emission.
This CL updates the HLSL backend to take the output stream as a
parameter. This is needed because there are cases where we have to
generate the resulting stream out of order. This will allow that to
happen.
Bug: tint:7
Change-Id: Id1877a07e536a84da0555f207d1030588d44c034
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27440
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/writer/hlsl/generator_impl_array_accessor_test.cc b/src/writer/hlsl/generator_impl_array_accessor_test.cc
index ecd5310..ce7371d 100644
--- a/src/writer/hlsl/generator_impl_array_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_array_accessor_test.cc
@@ -14,23 +14,23 @@
#include <memory>
-#include "gtest/gtest.h"
#include "src/ast/array_accessor_expression.h"
#include "src/ast/identifier_expression.h"
#include "src/ast/module.h"
#include "src/ast/scalar_constructor_expression.h"
#include "src/ast/sint_literal.h"
#include "src/ast/type/i32_type.h"
-#include "src/writer/hlsl/generator_impl.h"
+#include "src/writer/hlsl/test_helper.h"
namespace tint {
namespace writer {
namespace hlsl {
namespace {
-using HlslGeneratorImplTest = testing::Test;
+class HlslGeneratorImplTest_Expression : public TestHelper,
+ public testing::Test {};
-TEST_F(HlslGeneratorImplTest, EmitExpression_ArrayAccessor) {
+TEST_F(HlslGeneratorImplTest_Expression, EmitExpression_ArrayAccessor) {
ast::type::I32Type i32;
auto lit = std::make_unique<ast::SintLiteral>(&i32, 5);
auto idx = std::make_unique<ast::ScalarConstructorExpression>(std::move(lit));
@@ -38,22 +38,18 @@
ast::ArrayAccessorExpression expr(std::move(ary), std::move(idx));
- ast::Module m;
- GeneratorImpl g(&m);
- ASSERT_TRUE(g.EmitExpression(&expr)) << g.error();
- EXPECT_EQ(g.result(), "ary[5]");
+ ASSERT_TRUE(gen().EmitExpression(out(), &expr)) << gen().error();
+ EXPECT_EQ(result(), "ary[5]");
}
-TEST_F(HlslGeneratorImplTest, EmitArrayAccessor) {
+TEST_F(HlslGeneratorImplTest_Expression, EmitArrayAccessor) {
auto ary = std::make_unique<ast::IdentifierExpression>("ary");
auto idx = std::make_unique<ast::IdentifierExpression>("idx");
ast::ArrayAccessorExpression expr(std::move(ary), std::move(idx));
- ast::Module m;
- GeneratorImpl g(&m);
- ASSERT_TRUE(g.EmitExpression(&expr)) << g.error();
- EXPECT_EQ(g.result(), "ary[idx]");
+ ASSERT_TRUE(gen().EmitExpression(out(), &expr)) << gen().error();
+ EXPECT_EQ(result(), "ary[idx]");
}
} // namespace