diff --git a/tools/gn/function_toolchain.cc b/tools/gn/function_toolchain.cc
index 7fc57c7..3d2a100 100644
--- a/tools/gn/function_toolchain.cc
+++ b/tools/gn/function_toolchain.cc
@@ -753,10 +753,9 @@
     return Value();
 
   std::unique_ptr<Tool> tool =
-      Tool::CreateTool(tool_name, &block_scope, toolchain, err);
+      Tool::CreateTool(function, tool_name, &block_scope, toolchain, err);
 
   if (!tool) {
-    *err = Err(function, "Unknown tool type");
     return Value();
   }
 
diff --git a/tools/gn/tool.cc b/tools/gn/tool.cc
index f60e3d4..7a06b03 100644
--- a/tools/gn/tool.cc
+++ b/tools/gn/tool.cc
@@ -53,14 +53,14 @@
   return false;
 }
 
-bool Tool::ValidateSubstitutionList(const std::vector<const Substitution*>& list,
-                                    const Value* origin,
-                                    Err* err) const {
+bool Tool::ValidateSubstitutionList(
+    const std::vector<const Substitution*>& list,
+    const Value* origin,
+    Err* err) const {
   for (const auto& cur_type : list) {
     if (!ValidateSubstitution(cur_type)) {
       *err = Err(*origin, "Pattern not valid here.",
-                 "You used the pattern " +
-                     std::string(cur_type->name) +
+                 "You used the pattern " + std::string(cur_type->name) +
                      " which is not valid\nfor this variable.");
       return false;
     }
@@ -196,11 +196,16 @@
   return true;
 }
 
-std::unique_ptr<Tool> Tool::CreateTool(const std::string& name,
+std::unique_ptr<Tool> Tool::CreateTool(const ParseNode* function,
+                                       const std::string& name,
                                        Scope* scope,
                                        Toolchain* toolchain,
                                        Err* err) {
   std::unique_ptr<Tool> tool = CreateTool(name);
+  if (!tool) {
+    *err = Err(function, "Unknown tool type.");
+    return nullptr;
+  }
   if (CTool* c_tool = tool->AsC()) {
     if (c_tool->InitTool(scope, toolchain, err))
       return tool;
@@ -212,6 +217,7 @@
     return nullptr;
   }
   NOTREACHED();
+  *err = Err(function, "Unknown tool type.");
   return nullptr;
 }
 
diff --git a/tools/gn/tool.h b/tools/gn/tool.h
index d800886..ec2eb94 100644
--- a/tools/gn/tool.h
+++ b/tools/gn/tool.h
@@ -165,7 +165,8 @@
 
   // Create a tool based on given features.
   static std::unique_ptr<Tool> CreateTool(const std::string& name);
-  static std::unique_ptr<Tool> CreateTool(const std::string& name,
+  static std::unique_ptr<Tool> CreateTool(const ParseNode* function,
+                                          const std::string& name,
                                           Scope* scope,
                                           Toolchain* toolchain,
                                           Err* err);
