summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Format
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix parsing of classes where the class name is an absolute nested name ↵Manuel Klimek2014-07-311-0/+1
| | | | | | specifier. llvm-svn: 214393
* clang-format: Understand 'typename' in placement new.Daniel Jasper2014-07-301-0/+2
| | | | | | | | | | | | Before: new (aaaaaaaaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaa)) typename aaaaaaaaaaaaaaaaaaaaaaaa(); After: new (aaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaa)) typename aaaaaaaaaaaaaaaaaaaaaaaa(); llvm-svn: 214300
* clang-format: [proto] Improve formatting of text-proto options.Daniel Jasper2014-07-281-2/+21
| | | | | | Initial patch and tests by Kaushik Sridharan, thank you! llvm-svn: 214084
* clang-format: Improve operator and template recognition.Daniel Jasper2014-07-281-1/+2
| | | | | | | | | | Before: static_assert(is_convertible < A &&, B > ::value, "AAA"); After: static_assert(is_convertible<A &&, B>::value, "AAA"); llvm-svn: 214075
* clang-format: Improve pointer/reference detection.Daniel Jasper2014-07-281-3/+4
| | | | | | | | | | Before (with left pointer alignment): void f(int i = 0, SomeType* *temps = NULL); After: void f(int i = 0, SomeType** temps = NULL); llvm-svn: 214071
* clang-format: Fix unary operator recognition.Daniel Jasper2014-07-281-0/+1
| | | | | | | | | | Before: int x = ~ * p; After: int x = ~*p; llvm-svn: 214070
* clang-format: Fix formatting of lock annotations in lambda definitions.Daniel Jasper2014-07-281-0/+1
| | | | | | | | | | Before: SomeFunction([](int i)LOCKS_EXCLUDED(a) {}); After: SomeFunction([](int i) LOCKS_EXCLUDED(a) {}); llvm-svn: 214069
* clang-format: Fix parsing of conditional expressions.Daniel Jasper2014-07-171-0/+5
| | | | | | | | | | | | | | | Before: aaaaaa = aaaaaaaaaaaa ? aaaaaaaaaa ? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaaaaaaaaaaaaaaaaa; After: aaaaaa = aaaaaaaaaaaa ? aaaaaaaaaa ? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaaaaaaaaaaaaaaaaa; llvm-svn: 213258
* Make clang's rewrite engine a core featureAlp Toker2014-07-161-1/+1
| | | | | | | | | | | | | | | The rewrite facility's footprint is small so it's not worth going to these lengths to support disabling at configure time, particularly since key compiler features now depend on it. Meanwhile the Objective-C rewriters have been moved under the ENABLE_CLANG_ARCMT umbrella for now as they're comparatively heavy and still potentially worth excluding from lightweight builds. Tests are now passing with any combination of feature flags. The flags historically haven't been tested by LLVM's build servers so caveat emptor. llvm-svn: 213171
* clang-format: Improve heuristic around avoiding bad line breaks.Daniel Jasper2014-07-151-0/+8
| | | | | | | | | | | Now, this can be properly formatted: static_cast<A< // B> *>( // ); Before, clang-format could end up, not formatting the code at all. llvm-svn: 213055
* clang-format: Improve cast detection (fix false positive).Daniel Jasper2014-07-141-0/+1
| | | | | | | | | | Before: fn(a)(b)+1; After: fn(a)(b) + 1; llvm-svn: 212935
* clang-format: Fix behavior around pointer-to-member invocations.Daniel Jasper2014-07-091-0/+3
| | | | | | | | | | | | Before: (aaaaaaaaaa->* bbbbbbb)(aaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaa)); After: (aaaaaaaaaa->*bbbbbbb)( aaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaa)); llvm-svn: 212617
* clang-format: Add new option to indent wrapped function declarations.Daniel Jasper2014-07-091-0/+18
| | | | | | | | | Though not completely identical, make former IndentFunctionDeclarationAfterType change this flag for backwards compatibility (it is somewhat close in meaning and better the err'ing on an unknown config flag). llvm-svn: 212597
* clang-format: Revamp function declaration/definition indentation.Daniel Jasper2014-07-091-28/+33
| | | | | | | | | | | | | | Key changes: - Correctly (well ...) distinguish function declarations and variable declarations with ()-initialization. - Don't indent when breaking function declarations/definitions after the return type. - Indent variable declarations and typedefs when breaking after the type. This fixes llvm.org/PR17999. llvm-svn: 212591
* clang-format: Support member function reference qualifiers.Daniel Jasper2014-06-301-0/+5
| | | | | | | | | | | | | Before: string // break operator()() & {} After: string // break operator()() & {} llvm-svn: 212041
* clang-format: Improve expression heuristics.Daniel Jasper2014-06-301-0/+1
| | | | | | | | | | | | | Upon encountering a binary operator inside parentheses, assume that the parentheses contain an expression. Before: MACRO('0' <= c&& c <= '9'); After: MACRO('0' <= c && c <= '9'); llvm-svn: 212040
* clang-format: [JS] support free-standing functions again.Daniel Jasper2014-06-301-0/+11
| | | | | | | | | | | | | | | | | | | | | | | This worked initially but was broken by r210887. Before: function outer1(a, b) { function inner1(a, b) { return a; } inner1(a, b); } function outer2(a, b) { function inner2(a, b) { return a; } inner2(a, b); } After: function outer1(a, b) { function inner1(a, b) { return a; } inner1(a, b); } function outer2(a, b) { function inner2(a, b) { return a; } inner2(a, b); } Thanks to Adam Strzelecki for working on this. llvm-svn: 212038
* clang-format: Understand that breaking before lambdas is fine.Daniel Jasper2014-06-241-1/+3
| | | | | | | | | | | | Before: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa([]( const aaaaaaaaaa &a) { return a; }); After: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa( [](const aaaaaaaaaa &a) { return a; }); llvm-svn: 211575
* clang-format: [proto] Add required space before absolute references.Daniel Jasper2014-06-231-0/+3
| | | | llvm-svn: 211488
* clang-format: Fix corner case in pointer/reference detection.Daniel Jasper2014-06-231-0/+2
| | | | llvm-svn: 211487
* clang-format: Introduce style with spaces on both sides of */&.Daniel Jasper2014-06-171-5/+25
| | | | | | | Patch by Janusz Sobczak (slightly extended). This fixes llvm.org/19929. llvm-svn: 211098
* clang-format: [JS] Understand named function literals.Daniel Jasper2014-06-131-1/+8
| | | | | | | | | | | | | | | | | | | Before: return {a: function SomeFunction(){// ... return 1; } } ; After: return { a: function SomeFunction() { // ... return 1; } }; llvm-svn: 210887
* Fix msvc unittest build.Rafael Espindola2014-06-121-21/+25
| | | | | | Looks like msvc has an asymmetrical operator ==. llvm-svn: 210768
* Give clang-format its own error category.Rafael Espindola2014-06-121-25/+21
| | | | | | | | | The posix errno values are probably to the best thing to use for describing parse errors. This should also fix the mingw build. llvm-svn: 210739
* Use std::error_code instead of llvm::error_code.Rafael Espindola2014-06-111-6/+6
| | | | | | This is an update for a llvm api change. llvm-svn: 210688
* clang-format: Fix pointer/reference detection after decltype.Daniel Jasper2014-06-111-0/+1
| | | | | | | | | | Before: [](const decltype(*a) & value) {} After: [](const decltype(*a)& value) {} llvm-svn: 210643
* clang-format: [JS] Treat dict literals similar to objc method exprs.Daniel Jasper2014-06-101-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before: return { link: function() { f(); // } }; return { a: a, link: function() { f(); // } } After: return { link: function() { f(); // } }; return { a: a, link: function() { f(); // } }; llvm-svn: 210537
* clang-format: Increase penalty for wrapping array subscript expressionsDaniel Jasper2014-06-101-0/+4
| | | | | | | | | | | | | Before: aaaaaaaaaaa aaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaa->aaaaaaaaa[0].aaaaaaa [0].aaaaaaaaaaaaaaaaaaaaaa(); After: aaaaaaaaaaa aaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaa->aaaaaaaaa[0] .aaaaaaa[0] .aaaaaaaaaaaaaaaaaaaaaa(); llvm-svn: 210529
* clang-format: Fix enum formatting with specific comment.Daniel Jasper2014-06-101-1/+6
| | | | | | | | | | | | | | | Before: enum Fruit { // APPLE, PEAR }; After: enum Fruit { // APPLE, PEAR }; llvm-svn: 210522
* clang-format: Support variadic lambda captures.Daniel Jasper2014-06-101-0/+3
| | | | | | | | | | Before: return [ i, args... ]{}; After: return [i, args...] {}; llvm-svn: 210514
* clang-format: Handle multiline strings inside ternary expressions.Daniel Jasper2014-06-101-0/+6
| | | | | | | With AlwaysSplitBeforeMultilineStrings, clang-format would not find any valid solution. llvm-svn: 210513
* clang-format: Fix incorrect indentation.Daniel Jasper2014-06-061-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | Before (JavaScript example, but can extend to other languages): return { a: 'E', b: function() { return function() { f(); // This is wrong. }; } }; After: return { a: 'E', b: function() { return function() { f(); // This is better. }; } }; llvm-svn: 210334
* clang-format: Leave empty lines within UnwrappedLines.Daniel Jasper2014-06-041-6/+24
| | | | | | | | These are commonly used to structure things like enums or long braced lists. There doesn't seem to be a good reason to have the behavior in such structures be different from the behavior between statements. llvm-svn: 210183
* clang-format: Refactor indentation behavior for multiple nested blocks.Daniel Jasper2014-06-031-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a few oddities when formatting multiple nested JavaScript blocks, e.g.: Before: promise.then( function success() { doFoo(); doBar(); }, [], function error() { doFoo(); doBaz(); }); promise.then([], function success() { doFoo(); doBar(); }, function error() { doFoo(); doBaz(); }); After: promise.then( function success() { doFoo(); doBar(); }, [], function error() { doFoo(); doBaz(); }); promise.then([], function success() { doFoo(); doBar(); }, function error() { doFoo(); doBaz(); }); llvm-svn: 210097
* clang-format: Fix special case of binary operator detection.Daniel Jasper2014-06-021-0/+1
| | | | | | | | | | | | | | | | | There is a pattern where evaluation order is used as control flow. This patch special-cases a commonly occuring version of this pattern. Before: Aaaaa *aaa = nullptr; // ... aaa &&aaa->f(); After: Aaaaa *aaa = nullptr; // ... aaa && aaa->f(); llvm-svn: 210017
* clang-format: No space between ")" and braced init list.Daniel Jasper2014-06-021-4/+5
| | | | | | | | | | | | Before: auto j = decltype(i) {}; After: auto j = decltype(i){}; This fixes llvm.org/PR19892. llvm-svn: 210013
* clang-format: Fix Allman brace breaking of enums.Daniel Jasper2014-06-021-0/+5
| | | | | | | | | | | | | | | | | | Before: enum Side { LEFT, RIGHT }; After: enum Side { LEFT, RIGHT }; This fixes llvm.org/PR19911. llvm-svn: 210011
* clang-format: Fix trailing const (etc.) with Allman brace style.Daniel Jasper2014-06-021-0/+7
| | | | | | | | | | | | | | | | | | Before: void someLongFunction(int someLongParameter) const { } After: void someLongFunction( int someLongParameter) const { } This fixes llvm.org/PR19912. llvm-svn: 210010
* There is no std::errc:success, remove the llvm one.Rafael Espindola2014-05-311-14/+13
| | | | llvm-svn: 209959
* clang-format: Don't break before a case's colon.Daniel Jasper2014-05-281-0/+7
| | | | | | | | | | | | | | | | | | Before (with just the right line length: switch (a) { case some_namespace::some_constant : return; } After: switch (a) { case some_namespace:: some_constant: return; } llvm-svn: 209725
* clang-format: Format array and dict literals similar to blocks.Daniel Jasper2014-05-281-3/+11
| | | | | | | | | | | | | | | | | | | | | | | Especially, reduce the amount of indentation if it doesn't increase readability. Before: NSMutableDictionary* dictionary = [NSMutableDictionary dictionaryWithDictionary:@{ aaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbb : bbbbb, cccccccccccccccc : ccccccccccccccc }]; After: NSMutableDictionary* dictionary = [NSMutableDictionary dictionaryWithDictionary:@{ aaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbb : bbbbb, cccccccccccccccc : ccccccccccccccc }]; llvm-svn: 209720
* clang-format: Keep '{' of dict literals on the same line in Allman styleDaniel Jasper2014-05-261-3/+11
| | | | | | | | | | | | | | | | | | | | Before: void f() { [object someMethod:@ { @"a" : @"b" }]; } After: void f() { [object someMethod:@{ @"a" : @"b" }]; } This fixes llvm.org/PR19854. llvm-svn: 209615
* clang-format: Don't use Allman brace breaking for ObjC blocks.Daniel Jasper2014-05-221-0/+10
| | | | | | It just seems wrong. This fixes llvm.org/PR19736. llvm-svn: 209440
* clang-format: Fix corner case in AllowShortBlocksOnASingleLine.Daniel Jasper2014-05-221-0/+5
| | | | | | | | | | | | | | | | Before: template <int> struct A4 { A4() { } }; After: template <int i> struct A4 { A4() {} }; This fixes llvm.org/PR19813 (at least the part that isn't working as intended). llvm-svn: 209438
* clang-format: Fix braced list detection.Daniel Jasper2014-05-221-4/+10
| | | | | | | | | | | | | Before: static_assert(std::is_integral<int> {} + 0, ""); int a = std::is_integral<int> {} + 0; After: static_assert(std::is_integral<int>{} + 0, ""); int a = std::is_integral<int>{} + 0; llvm-svn: 209431
* clang-format: Fix incorrect braced init identification.Daniel Jasper2014-05-221-0/+3
| | | | | | | | | | | | | | | | | | | | Before: int foo(int i) { return fo1 {} (i); } int foo(int i) { return fo1 {} (i); } After: int foo(int i) { return fo1{}(i); } int foo(int i) { return fo1{}(i); } This fixes llvm.org/PR19812. llvm-svn: 209428
* clang-format: [JS] Understand line breaks in concatenated strings.Daniel Jasper2014-05-221-0/+5
| | | | | | | | | | | | | | Before: var literal = 'hello ' + 'world'; After: var literal = 'hello ' + 'world'; There is no reason to concatenated two string literals with a '+' unless the line break is intended. llvm-svn: 209413
* clang-format: Correctly identify multiplications in braces init lists.Daniel Jasper2014-05-221-3/+2
| | | | | | | | | | | | | Before: int i{a *b}; After: int i{a * b}; Also fix unrelated issue where braced init lists were counted as blocks and prevented single-line functions. llvm-svn: 209412
* clang-format: Correctly calculate line lenghts for nest blocks.Daniel Jasper2014-05-222-16/+13
| | | | | | | | | | | | | | | If simple (one-statement) blocks can be inlined, the length needs to be calculated correctly. Before (in JavaScript but this also affects lambdas, etc.): var x = { valueOf: function() { return 1; } }; After: var x = {valueOf: function() { return 1; }}; llvm-svn: 209410
* clang-format: Fix corner case working around one-per-line dict literals.Daniel Jasper2014-05-211-0/+5
| | | | | | | | | | | | | | | Before: var object_literal_with_long_name = { a: 'aaaaaaaaaaaaaaaaaa', b: 'bbbbbbbbbbbbbbbbbb' }; After: var object_literal_with_long_name = { a: 'aaaaaaaaaaaaaaaaaa', b: 'bbbbbbbbbbbbbbbbbb' }; llvm-svn: 209296
OpenPOWER on IntegriCloud