================
@@ -374,15 +373,23 @@ def parse_arguments() -> Tuple[argparse.Namespace, 
List[str]]:
     parser.add_argument(
         "-std",
         type=csv,
-        default=["c++11-or-later"],
+        default=None,
         help="Passed to clang. Special -or-later values are expanded.",
     )
     parser.add_argument(
         "--match-partial-fixes",
         action="store_true",
         help="allow partial line matches for fixes",
     )
-    return parser.parse_known_args()
+
+    args, extra_args = parser.parse_known_args()
+    if args.std is None:
+        _, extension = os.path.splitext(args.assume_filename or 
args.input_file_name)
+        args.std = [
+            "c++11-or-later" if extension in [".cpp", ".hpp", ".mm"] else 
"c99-or-later"
----------------
localspook wrote:

In those cases, the tests will break if they don't specify `-std`. The script 
will try to invoke something like `clang foo.cxx -std=c99`, which will error 
out, saying that you can't specify a C standard for a C++ file. Same thing with 
C++ `.h` files, but note that in that case, users already have to specify `-x 
c++`, because clang won't understand that this is a C++ file otherwise. We'll 
need to keep the list updated if we want the default behaviour to Just Work.

(Also, I think my PR description was a bit misleading, so I want to be clear; 
`-std` being ignored is a problem that applies not just to C, but to any file 
with an extension other than `.cpp`, `.hpp`, or `.mm`.)


https://github.com/llvm/llvm-project/pull/150791
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to