Remove deps from rust executable to module's pcm files

Currently modules (*.pcm) files are handled as linkable obj files in
`AddSourceSetFiles`, and those are finally added as inputs to -Clink-arg
in rust link step.

But link step doesn't require module files. So this removes dependecy to
such *.pcm files from rust link step.

Bug: 400872290
Change-Id: I580b0157087abf46a63bf054b4bd3a281b819d07
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/18360
Commit-Queue: Takuto Ikuta <tikuta@google.com>
Reviewed-by: David Turner <digit@google.com>
diff --git a/src/gn/ninja_binary_target_writer.cc b/src/gn/ninja_binary_target_writer.cc
index c244c7c..585af9c 100644
--- a/src/gn/ninja_binary_target_writer.cc
+++ b/src/gn/ninja_binary_target_writer.cc
@@ -214,7 +214,10 @@
   // the tool if there are more than one.
   for (const auto& source : source_set->sources()) {
     const char* tool_name = Tool::kToolNone;
-    if (source_set->GetOutputFilesForSource(source, &tool_name, &tool_outputs))
+    // Do not add .pcm files as they are not object files linked to final
+    // binaries.
+    if (source.GetType() != SourceFile::SOURCE_MODULEMAP &&
+        source_set->GetOutputFilesForSource(source, &tool_name, &tool_outputs))
       obj_files->push_back(tool_outputs[0]);
   }
 
diff --git a/src/gn/ninja_rust_binary_target_writer_unittest.cc b/src/gn/ninja_rust_binary_target_writer_unittest.cc
index 2ef30f8..11b8071 100644
--- a/src/gn/ninja_rust_binary_target_writer_unittest.cc
+++ b/src/gn/ninja_rust_binary_target_writer_unittest.cc
@@ -1904,8 +1904,7 @@
         "target_output_name = exe\n"
         "\n"
         "build ./exe: rust_bin ../../linked/exe.rs | ../../linked/exe.rs "
-        "obj/sset/bar.input1.o obj/sset/module.module.pcm "
-        "obj/public/libbehind_sourceset_public.rlib "
+        "obj/sset/bar.input1.o obj/public/libbehind_sourceset_public.rlib "
         "obj/private/libbehind_sourceset_private.rlib || phony/sset/bar "
         "phony/sset/module\n"
         "  source_file_part = exe.rs\n"
@@ -1914,8 +1913,7 @@
         "behind_sourceset_public=obj/public/libbehind_sourceset_public.rlib\n"
         "  rustdeps = -Ldependency=obj/public -Ldependency=obj/private "
         "-Clink-arg=-Bdynamic "
-        "-Clink-arg=obj/sset/bar.input1.o "
-        "-Clink-arg=obj/sset/module.module.pcm\n"
+        "-Clink-arg=obj/sset/bar.input1.o\n"
         "  ldflags =\n"
         "  sources = ../../linked/exe.rs\n";
     std::string out_str = out.str();