aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/clang-cc/clang-cc.cpp41
1 files changed, 15 insertions, 26 deletions
diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp
index 51a5b4a72d..21265050ee 100644
--- a/tools/clang-cc/clang-cc.cpp
+++ b/tools/clang-cc/clang-cc.cpp
@@ -440,32 +440,21 @@ static LangKind GetLanguage(llvm::StringRef Filename) {
if (BaseLang != langkind_unspecified)
return BaseLang;
- llvm::StringRef Ext = Filename.rsplit('.').second;
- if (Ext == "ast")
- return langkind_ast;
- else if (Ext == "c")
- return langkind_c;
- else if (Ext == "S" || Ext == "s")
- return langkind_asm_cpp;
- else if (Ext == "i")
- return langkind_c_cpp;
- else if (Ext == "ii")
- return langkind_cxx_cpp;
- else if (Ext == "m")
- return langkind_objc;
- else if (Ext == "mi")
- return langkind_objc_cpp;
- else if (Ext == "mm" || Ext == "M")
- return langkind_objcxx;
- else if (Ext == "mii")
- return langkind_objcxx_cpp;
- else if (Ext == "C" || Ext == "cc" || Ext == "cpp" || Ext == "CPP" ||
- Ext == "c++" || Ext == "cp" || Ext == "cxx")
- return langkind_cxx;
- else if (Ext == "cl")
- return langkind_ocl;
- else
- return langkind_c;
+ return llvm::StringSwitch<LangKind>(Filename.rsplit('.').second)
+ .Case("ast", langkind_ast)
+ .Case("c", langkind_c)
+ .Cases("S", "s", langkind_asm_cpp)
+ .Case("i", langkind_c_cpp)
+ .Case("ii", langkind_cxx_cpp)
+ .Case("m", langkind_objc)
+ .Case("mi", langkind_objc_cpp)
+ .Cases("mm", "M", langkind_objcxx)
+ .Case("mii", langkind_objcxx_cpp)
+ .Case("C", langkind_cxx)
+ .Cases("C", "cc", "cp", langkind_cxx)
+ .Cases("cpp", "CPP", "c++", "cxx", langkind_cxx)
+ .Case("cl", langkind_ocl)
+ .Default(langkind_c);
}