Add support for .rs and .go source files

Change-Id: I917df75ceeebcd5671f4ea6ea4529e1bfd4cb900
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/4464
Commit-Queue: Julie Hockett <juliehockett@google.com>
Reviewed-by: Brett Wilson <brettw@google.com>
diff --git a/tools/gn/ninja_binary_target_writer.cc b/tools/gn/ninja_binary_target_writer.cc
index 4cda834..fcbc938 100644
--- a/tools/gn/ninja_binary_target_writer.cc
+++ b/tools/gn/ninja_binary_target_writer.cc
@@ -33,6 +33,14 @@
          Get(SOURCE_MM) || Get(SOURCE_RC) || Get(SOURCE_S);
 }
 
+bool NinjaBinaryTargetWriter::SourceFileTypeSet::RustSourceUsed() {
+  return Get(SOURCE_RS);
+}
+
+bool NinjaBinaryTargetWriter::SourceFileTypeSet::GoSourceUsed() {
+  return Get(SOURCE_GO);
+}
+
 NinjaBinaryTargetWriter::NinjaBinaryTargetWriter(const Target* target,
                                                  std::ostream& out)
     : NinjaTargetWriter(target, out),
diff --git a/tools/gn/ninja_binary_target_writer.h b/tools/gn/ninja_binary_target_writer.h
index d450ce2..1db9d81 100644
--- a/tools/gn/ninja_binary_target_writer.h
+++ b/tools/gn/ninja_binary_target_writer.h
@@ -32,6 +32,8 @@
     }
 
     bool CSourceUsed();
+    bool RustSourceUsed();
+    bool GoSourceUsed();
 
    private:
     bool flags_[static_cast<int>(SOURCE_NUMTYPES)];
diff --git a/tools/gn/source_file_type.cc b/tools/gn/source_file_type.cc
index 48df7f8..fde1cca 100644
--- a/tools/gn/source_file_type.cc
+++ b/tools/gn/source_file_type.cc
@@ -28,6 +28,10 @@
     return SOURCE_O;
   if (extension == "def")
     return SOURCE_DEF;
+  if (extension == "rs")
+    return SOURCE_RS;
+  if (extension == "go")
+    return SOURCE_GO;
 
   return SOURCE_UNKNOWN;
 }
diff --git a/tools/gn/source_file_type.h b/tools/gn/source_file_type.h
index c43b432..d405497 100644
--- a/tools/gn/source_file_type.h
+++ b/tools/gn/source_file_type.h
@@ -22,6 +22,9 @@
   SOURCE_O,  // Object files can be inputs, too. Also counts .obj.
   SOURCE_DEF,
 
+  SOURCE_RS,
+  SOURCE_GO,
+
   // Must be last.
   SOURCE_NUMTYPES,
 };
diff --git a/tools/gn/tool.cc b/tools/gn/tool.cc
index ef4c94b..51e0bc2 100644
--- a/tools/gn/tool.cc
+++ b/tools/gn/tool.cc
@@ -274,6 +274,8 @@
     case SOURCE_H:
     case SOURCE_O:
     case SOURCE_DEF:
+    case SOURCE_GO:
+    case SOURCE_RS:
       return kToolNone;
     default:
       NOTREACHED();