transform: Fix Manager::Run() with no transforms
If there are transforms added to the manager, then Run() would output an empty module. Fix this.
Bug: tint:390
Bug: tint:389
Change-Id: I439fe7a28816761f3702e304ef130b7a6992ecce
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/35280
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/transform/manager.cc b/src/transform/manager.cc
index cbb6ffe..7ba0fb7 100644
--- a/src/transform/manager.cc
+++ b/src/transform/manager.cc
@@ -24,17 +24,21 @@
Transform::Output Manager::Run(ast::Module* module) {
Output out;
- for (auto& transform : transforms_) {
- auto res = transform->Run(module);
- out.module = std::move(res.module);
- out.diagnostics.add(std::move(res.diagnostics));
- if (out.diagnostics.contains_errors()) {
- return out;
+ if (!transforms_.empty()) {
+ for (auto& transform : transforms_) {
+ auto res = transform->Run(module);
+ out.module = std::move(res.module);
+ out.diagnostics.add(std::move(res.diagnostics));
+ if (out.diagnostics.contains_errors()) {
+ return out;
+ }
+ module = &out.module;
}
- module = &out.module;
+ } else {
+ out.module = module->Clone();
}
- TypeDeterminer td(module);
+ TypeDeterminer td(&out.module);
if (!td.Determine()) {
diag::Diagnostic err;
err.severity = diag::Severity::Error;