mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-31 20:44:18 +00:00
[clang-format] Fix bug where -dump-config failed on ObjC header
Summary: `clang-format -dump-config path/to/file.h` never passed anything for the Code parameter to clang::format::getStyle(). This meant the logic to guess Objective-C from the contents of a .h file never worked, because LibFormat didn't have the code to work with. With this fix, we now correctly read in the contents of the file if possible with -dump-config. I had to update the lit config for test/Format/ because the default config ignores .h files. Test Plan: make -j12 check-clang Reviewers: jolesiak, krasimir Reviewed By: jolesiak, krasimir Subscribers: Wizard, klimek, cfe-commits, djasper Differential Revision: https://reviews.llvm.org/D42395 llvm-svn: 323668
This commit is contained in:
parent
073971b243
commit
6845dec917
3
clang/test/Format/dump-config-cxx.h
Normal file
3
clang/test/Format/dump-config-cxx.h
Normal file
@ -0,0 +1,3 @@
|
||||
// RUN: clang-format -dump-config %s | FileCheck %s
|
||||
|
||||
// CHECK: Language: Cpp
|
5
clang/test/Format/dump-config-objc.h
Normal file
5
clang/test/Format/dump-config-objc.h
Normal file
@ -0,0 +1,5 @@
|
||||
// RUN: clang-format -dump-config %s | FileCheck %s
|
||||
|
||||
// CHECK: Language: ObjC
|
||||
@interface Foo
|
||||
@end
|
4
clang/test/Format/lit.local.cfg
Normal file
4
clang/test/Format/lit.local.cfg
Normal file
@ -0,0 +1,4 @@
|
||||
# Suffixes supported by clang-format.
|
||||
config.suffixes = ['.c', '.cc', '.cpp', '.h', '.m', '.mm', '.java', '.js',
|
||||
'.ts', '.proto', '.protodevel', '.pb.txt', '.textproto',
|
||||
'.textpb', '.asciipb', '.td']
|
@ -357,10 +357,27 @@ int main(int argc, const char **argv) {
|
||||
}
|
||||
|
||||
if (DumpConfig) {
|
||||
StringRef FileName;
|
||||
std::unique_ptr<llvm::MemoryBuffer> Code;
|
||||
if (FileNames.empty()) {
|
||||
// We can't read the code to detect the language if there's no
|
||||
// file name, so leave Code empty here.
|
||||
FileName = AssumeFileName;
|
||||
} else {
|
||||
// Read in the code in case the filename alone isn't enough to
|
||||
// detect the language.
|
||||
ErrorOr<std::unique_ptr<MemoryBuffer>> CodeOrErr =
|
||||
MemoryBuffer::getFileOrSTDIN(FileNames[0]);
|
||||
if (std::error_code EC = CodeOrErr.getError()) {
|
||||
llvm::errs() << EC.message() << "\n";
|
||||
return 1;
|
||||
}
|
||||
FileName = (FileNames[0] == "-") ? AssumeFileName : FileNames[0];
|
||||
Code = std::move(CodeOrErr.get());
|
||||
}
|
||||
llvm::Expected<clang::format::FormatStyle> FormatStyle =
|
||||
clang::format::getStyle(
|
||||
Style, FileNames.empty() ? AssumeFileName : FileNames[0],
|
||||
FallbackStyle);
|
||||
clang::format::getStyle(Style, FileName, FallbackStyle,
|
||||
Code ? Code->getBuffer() : "");
|
||||
if (!FormatStyle) {
|
||||
llvm::errs() << llvm::toString(FormatStyle.takeError()) << "\n";
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user