diff --git a/build/gen.py b/build/gen.py
index 874ecba..97e5adb 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -520,7 +520,6 @@
         'tools/gn/setup.cc',
         'tools/gn/source_dir.cc',
         'tools/gn/source_file.cc',
-        'tools/gn/source_file_type.cc',
         'tools/gn/standard_out.cc',
         'tools/gn/string_utils.cc',
         'tools/gn/substitution_list.cc',
diff --git a/tools/gn/c_tool.h b/tools/gn/c_tool.h
index 129a733..07dfcbe 100644
--- a/tools/gn/c_tool.h
+++ b/tools/gn/c_tool.h
@@ -12,7 +12,6 @@
 #include "tools/gn/label.h"
 #include "tools/gn/label_ptr.h"
 #include "tools/gn/scope.h"
-#include "tools/gn/source_file_type.h"
 #include "tools/gn/substitution_list.h"
 #include "tools/gn/substitution_pattern.h"
 #include "tools/gn/tool.h"
diff --git a/tools/gn/compile_commands_writer.cc b/tools/gn/compile_commands_writer.cc
index e4a1a19..208952d 100644
--- a/tools/gn/compile_commands_writer.cc
+++ b/tools/gn/compile_commands_writer.cc
@@ -122,7 +122,7 @@
                   const CompileFlags& flags,
                   std::vector<OutputFile>& tool_outputs,
                   PathOutput& path_output,
-                  SourceFileType source_type,
+                  SourceFile::Type source_type,
                   const char* tool_name,
                   EscapeOptions opts,
                   std::string* compile_commands) {
@@ -144,16 +144,16 @@
     } else if (range.type == &CSubstitutionCFlags) {
       command_out << flags.cflags;
     } else if (range.type == &CSubstitutionCFlagsC) {
-      if (source_type == SOURCE_C)
+      if (source_type == SourceFile::SOURCE_C)
         command_out << flags.cflags_c;
     } else if (range.type == &CSubstitutionCFlagsCc) {
-      if (source_type == SOURCE_CPP)
+      if (source_type == SourceFile::SOURCE_CPP)
         command_out << flags.cflags_cc;
     } else if (range.type == &CSubstitutionCFlagsObjC) {
-      if (source_type == SOURCE_M)
+      if (source_type == SourceFile::SOURCE_M)
         command_out << flags.cflags_objc;
     } else if (range.type == &CSubstitutionCFlagsObjCc) {
-      if (source_type == SOURCE_MM)
+      if (source_type == SourceFile::SOURCE_MM)
         command_out << flags.cflags_objcc;
     } else if (range.type == &SubstitutionLabel ||
                range.type == &SubstitutionLabelName ||
@@ -222,9 +222,11 @@
     for (const auto& source : target->sources()) {
       // If this source is not a C/C++/ObjC/ObjC++ source (not header) file,
       // continue as it does not belong in the compilation database.
-      SourceFileType source_type = GetSourceFileType(source);
-      if (source_type != SOURCE_CPP && source_type != SOURCE_C &&
-          source_type != SOURCE_M && source_type != SOURCE_MM)
+      SourceFile::Type source_type = source.type();
+      if (source_type != SourceFile::SOURCE_CPP &&
+          source_type != SourceFile::SOURCE_C &&
+          source_type != SourceFile::SOURCE_M &&
+          source_type != SourceFile::SOURCE_MM)
         continue;
 
       const char* tool_name = Tool::kToolNone;
@@ -322,4 +324,4 @@
       VisitDeps(pair.ptr, visited);
     }
   }
-}
\ No newline at end of file
+}
diff --git a/tools/gn/general_tool.h b/tools/gn/general_tool.h
index b6e1af0..827a48d 100644
--- a/tools/gn/general_tool.h
+++ b/tools/gn/general_tool.h
@@ -11,7 +11,6 @@
 #include "base/macros.h"
 #include "tools/gn/label.h"
 #include "tools/gn/label_ptr.h"
-#include "tools/gn/source_file_type.h"
 #include "tools/gn/substitution_list.h"
 #include "tools/gn/substitution_pattern.h"
 #include "tools/gn/tool.h"
diff --git a/tools/gn/header_checker.cc b/tools/gn/header_checker.cc
index 8407bd0..dca7302 100644
--- a/tools/gn/header_checker.cc
+++ b/tools/gn/header_checker.cc
@@ -18,7 +18,6 @@
 #include "tools/gn/err.h"
 #include "tools/gn/filesystem_utils.h"
 #include "tools/gn/scheduler.h"
