llvm-capstone/clang
mydeveloperday ffb48d48e4 [clang-format] successive C# attributes cause line breaking issues
{D74265} reduced the aggressiveness of line breaking following C# attributes, however this change removed any support for attributes on properties, causing significant ugliness to be introduced.

This revision goes some way to addressing that by re-introducing the more aggressive check to `mustBreakBefore()`, but constraining it to the most common cases where we use properties which should not impact the "caller info attributes"  or the "[In , Out]" decorations that are normally put on pinvoke

It does not address my additional concerns of the original change regarding multiple C# attributes, as these are somewhat incorrectly handled by virtue of the fact its not recognising the second attribute as an attribute at all. But instead thinking its an array.

The purpose of this revision is to get back to where we were for the most common of cases as a stepping stone to resolving this. However {D74265} has broken a lot of C# code and this revision will go someway alone to addressing the majority.

Reviewed By: jbcoe, HazardyKnusperkeks, curdeius

Differential Revision: https://reviews.llvm.org/D103307
2021-05-29 16:43:55 +01:00
..
bindings
cmake [Fuchsia][CMake] Add missing include path. 2021-05-26 19:59:53 -07:00
docs [clang-format] New BreakInheritanceList style AfterComma 2021-05-28 18:24:00 -05:00
examples
include [analyzer] Use Optional as a return type of StoreManager::castRegion 2021-05-29 15:16:56 +03:00
INPUTS
lib [clang-format] successive C# attributes cause line breaking issues 2021-05-29 16:43:55 +01:00
runtime
test [analyzer] Use Optional as a return type of StoreManager::castRegion 2021-05-29 15:16:56 +03:00
tools Reimplement __builtin_unique_stable_name- 2021-05-27 07:12:20 -07:00
unittests [clang-format] successive C# attributes cause line breaking issues 2021-05-29 16:43:55 +01:00
utils Reapply "[clang][deps] Support inferred modules" 2021-05-20 12:41:52 +02:00
www Added a faster method to clone llvm project [DOCS] 2021-05-05 21:37:53 +05:30
.clang-format
.clang-tidy Disable misc-no-recursion checking in Clang 2021-05-27 10:39:04 -04:00
.gitignore Remove .gitignore entries not relevant in the monorepo. 2021-04-07 12:25:02 -07:00
CMakeLists.txt
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:             http://clang.llvm.org/
Building and using Clang:         http://clang.llvm.org/get_started.html
Clang Static Analyzer:            http://clang-analyzer.llvm.org/
Information on the LLVM project:  http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/