[clang-cl] Parse the /external: flags (PR36003)
authorHans Wennborg <hans@chromium.org>
Tue, 8 Jun 2021 15:51:05 +0000 (17:51 +0200)
committerHans Wennborg <hans@chromium.org>
Tue, 8 Jun 2021 16:00:03 +0000 (18:00 +0200)
They are still unsupported, but at least this makes clang-cl not mistake
them for being filenames.

As pointed out in the bug, VS 16.10 now uses these flags in new projects
by default.

clang/include/clang/Driver/Options.td
clang/test/Driver/cl-options.c

index 9f6225c..bae7426 100644 (file)
@@ -6209,6 +6209,8 @@ def _SLASH_d2 : CLJoined<"d2">;
 def _SLASH_doc : CLJoined<"doc">;
 def _SLASH_experimental : CLJoined<"experimental:">;
 def _SLASH_exportHeader : CLFlag<"exportHeader">;
+def _SLASH_external : CLJoined<"external:">;
+def _SLASH_external_COLON_I : CLJoinedOrSeparate<"external:I">;
 def _SLASH_FA_joined : CLJoined<"FA">;
 def _SLASH_favor : CLJoined<"favor">;
 def _SLASH_fsanitize_address_use_after_return : CLJoined<"fsanitize-address-use-after-return">;
index a912523..f60c2b6 100644 (file)
 // RUN:     /clr:pure \
 // RUN:     /d2FH4 \
 // RUN:     /docname \
+// RUN:     /experimental:external \
 // RUN:     /experimental:module \
 // RUN:     /experimental:preprocessor \
 // RUN:     /exportHeader /headerName:foo \
+// RUN:     /external:anglebrackets \
+// RUN:     /external:Ipath \
+// RUN:     /external:I path \
+// RUN:     /external:env:var \
+// RUN:     /external:W0 \
+// RUN:     /external:W1 \
+// RUN:     /external:W2 \
+// RUN:     /external:W3 \
+// RUN:     /external:W4 \
+// RUN:     /external:templates- \
 // RUN:     /headerUnit foo.h=foo.ifc /headerUnit:quote foo.h=foo.ifc /headerUnit:angle foo.h=foo.ifc \
 // RUN:     /EHsc \
 // RUN:     /F 42 \