add ast::Module::to_str This makes it easier to see the bug. Bug: tint:22 Change-Id: Ic5acc0b8299ef31eb73b49863bc42ac09de6e9bf Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/17203 Reviewed-by: dan sinclair <dsinclair@google.com>
diff --git a/src/ast/module.cc b/src/ast/module.cc index dfca88a..8b69af0 100644 --- a/src/ast/module.cc +++ b/src/ast/module.cc
@@ -59,21 +59,24 @@ std::string Module::to_str() const { std::ostringstream out; + out << "Module{" << std::endl; + const auto indent = 2; for (const auto& import : imports_) { - import->to_str(out, 0); + import->to_str(out, indent); } for (const auto& var : global_variables_) { - var->to_str(out, 0); + var->to_str(out, indent); } for (const auto& ep : entry_points_) { - ep->to_str(out, 0); + ep->to_str(out, indent); } for (const auto& alias : alias_types_) { out << alias->name() << " -> " << alias->type()->type_name() << std::endl; } for (const auto& func : functions_) { - func->to_str(out, 0); + func->to_str(out, indent); } + out << "}" << std::endl; return out.str(); }
diff --git a/src/ast/module_test.cc b/src/ast/module_test.cc index 64fd31b..7fad54b 100644 --- a/src/ast/module_test.cc +++ b/src/ast/module_test.cc
@@ -14,9 +14,10 @@ #include "src/ast/module.h" +#include <sstream> #include <utility> -#include "gtest/gtest.h" +#include "gmock/gmock.h" #include "src/ast/entry_point.h" #include "src/ast/function.h" #include "src/ast/import.h" @@ -34,6 +35,13 @@ EXPECT_EQ(m.imports().size(), 0); } +TEST_F(ModuleTest, ToStrEmitsPreambleAndPostamble) { + Module m; + const auto str = m.to_str(); + const auto expected = "Module{\n}\n"; + EXPECT_EQ(str, expected); +} + TEST_F(ModuleTest, Imports) { Module m; @@ -44,6 +52,16 @@ EXPECT_EQ("std::glsl", m.imports()[0]->name()); } +TEST_F(ModuleTest, ToStrWithImport) { + Module m; + m.AddImport(std::make_unique<Import>("GLSL.std.430", "std::glsl")); + const auto str = m.to_str(); + EXPECT_EQ(str, R"(Module{ + Import{"GLSL.std.430" as std::glsl} +} +)"); +} + TEST_F(ModuleTest, LookupImport) { Module m;