forked from OSchip/llvm-project
[clang-format] Tidy up new API guessLanguage()
Summary: This fixes a few issues djasper@ brought up in his review of D43522. Test Plan: make -j12 FormatTests && ./tools/clang/unittests/Format/FormatTests Reviewers: djasper Reviewed By: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D43598 llvm-svn: 326205
This commit is contained in:
parent
497fd98af2
commit
6e066350d8
|
@ -2295,8 +2295,8 @@ static FormatStyle::LanguageKind getLanguageByFileName(StringRef FileName) {
|
|||
}
|
||||
|
||||
FormatStyle::LanguageKind guessLanguage(StringRef FileName, StringRef Code) {
|
||||
FormatStyle::LanguageKind result = getLanguageByFileName(FileName);
|
||||
if (result == FormatStyle::LK_Cpp) {
|
||||
const auto GuessedLanguage = getLanguageByFileName(FileName);
|
||||
if (GuessedLanguage == FormatStyle::LK_Cpp) {
|
||||
auto Extension = llvm::sys::path::extension(FileName);
|
||||
// If there's no file extension (or it's .h), we need to check the contents
|
||||
// of the code to see if it contains Objective-C.
|
||||
|
@ -2306,12 +2306,11 @@ FormatStyle::LanguageKind guessLanguage(StringRef FileName, StringRef Code) {
|
|||
Environment::CreateVirtualEnvironment(Code, NonEmptyFileName, /*Ranges=*/{});
|
||||
ObjCHeaderStyleGuesser Guesser(*Env, getLLVMStyle());
|
||||
Guesser.process();
|
||||
if (Guesser.isObjC()) {
|
||||
result = FormatStyle::LK_ObjC;
|
||||
}
|
||||
if (Guesser.isObjC())
|
||||
return FormatStyle::LK_ObjC;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return GuessedLanguage;
|
||||
}
|
||||
|
||||
llvm::Expected<FormatStyle> getStyle(StringRef StyleName, StringRef FileName,
|
||||
|
|
|
@ -11959,34 +11959,16 @@ TEST_F(FormatTest, StructuredBindings) {
|
|||
verifyFormat("auto const &[ a, b ] = f();", Spaces);
|
||||
}
|
||||
|
||||
struct GuessLanguageTestCase {
|
||||
const char *const FileName;
|
||||
const char *const Code;
|
||||
const FormatStyle::LanguageKind ExpectedResult;
|
||||
};
|
||||
|
||||
class GuessLanguageTest
|
||||
: public FormatTest,
|
||||
public ::testing::WithParamInterface<GuessLanguageTestCase> {};
|
||||
|
||||
TEST_P(GuessLanguageTest, FileAndCode) {
|
||||
auto TestCase = GetParam();
|
||||
EXPECT_EQ(TestCase.ExpectedResult,
|
||||
guessLanguage(TestCase.FileName, TestCase.Code));
|
||||
TEST_F(FormatTest, FileAndCode) {
|
||||
EXPECT_EQ(FormatStyle::LK_Cpp, guessLanguage("foo.cc", ""));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, guessLanguage("foo.m", ""));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, guessLanguage("foo.mm", ""));
|
||||
EXPECT_EQ(FormatStyle::LK_Cpp, guessLanguage("foo.h", ""));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, guessLanguage("foo.h", "@interface Foo\n@end\n"));
|
||||
EXPECT_EQ(FormatStyle::LK_Cpp, guessLanguage("foo", ""));
|
||||
EXPECT_EQ(FormatStyle::LK_ObjC, guessLanguage("foo", "@interface Foo\n@end\n"));
|
||||
}
|
||||
|
||||
static const GuessLanguageTestCase TestCases[] = {
|
||||
{"foo.cc", "", FormatStyle::LK_Cpp},
|
||||
{"foo.m", "", FormatStyle::LK_ObjC},
|
||||
{"foo.mm", "", FormatStyle::LK_ObjC},
|
||||
{"foo.h", "", FormatStyle::LK_Cpp},
|
||||
{"foo.h", "@interface Foo\n@end\n", FormatStyle::LK_ObjC},
|
||||
{"foo", "", FormatStyle::LK_Cpp},
|
||||
{"foo", "@interface Foo\n@end\n", FormatStyle::LK_ObjC},
|
||||
};
|
||||
INSTANTIATE_TEST_CASE_P(ValidLanguages, GuessLanguageTest,
|
||||
::testing::ValuesIn(TestCases));
|
||||
|
||||
} // end namespace
|
||||
} // end namespace format
|
||||
} // end namespace clang
|
||||
|
|
Loading…
Reference in New Issue