]> granicus.if.org Git - clang/commitdiff
clang-cl: Better error message when trying to compile stdin (PR18640)
authorHans Wennborg <hans@hanshq.net>
Wed, 29 Jan 2014 01:04:40 +0000 (01:04 +0000)
committerHans Wennborg <hans@hanshq.net>
Wed, 29 Jan 2014 01:04:40 +0000 (01:04 +0000)
We should suggest using /Tc or /Tp to set the input type, instead of
erroneously suggesting -x, which isn't a clang-cl flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200362 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticDriverKinds.td
lib/Driver/Driver.cpp
test/Driver/cl-inputs.c

index 59805b59ba230cd9e8cfba51f7b1b5430c72de8e..dbc5ce994c62f1384f4a56bb6b6d1905429576b3 100644 (file)
@@ -17,6 +17,8 @@ def err_drv_unsupported_option_argument : Error<
   "unsupported argument '%1' to option '%0'">;
 def err_drv_unknown_stdin_type : Error<
   "-E or -x required when input is from standard input">;
+def err_drv_unknown_stdin_type_clang_cl : Error<
+  "use /Tc or /Tp to set input type for standard input">;
 def err_drv_unknown_language : Error<"language not recognized: '%0'">;
 def err_drv_invalid_arch_name : Error<
   "invalid arch name '%0'">;
index ca3e50fd535ba79d846d76556930127420b07c6c..bd43fbeec19e485ac497b55f162948cab4530007 100644 (file)
@@ -1030,7 +1030,8 @@ void Driver::BuildInputs(const ToolChain &TC, const DerivedArgList &Args,
           // Otherwise emit an error but still use a valid type to avoid
           // spurious errors (e.g., no inputs).
           if (!Args.hasArgNoClaim(options::OPT_E) && !CCCIsCPP())
-            Diag(clang::diag::err_drv_unknown_stdin_type);
+            Diag(IsCLMode() ? clang::diag::err_drv_unknown_stdin_type_clang_cl
+                            : clang::diag::err_drv_unknown_stdin_type);
           Ty = types::TY_C;
         } else {
           // Otherwise lookup by extension.
index d6ee520257d5b6134998e8aa4d232fb6b6cc9b4a..066e0e32d9fcf4ea7dd1b37d5d1ff78ef9a9aa95 100644 (file)
 // WARN: warning: overriding '/TC' option with '/TP'
 // WARN: note: The last /TC or /TP option takes precedence over earlier instances
 // WARN-NOT: note
+
+// RUN: not %clang_cl - 2>&1 | FileCheck -check-prefix=STDIN %s
+// STDIN: error: use /Tc or /Tp
+
+// RUN: %clang_cl -### /Tc - 2>&1 | FileCheck -check-prefix=STDINTc %s
+// STDINTc: "-x" "c"
+
+void f();