hanchenye-llvm-project/clang/tools
Paul Hoad cbb726d0c5 [clang-format] Add basic support for formatting C# files
Summary:

This revision adds basic support for formatting C# files with clang-format, I know the barrier to entry is high here  so I'm sending this revision in to test the water as to whether this might be something we'd consider landing.

Tracking in Bugzilla as:
https://bugs.llvm.org/show_bug.cgi?id=40850

Justification:
C# code just looks ugly in comparison to the C++ code in our source tree which is clang-formatted.

I've struggled with Visual Studio reformatting to get a clean and consistent style, I want to format our C# code on saving like I do now for C++ and i want it to have the same style as defined in our .clang-format file, so it consistent as it can be with C++.  (Braces/Breaking/Spaces/Indent etc..)

Using clang format without this patch leaves the code in a bad state, sometimes when the BreakStringLiterals is set, it  fails to compile.

Mostly the C# is similar to Java, except instead of JavaAnnotations I try to reuse the TT_AttributeSquare.

Almost the most valuable portion is to have a new Language in order to partition the configuration for C# within a common .clang-format file, with the auto detection on the .cs extension. But there are other C# specific styles that could be added later if this is accepted. in particular how  `{ set;get }` is formatted.

Reviewers: djasper, klimek, krasimir, benhamilton, JonasToth

Reviewed By: klimek

Subscribers: llvm-commits, mgorny, jdoerfert, cfe-commits

Tags: #clang, #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D58404

llvm-svn: 356662
2019-03-21 13:09:22 +00:00
..
arcmt-test Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
c-arcmt-test [CMake] Use PRIVATE in target_link_libraries for executables 2017-12-05 21:49:56 +00:00
c-index-test [libclang] Avoid crashing when getting layout info of an undeduced type. 2019-02-26 15:04:18 +00:00
clang-check Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
clang-diff Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
clang-extdef-mapping Fix file headers. NFC 2019-03-01 06:49:51 +00:00
clang-format [clang-format] Add basic support for formatting C# files 2019-03-21 13:09:22 +00:00
clang-format-vs Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
clang-fuzzer Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
clang-import-test Fix file headers. NFC 2019-03-01 06:49:51 +00:00
clang-offload-bundler Allow bundle size to be 0 in clang-offload-bundler 2019-03-05 17:52:32 +00:00
clang-refactor Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
clang-rename Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
diag-build
diagtool [clang] Switch to LLVM_ENABLE_IDE 2019-02-20 23:08:43 +00:00
driver [build] Rename clang-headers to clang-resource-headers 2019-03-04 21:19:53 +00:00
libclang [libclang] Expose aligned() attribute. 2019-03-13 16:16:54 +00:00
scan-build [analyzer] Teach scan-build to find clang when installed in /usr/local/bin/ 2019-03-16 01:01:29 +00:00
scan-build-py [tools] Fix python DeprecationWarning: invalid escape sequence 2019-02-11 15:03:17 +00:00
scan-view Portable Python script across Python version 2019-01-03 14:26:56 +00:00
CMakeLists.txt [analyzer][CrossTU][NFC] Generalize to external definitions instead of external functions 2019-01-10 17:44:04 +00:00