-#include "tools/gn/source_file_type.h"
 #include "tools/gn/target.h"
 #include "tools/gn/trace.h"
 #include "util/worker_pool.h"
@@ -152,9 +151,10 @@
 
   for (const auto& file : files) {
     // Only check C-like source files (RC files also have includes).
-    SourceFileType type = GetSourceFileType(file.first);
-    if (type != SOURCE_CPP && type != SOURCE_H && type != SOURCE_C &&
-        type != SOURCE_M && type != SOURCE_MM && type != SOURCE_RC)
+    SourceFile::Type type = file.first.type();
+    if (type != SourceFile::SOURCE_CPP && type != SourceFile::SOURCE_H &&
+        type != SourceFile::SOURCE_C && type != SourceFile::SOURCE_M &&
+        type != SourceFile::SOURCE_MM && type != SourceFile::SOURCE_RC)
       continue;
 
     if (!check_generated_) {
diff --git a/tools/gn/ninja_binary_target_writer.cc b/tools/gn/ninja_binary_target_writer.cc
index aca3a24..bf3ee35 100644
--- a/tools/gn/ninja_binary_target_writer.cc
+++ b/tools/gn/ninja_binary_target_writer.cc
@@ -23,22 +23,23 @@
 #include "tools/gn/ninja_utils.h"
 #include "tools/gn/scheduler.h"
 #include "tools/gn/settings.h"
-#include "tools/gn/source_file_type.h"
 #include "tools/gn/string_utils.h"
 #include "tools/gn/substitution_writer.h"
 #include "tools/gn/target.h"
 
 bool NinjaBinaryTargetWriter::SourceFileTypeSet::CSourceUsed() {
-  return Get(SOURCE_CPP) || Get(SOURCE_H) || Get(SOURCE_C) || Get(SOURCE_M) ||
-         Get(SOURCE_MM) || Get(SOURCE_RC) || Get(SOURCE_S);
+  return Get(SourceFile::SOURCE_CPP) || Get(SourceFile::SOURCE_H) ||
+         Get(SourceFile::SOURCE_C) || Get(SourceFile::SOURCE_M) ||
+         Get(SourceFile::SOURCE_MM) || Get(SourceFile::SOURCE_RC) ||
+         Get(SourceFile::SOURCE_S);
 }
 
 bool NinjaBinaryTargetWriter::SourceFileTypeSet::RustSourceUsed() {
-  return Get(SOURCE_RS);
+  return Get(SourceFile::SOURCE_RS);
 }
 
 bool NinjaBinaryTargetWriter::SourceFileTypeSet::GoSourceUsed() {
-  return Get(SOURCE_GO);
+  return Get(SourceFile::SOURCE_GO);
 }
 
 NinjaBinaryTargetWriter::NinjaBinaryTargetWriter(const Target* target,
@@ -49,10 +50,6 @@
 NinjaBinaryTargetWriter::~NinjaBinaryTargetWriter() = default;
 
 void NinjaBinaryTargetWriter::Run() {
-  SourceFileTypeSet used_types;
-  for (const auto& source : target_->sources())
-    used_types.Set(GetSourceFileType(source));
-
   NinjaCBinaryTargetWriter writer(target_, out_);
   writer.Run();
 }
diff --git a/tools/gn/ninja_binary_target_writer.h b/tools/gn/ninja_binary_target_writer.h
index 1db9d81..24d7ef1 100644
--- a/tools/gn/ninja_binary_target_writer.h
+++ b/tools/gn/ninja_binary_target_writer.h
@@ -23,11 +23,12 @@
   class SourceFileTypeSet {
    public:
     SourceFileTypeSet() {
-      memset(flags_, 0, sizeof(bool) * static_cast<int>(SOURCE_NUMTYPES));
+      memset(flags_, 0,
+             sizeof(bool) * static_cast<int>(SourceFile::SOURCE_NUMTYPES));
     }
 
-    void Set(SourceFileType type) { flags_[static_cast<int>(type)] = true; }
-    bool Get(SourceFileType type) const {
+    void Set(SourceFile::Type type) { flags_[static_cast<int>(type)] = true; }
+    bool Get(SourceFile::Type type) const {
       return flags_[static_cast<int>(type)];
     }
 
@@ -36,7 +37,7 @@
     bool GoSourceUsed();
 
    private:
-    bool flags_[static_cast<int>(SOURCE_NUMTYPES)];
+    bool flags_[static_cast<int>(SourceFile::SOURCE_NUMTYPES)];
   };
 
   NinjaBinaryTargetWriter(const Target* target, std::ostream& out);
diff --git a/tools/gn/ninja_c_binary_target_writer.cc b/tools/gn/ninja_c_binary_target_writer.cc
index f6ffd15..4e8217b 100644
--- a/tools/gn/ninja_c_binary_target_writer.cc
+++ b/tools/gn/ninja_c_binary_target_writer.cc
@@ -24,7 +24,6 @@
 #include "tools/gn/ninja_utils.h"
 #include "tools/gn/scheduler.h"
 #include "tools/gn/settings.h"
-#include "tools/gn/source_file_type.h"
 #include "tools/gn/string_utils.h"
 #include "tools/gn/substitution_writer.h"
 #include "tools/gn/target.h"
@@ -67,27 +66,27 @@
     if (source_set->GetOutputFilesForSource(source, &tool_name, &tool_outputs))
       obj_files->push_back(tool_outputs[0]);
 
-    used_types.Set(GetSourceFileType(source));
+    used_types.Set(source.type());
   }
 
   // Add MSVC precompiled header object files. GCC .gch files are not object
   // files so they are omitted.
   if (source_set->config_values().has_precompiled_headers()) {
-    if (used_types.Get(SOURCE_C)) {
+    if (used_types.Get(SourceFile::SOURCE_C)) {
       const CTool* tool = source_set->toolchain()->GetToolAsC(CTool::kCToolCc);
       if (tool && tool->precompiled_header_type() == CTool::PCH_MSVC) {
         GetPCHOutputFiles(source_set, CTool::kCToolCc, &tool_outputs);
         obj_files->Append(tool_outputs.begin(), tool_outputs.end());
       }
     }
-    if (used_types.Get(SOURCE_CPP)) {
+    if (used_types.Get(SourceFile::SOURCE_CPP)) {
       const CTool* tool = source_set->toolchain()->GetToolAsC(CTool::kCToolCxx);
       if (tool && tool->precompiled_header_type() == CTool::PCH_MSVC) {
         GetPCHOutputFiles(source_set, CTool::kCToolCxx, &tool_outputs);
         obj_files->Append(tool_outputs.begin(), tool_outputs.end());
       }
     }
-    if (used_types.Get(SOURCE_M)) {
+    if (used_types.Get(SourceFile::SOURCE_M)) {
       const CTool* tool =
           source_set->toolchain()->GetToolAsC(CTool::kCToolObjC);
       if (tool && tool->precompiled_header_type() == CTool::PCH_MSVC) {
@@ -95,7 +94,7 @@
         obj_files->Append(tool_outputs.begin(), tool_outputs.end());
       }
     }
-    if (used_types.Get(SOURCE_MM)) {
+    if (used_types.Get(SourceFile::SOURCE_MM)) {
       const CTool* tool =
           source_set->toolchain()->GetToolAsC(CTool::kCToolObjCxx);
       if (tool && tool->precompiled_header_type() == CTool::PCH_MSVC) {
@@ -119,7 +118,7 @@
   // Figure out what source types are needed.
   SourceFileTypeSet used_types;
   for (const auto& source : target_->sources())
-    used_types.Set(GetSourceFileType(source));
+    used_types.Set(source.type());
 
   WriteCompilerVars(used_types);
 
@@ -235,31 +234,34 @@
       target_->config_values().has_precompiled_headers();
 
   EscapeOptions opts = GetFlagOptions();
-  if (used_types.Get(SOURCE_S) || used_types.Get(SOURCE_ASM)) {
+  if (used_types.Get(SourceFile::SOURCE_S) ||
+      used_types.Get(SourceFile::SOURCE_ASM)) {
     WriteOneFlag(target_, &CSubstitutionAsmFlags, false, Tool::kToolNone,
                  &ConfigValues::asmflags, opts, path_output_, out_);
   }
-  if (used_types.Get(SOURCE_C) || used_types.Get(SOURCE_CPP) ||
-      used_types.Get(SOURCE_M) || used_types.Get(SOURCE_MM)) {
+  if (used_types.Get(SourceFile::SOURCE_C) ||
+      used_types.Get(SourceFile::SOURCE_CPP) ||
+      used_types.Get(SourceFile::SOURCE_M) ||
+      used_types.Get(SourceFile::SOURCE_MM)) {
     WriteOneFlag(target_, &CSubstitutionCFlags, false, Tool::kToolNone,
                  &ConfigValues::cflags, opts, path_output_, out_);
   }
-  if (used_types.Get(SOURCE_C)) {
+  if (used_types.Get(SourceFile::SOURCE_C)) {
     WriteOneFlag(target_, &CSubstitutionCFlagsC, has_precompiled_headers,
                  CTool::kCToolCc, &ConfigValues::cflags_c, opts, path_output_,
                  out_);
   }
-  if (used_types.Get(SOURCE_CPP)) {
+  if (used_types.Get(SourceFile::SOURCE_CPP)) {
     WriteOneFlag(target_, &CSubstitutionCFlagsCc, has_precompiled_headers,
                  CTool::kCToolCxx, &ConfigValues::cflags_cc, opts, path_output_,
                  out_);
   }
-  if (used_types.Get(SOURCE_M)) {
+  if (used_types.Get(SourceFile::SOURCE_M)) {
     WriteOneFlag(target_, &CSubstitutionCFlagsObjC, has_precompiled_headers,
                  CTool::kCToolObjC, &ConfigValues::cflags_objc, opts,
                  path_output_, out_);
   }
-  if (used_types.Get(SOURCE_MM)) {
+  if (used_types.Get(SourceFile::SOURCE_MM)) {
     WriteOneFlag(target_, &CSubstitutionCFlagsObjCc, has_precompiled_headers,
                  CTool::kCToolObjCxx, &ConfigValues::cflags_objcc, opts,
                  path_output_, out_);
@@ -319,14 +321,14 @@
 
   const CTool* tool_c = target_->toolchain()->GetToolAsC(CTool::kCToolCc);
   if (tool_c && tool_c->precompiled_header_type() != CTool::PCH_NONE &&
-      used_types.Get(SOURCE_C)) {
+      used_types.Get(SourceFile::SOURCE_C)) {
     WritePCHCommand(&CSubstitutionCFlagsC, CTool::kCToolCc,
                     tool_c->precompiled_header_type(), input_dep,
                     order_only_deps, object_files, other_files);
   }
   const CTool* tool_cxx = target_->toolchain()->GetToolAsC(CTool::kCToolCxx);
   if (tool_cxx && tool_cxx->precompiled_header_type() != CTool::PCH_NONE &&
-      used_types.Get(SOURCE_CPP)) {
+      used_types.Get(SourceFile::SOURCE_CPP)) {
     WritePCHCommand(&CSubstitutionCFlagsCc, CTool::kCToolCxx,
                     tool_cxx->precompiled_header_type(), input_dep,
                     order_only_deps, object_files, other_files);
@@ -334,7 +336,7 @@
 
   const CTool* tool_objc = target_->toolchain()->GetToolAsC(CTool::kCToolObjC);
   if (tool_objc && tool_objc->precompiled_header_type() == CTool::PCH_GCC &&
-      used_types.Get(SOURCE_M)) {
+      used_types.Get(SourceFile::SOURCE_M)) {
     WritePCHCommand(&CSubstitutionCFlagsObjC, CTool::kCToolObjC,
                     tool_objc->precompiled_header_type(), input_dep,
                     order_only_deps, object_files, other_files);
@@ -343,7 +345,7 @@
   const CTool* tool_objcxx =
       target_->toolchain()->GetToolAsC(CTool::kCToolObjCxx);
   if (tool_objcxx && tool_objcxx->precompiled_header_type() == CTool::PCH_GCC &&
-      used_types.Get(SOURCE_MM)) {
+      used_types.Get(SourceFile::SOURCE_MM)) {
     WritePCHCommand(&CSubstitutionCFlagsObjCc, CTool::kCToolObjCxx,
                     tool_objcxx->precompiled_header_type(), input_dep,
                     order_only_deps, object_files, other_files);
@@ -476,7 +478,7 @@
     deps.resize(0);
     const char* tool_name = Tool::kToolNone;
     if (!target_->GetOutputFilesForSource(source, &tool_name, &tool_outputs)) {
-      if (GetSourceFileType(source) == SOURCE_DEF)
+      if (source.type() == SourceFile::SOURCE_DEF)
         other_files->push_back(source);
       continue;  // No output for this source.
     }
@@ -597,7 +599,7 @@
   const SourceFile* optional_def_file = nullptr;
   if (!other_files.empty()) {
     for (const SourceFile& src_file : other_files) {
-      if (GetSourceFileType(src_file) == SOURCE_DEF) {
+      if (src_file.type() == SourceFile::SOURCE_DEF) {
         optional_def_file = &src_file;
         implicit_deps.push_back(
             OutputFile(settings_->build_settings(), src_file));
diff --git a/tools/gn/source_file.cc b/tools/gn/source_file.cc
index 79c6eb0..7c860d4 100644
--- a/tools/gn/source_file.cc
+++ b/tools/gn/source_file.cc
@@ -21,18 +21,48 @@
   DCHECK(!EndsWithSlash(s)) << s;
 }
 
+SourceFile::Type GetSourceFileType(const std::string& file) {
+  base::StringPiece extension = FindExtension(&file);
+  if (extension == "cc" || extension == "cpp" || extension == "cxx")
+    return SourceFile::SOURCE_CPP;
+  if (extension == "h" || extension == "hpp" || extension == "hxx" ||
+      extension == "hh" || extension == "inc")
+    return SourceFile::SOURCE_H;
+  if (extension == "c")
+    return SourceFile::SOURCE_C;
+  if (extension == "m")
+    return SourceFile::SOURCE_M;
+  if (extension == "mm")
+    return SourceFile::SOURCE_MM;
+  if (extension == "rc")
+    return SourceFile::SOURCE_RC;
+  if (extension == "S" || extension == "s" || extension == "asm")
+    return SourceFile::SOURCE_S;
+  if (extension == "o" || extension == "obj")
+    return SourceFile::SOURCE_O;
+  if (extension == "def")
+    return SourceFile::SOURCE_DEF;
+  if (extension == "rs")
+    return SourceFile::SOURCE_RS;
+  if (extension == "go")
+    return SourceFile::SOURCE_GO;
+
+  return SourceFile::SOURCE_UNKNOWN;
+}
+
 }  // namespace
 
-SourceFile::SourceFile() = default;
+SourceFile::SourceFile() : type_(SOURCE_UNKNOWN) {}
 
 SourceFile::SourceFile(const base::StringPiece& p)
-    : value_(p.data(), p.size()) {
+    : value_(p.data(), p.size()), type_(GetSourceFileType(value_)) {
   DCHECK(!value_.empty());
   AssertValueSourceFileString(value_);
   NormalizePath(&value_);
 }
 
-SourceFile::SourceFile(SwapIn, std::string* value) {
+SourceFile::SourceFile(SwapIn, std::string* value)
+    : type_(GetSourceFileType(*value)) {
   value_.swap(*value);
   DCHECK(!value_.empty());
   AssertValueSourceFileString(value_);
diff --git a/tools/gn/source_file.h b/tools/gn/source_file.h
index f033987..bcf5f42 100644
--- a/tools/gn/source_file.h
+++ b/tools/gn/source_file.h
@@ -20,6 +20,28 @@
 // ends in one.
 class SourceFile {
  public:
+  // This should be sequential integers starting from 0 so they can be used as
+  // array indices.
+  enum Type {
+    SOURCE_UNKNOWN = 0,
+    SOURCE_ASM,
+    SOURCE_C,
+    SOURCE_CPP,
+    SOURCE_H,
+    SOURCE_M,
+    SOURCE_MM,
+    SOURCE_S,
+    SOURCE_RC,
+    SOURCE_O,  // Object files can be inputs, too. Also counts .obj.
+    SOURCE_DEF,
+
+    SOURCE_RS,
+    SOURCE_GO,
+
+    // Must be last.
+    SOURCE_NUMTYPES,
+  };
+
   enum SwapIn { SWAP_IN };
 
   SourceFile();
@@ -36,6 +58,7 @@
 
   bool is_null() const { return value_.empty(); }
   const std::string& value() const { return value_; }
+  Type type() const { return type_; }
 
   // Returns everything after the last slash.
   std::string GetName() const;
@@ -80,6 +103,7 @@
   friend class SourceDir;
 
   std::string value_;
+  Type type_;
 
   // Copy & assign supported.
 };
diff --git a/tools/gn/source_file_type.cc b/tools/gn/source_file_type.cc
deleted file mode 100644
index fde1cca..0000000
--- a/tools/gn/source_file_type.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "tools/gn/source_file_type.h"
-
-#include "tools/gn/filesystem_utils.h"
-#include "tools/gn/source_file.h"
-
-SourceFileType GetSourceFileType(const SourceFile& file) {
-  base::StringPiece extension = FindExtension(&file.value());
-  if (extension == "cc" || extension == "cpp" || extension == "cxx")
-    return SOURCE_CPP;
-  if (extension == "h" || extension == "hpp" || extension == "hxx" ||
-      extension == "hh")
-    return SOURCE_H;
-  if (extension == "c")
-    return SOURCE_C;
-  if (extension == "m")
-    return SOURCE_M;
-  if (extension == "mm")
-    return SOURCE_MM;
-  if (extension == "rc")
-    return SOURCE_RC;
-  if (extension == "S" || extension == "s" || extension == "asm")
-    return SOURCE_S;
-  if (extension == "o" || extension == "obj")
-    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
deleted file mode 100644
index d405497..0000000
--- a/tools/gn/source_file_type.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef TOOLS_GN_SOURCE_FILE_TYPE_H_
-#define TOOLS_GN_SOURCE_FILE_TYPE_H_
-
-class SourceFile;
-
-// This should be sequential integers starting from 0 so they can be used as
-// array indices.
-enum SourceFileType {
-  SOURCE_UNKNOWN = 0,
-  SOURCE_ASM,
-  SOURCE_C,
-  SOURCE_CPP,
-  SOURCE_H,
-  SOURCE_M,
-  SOURCE_MM,
-  SOURCE_S,
-  SOURCE_RC,
-  SOURCE_O,  // Object files can be inputs, too. Also counts .obj.
-  SOURCE_DEF,
-
-  SOURCE_RS,
-  SOURCE_GO,
-
-  // Must be last.
-  SOURCE_NUMTYPES,
-};
-
-SourceFileType GetSourceFileType(const SourceFile& file);
-
-#endif  // TOOLS_GN_SOURCE_FILE_TYPE_H_
diff --git a/tools/gn/target.cc b/tools/gn/target.cc
index 6272b44..1afd22b 100644
--- a/tools/gn/target.cc
+++ b/tools/gn/target.cc
@@ -16,7 +16,6 @@
 #include "tools/gn/filesystem_utils.h"
 #include "tools/gn/functions.h"
 #include "tools/gn/scheduler.h"
-#include "tools/gn/source_file_type.h"
 #include "tools/gn/substitution_writer.h"
 #include "tools/gn/tool.h"
 #include "tools/gn/toolchain.h"
@@ -487,10 +486,10 @@
   outputs->clear();
   *computed_tool_type = Tool::kToolNone;
 
-  SourceFileType file_type = GetSourceFileType(source);
-  if (file_type == SOURCE_UNKNOWN)
+  SourceFile::Type file_type = source.type();
+  if (file_type == SourceFile::SOURCE_UNKNOWN)
     return false;
-  if (file_type == SOURCE_O) {
+  if (file_type == SourceFile::SOURCE_O) {
     // Object files just get passed to the output and not compiled.
     outputs->push_back(OutputFile(settings()->build_settings(), source));
     return true;
diff --git a/tools/gn/tool.cc b/tools/gn/tool.cc
index 7a06b03..b040ac2 100644
--- a/tools/gn/tool.cc
+++ b/tools/gn/tool.cc
@@ -261,27 +261,27 @@
 }
 
 // static
-const char* Tool::GetToolTypeForSourceType(SourceFileType type) {
+const char* Tool::GetToolTypeForSourceType(SourceFile::Type type) {
   switch (type) {
-    case SOURCE_C:
+    case SourceFile::SOURCE_C:
       return CTool::kCToolCc;
-    case SOURCE_CPP:
+    case SourceFile::SOURCE_CPP:
       return CTool::kCToolCxx;
-    case SOURCE_M:
+    case SourceFile::SOURCE_M:
       return CTool::kCToolObjC;
-    case SOURCE_MM:
+    case SourceFile::SOURCE_MM:
       return CTool::kCToolObjCxx;
-    case SOURCE_ASM:
-    case SOURCE_S:
+    case SourceFile::SOURCE_ASM:
+    case SourceFile::SOURCE_S:
       return CTool::kCToolAsm;
-    case SOURCE_RC:
+    case SourceFile::SOURCE_RC:
       return CTool::kCToolRc;
-    case SOURCE_UNKNOWN:
-    case SOURCE_H:
-    case SOURCE_O:
-    case SOURCE_DEF:
-    case SOURCE_GO:
-    case SOURCE_RS:
+    case SourceFile::SOURCE_UNKNOWN:
+    case SourceFile::SOURCE_H:
+    case SourceFile::SOURCE_O:
+    case SourceFile::SOURCE_DEF:
+    case SourceFile::SOURCE_GO:
+    case SourceFile::SOURCE_RS:
       return kToolNone;
     default:
       NOTREACHED();
diff --git a/tools/gn/tool.h b/tools/gn/tool.h
index ec2eb94..a6f177d 100644
--- a/tools/gn/tool.h
+++ b/tools/gn/tool.h
@@ -12,7 +12,7 @@
 #include "tools/gn/label.h"
 #include "tools/gn/label_ptr.h"
 #include "tools/gn/scope.h"
-#include "tools/gn/source_file_type.h"
+#include "tools/gn/source_file.h"
 #include "tools/gn/substitution_list.h"
 #include "tools/gn/substitution_pattern.h"
 
@@ -171,7 +171,7 @@
                                           Toolchain* toolchain,
                                           Err* err);
 
-  static const char* GetToolTypeForSourceType(SourceFileType type);
+  static const char* GetToolTypeForSourceType(SourceFile::Type type);
   static const char* GetToolTypeForTargetFinalOutput(const Target* target);
 
  protected:
diff --git a/tools/gn/toolchain.cc b/tools/gn/toolchain.cc
index b718052..0d6cbaf 100644
--- a/tools/gn/toolchain.cc
+++ b/tools/gn/toolchain.cc
@@ -88,16 +88,16 @@
   setup_complete_ = true;
 }
 
-const Tool* Toolchain::GetToolForSourceType(SourceFileType type) const {
+const Tool* Toolchain::GetToolForSourceType(SourceFile::Type type) const {
   return GetTool(Tool::GetToolTypeForSourceType(type));
 }
 
-const CTool* Toolchain::GetToolForSourceTypeAsC(SourceFileType type) const {
+const CTool* Toolchain::GetToolForSourceTypeAsC(SourceFile::Type type) const {
   return GetToolAsC(Tool::GetToolTypeForSourceType(type));
 }
 
 const GeneralTool* Toolchain::GetToolForSourceTypeAsGeneral(
-    SourceFileType type) const {
+    SourceFile::Type type) const {
   return GetToolAsGeneral(Tool::GetToolTypeForSourceType(type));
 }
 
diff --git a/tools/gn/toolchain.h b/tools/gn/toolchain.h
index e36475d..cc93de5 100644
--- a/tools/gn/toolchain.h
+++ b/tools/gn/toolchain.h
@@ -12,7 +12,6 @@
 #include "tools/gn/item.h"
 #include "tools/gn/label_ptr.h"
 #include "tools/gn/scope.h"
-#include "tools/gn/source_file_type.h"
 #include "tools/gn/substitution_type.h"
 #include "tools/gn/tool.h"
 #include "tools/gn/value.h"
@@ -88,9 +87,9 @@
   }
 
   // Returns the tool for compiling the given source file type.
-  const Tool* GetToolForSourceType(SourceFileType type) const;
-  const CTool* GetToolForSourceTypeAsC(SourceFileType type) const;
-  const GeneralTool* GetToolForSourceTypeAsGeneral(SourceFileType type) const;
+  const Tool* GetToolForSourceType(SourceFile::Type type) const;
+  const CTool* GetToolForSourceTypeAsC(SourceFile::Type type) const;
+  const GeneralTool* GetToolForSourceTypeAsGeneral(SourceFile::Type type) const;
 
   // Returns the tool that produces the final output for the given target type.
   // This isn't necessarily the tool you would expect. For copy target, this
diff --git a/tools/gn/visual_studio_writer.cc b/tools/gn/visual_studio_writer.cc
index f804b44..9dbd4b3 100644
--- a/tools/gn/visual_studio_writer.cc
+++ b/tools/gn/visual_studio_writer.cc
@@ -24,7 +24,6 @@
 #include "tools/gn/label_pattern.h"
 #include "tools/gn/parse_tree.h"
 #include "tools/gn/path_output.h"
-#include "tools/gn/source_file_type.h"
 #include "tools/gn/standard_out.h"
 #include "tools/gn/target.h"
 #include "tools/gn/variables.h"
