From 3eb1fae640becb67665dad1ef479c614d3be9cbc Mon Sep 17 00:00:00 2001 From: subotac <73706465+subotac@users.noreply.github.com> Date: Thu, 30 Jul 2026 08:44:55 +0300 Subject: [PATCH] C++: preserve type order for resource header includes --- crates/cpp/src/lib.rs | 3 ++- tests/codegen/issue1658.wit | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 tests/codegen/issue1658.wit diff --git a/crates/cpp/src/lib.rs b/crates/cpp/src/lib.rs index 2d7b30099..0876e32bb 100644 --- a/crates/cpp/src/lib.rs +++ b/crates/cpp/src/lib.rs @@ -486,7 +486,8 @@ impl Cpp { let _ = std::mem::replace(&mut self.includes, store.includes); let _ = std::mem::replace(&mut self.h_src, store.src); let _ = std::mem::replace(&mut self.dependencies, store.dependencies); - self.includes.push(String::from("\"") + &filename + "\""); + self.h_src.change_namespace(&[]); + uwriteln!(self.h_src.src, "#include \"{filename}\""); } } } diff --git a/tests/codegen/issue1658.wit b/tests/codegen/issue1658.wit new file mode 100644 index 000000000..73ba98620 --- /dev/null +++ b/tests/codegen/issue1658.wit @@ -0,0 +1,15 @@ +package foo:bar; + +interface my-interface { + record options { + name: string, + } + + resource my-resource { + constructor(o: options); + } +} + +world my-world { + export my-interface; +}