Daniel Jasper
81dbb564a1
clang-format: [JS] Fix bug in type colon detection.
...
Before, this couldn't be formatted at all:
class X {
subs = {
'b': {
'c': 1,
},
};
}
llvm-svn: 238907
2015-06-03 08:43:18 +00:00
Daniel Jasper
e497beddb5
clang-format: [JS] Always add space after fat arrow.
...
Before:
return () =>[];
After:
return () => [];
llvm-svn: 238875
2015-06-02 22:06:07 +00:00
Daniel Jasper
d492b5ec03
clang-format: [JS] Array literal detection fix #4 .
...
llvm-svn: 238873
2015-06-02 21:57:51 +00:00
Daniel Jasper
1feab0f95e
clang-format: Don't try to detect C++ lambdas in other languages.
...
llvm-svn: 238845
2015-06-02 15:31:37 +00:00
Daniel Jasper
199d0c9e76
clang-format: [JS] Fix incorrect line length calculation.
...
llvm-svn: 238841
2015-06-02 15:14:21 +00:00
Daniel Jasper
40432cee93
clang-format: [JS] Array literal detection fix #3 .
...
llvm-svn: 238839
2015-06-02 15:04:29 +00:00
Daniel Jasper
4284e3623c
clang-format: [JS] Fix another regression when detecting array literals.
...
llvm-svn: 238835
2015-06-02 14:20:08 +00:00
Daniel Jasper
5ce80de4de
clang-format: [JS] Fix regression of detecting array literals.
...
llvm-svn: 238832
2015-06-02 13:56:43 +00:00
Daniel Jasper
1699eca119
clang-format: [JS] Making arrow function wrapping more consistent.
...
Before:
someFunction(() =>
{
doSomething(); // break
})
.doSomethingElse( // break
);
After:
someFunction(() => {
doSomething(); // break
})
.doSomethingElse( // break
);
This is still bad, but at least it is consistent with what we do for other
function literals. Added corresponding tests.
llvm-svn: 238736
2015-06-01 09:56:32 +00:00
Daniel Jasper
cd8d4ff985
clang-format: [JS] Fix line breaks in computed property names.
...
Before:
let foo = {
[someLongKeyHere]: 1,
someOtherLongKeyHere: 2, [keyLongEnoughToWrap]: 3,
lastLongKey: 4
};
After:
let foo = {
[someLongKeyHere]: 1,
someOtherLongKeyHere: 2,
[keyLongEnoughToWrap]: 3,
lastLongKey: 4
};
llvm-svn: 238671
2015-05-31 08:40:37 +00:00
Daniel Jasper
8c42d445e3
clang-format: [JS] Support ES6 computed property names.
...
Before:
var x = {
[a]: 1,
b: 2
};
After:
var x = {
[a]: 1,
b: 2
};
llvm-svn: 238544
2015-05-29 06:19:49 +00:00
Daniel Jasper
f841d3a6c1
clang-format: Lower binding strengths created by the [] created by ObjC
...
method expressions and array literals. They should not bind stronger
than regular parentheses or the braces of braced lists.
Specific test case in JavaScript:
Before:
var aaaaa: List<
SomeThing> = [new SomeThingAAAAAAAAAAAA(), new SomeThingBBBBBBBBB()];
After:
var aaaaa: List<SomeThing> = [
new SomeThingAAAAAAAAAAAA(),
new SomeThingBBBBBBBBB()
];
llvm-svn: 238400
2015-05-28 07:21:50 +00:00
Daniel Jasper
3e0dcc27d5
clang-format: [JS] Fix incorrect detection of ternary expressions.
...
A definintion like this could not be formatted at all:
constructor({aa}: {
aa?: string,
aaaaaaaa?: string,
aaaaaaaaaaaaaaa?: boolean,
aaaaaa?: List<string>
}) {
}
llvm-svn: 238291
2015-05-27 05:37:40 +00:00
Daniel Jasper
0805199185
clang-format: [JS] Support ES6 spread operator.
...
Specifically, don't add a space before it.
Before:
someFunction(... a);
var x = [1, 2, ... a];
After:
someFunction(...a);
var x = [1, 2, ...a];
llvm-svn: 238183
2015-05-26 07:18:56 +00:00
Manuel Klimek
79e06081a3
clang-format: [JS] Better support for fat arrows.
...
Assigns a token type (TT_JsFatArrow) to => tokens, and uses that to
more easily recognize and format fat arrow functions.
Improves function parsing to better recognize formal parameter
lists and return type declarations.
Recognizes arrow functions and parse function bodies as child blocks.
Patch by Martin Probst.
llvm-svn: 237895
2015-05-21 12:23:34 +00:00
Daniel Jasper
668c7bb34f
clang-format: [JS] Parse exported functions as free-standing.
...
Before:
export function foo() {} export function bar() {}
After:
export function foo() {
}
export function bar() {
}
llvm-svn: 236978
2015-05-11 09:03:10 +00:00
Daniel Jasper
7325aee167
clang-format: [JS] Avoid bad line-warp around "function".
...
Before:
someLooooooooongFunction(
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, function(
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {
// code
});
After:
someLooooooooongFunction(
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
function(aaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {
// code
});
llvm-svn: 236813
2015-05-08 08:38:52 +00:00
Daniel Jasper
69694b0691
clang-format: [JS] Fix regex literal detection.
...
Before:
var regex = /= / ;
After:
var regex = /=/;
llvm-svn: 236811
2015-05-08 07:55:13 +00:00
Daniel Jasper
9326f91922
clang-format: [JS] support optional methods.
...
Optional methods use ? tokens like this:
interface X { y?(): z; }
It seems easiest to detect and disambiguate these from ternary
expressions by checking if the code is in a declaration context. Turns
out that that didn't quite work properly for interfaces in Java and JS,
and for JS file root contexts.
Patch by Martin Probst, thank you.
llvm-svn: 236488
2015-05-05 08:40:32 +00:00
Daniel Jasper
2964749cfa
clang-format: [JS] Do not collapse short interfaces.
...
Patch by Martin Probst.
llvm-svn: 236485
2015-05-05 08:12:50 +00:00
Daniel Jasper
f69b922e57
clang-format: [JS] Fix calculation of template string width.
...
OriginalColumn might not be set, so fall back to Location and SourceMgr
in case it is missing. Also initialize end column in case the token is
multi line, but it's the ` token itself that starts the multi line.
Patch by Martin Probst, thank you!
llvm-svn: 236383
2015-05-02 08:05:38 +00:00
Daniel Jasper
d22190632c
clang-format: [JS] Fix templated parameter default values.
...
Parameters can have templated types and default values (= ...), which is
another location in which a template closer should be followed by
whitespace.
Patch by Martin Probst, thank you.
llvm-svn: 236382
2015-05-02 07:54:58 +00:00
Daniel Jasper
0d6ac27b86
clang-format: [JS] handle comments in template strings.
...
Patch by Martin Probst. Thank you.
llvm-svn: 235078
2015-04-16 08:20:51 +00:00
Daniel Jasper
d9309774a6
clang-format: [JS] Support index signature types.
...
Patch by Martin Probst.
llvm-svn: 234754
2015-04-13 15:03:30 +00:00
Daniel Jasper
a74f5072e1
clang-format: [JS] support optionality markers in JS types.
...
Patch by Martin Probst. Thank you.
llvm-svn: 234753
2015-04-13 15:01:40 +00:00
Daniel Jasper
6a5d38d2ee
clang-format: [JS] Allow periods and commata in class declarations.
...
Patch by Martin Probst. Thank you.
llvm-svn: 234752
2015-04-13 14:56:54 +00:00
Daniel Jasper
acf67e3ecd
clang-format: Improve nested block formatting.
...
Before:
functionA(functionB({
int i;
int j;
}),
aaaa, bbbb, cccc);
After:
functionA(functionB({
int i;
int j;
}),
aaaa, bbbb, cccc);
llvm-svn: 234304
2015-04-07 08:20:35 +00:00
Daniel Jasper
739ec534d2
clang-format: [JS] Understand object literals with only methods.
...
Before:
let theObject = {someMethodName() {
doTheThing();
doTheOtherThing();
},
someOtherMethodName() {
doSomething();
doSomethingElse();
}};
After:
let theObject = {
someMethodName() {
doTheThing();
doTheOtherThing();
},
someOtherMethodName() {
doSomething();
doSomethingElse();
}
};
llvm-svn: 234091
2015-04-04 07:56:55 +00:00
Daniel Jasper
f46dec86b6
clang-format: [JS] Support getters, setters and methods in object literals.
...
llvm-svn: 233698
2015-03-31 14:34:15 +00:00
Daniel Jasper
02c7bca5d1
clang-format: [JS] Fix comment formatting in goog.scopes.
...
Before:
goog.scope(function() {
// test
var x = 0;
// test
});
After:
goog.scope(function() {
// test
var x = 0;
// test
});
llvm-svn: 233530
2015-03-30 09:56:50 +00:00
Daniel Jasper
bc46b939e6
clang-format: [JS] support cast syntax and type arguments.
...
Casts in TS syntax (foo = <type>bar;) should not be followed by
whitespace.
Patch by Martin Probst. Thank you.
llvm-svn: 232321
2015-03-15 13:59:51 +00:00
Daniel Jasper
60948b12bb
clang-format: [JS] more precisely detect enums.
...
The current enum detection is overly aggressive. As NestingLevel only
applies per line (?) it classifies many if not most object literals as
enum declarations and adds superfluous line breaks into them. This
change narrows the heuristic by requiring an assignment just before the
open brace and requiring the line to start with an identifier.
Patch by Martin Probst. Thank you.
llvm-svn: 232320
2015-03-15 13:55:54 +00:00
Daniel Jasper
a0ef4f36c8
clang-format: [js] Support template strings.
...
Merge template strings (marked by backticks ``).
Do not format any contents of template strings.
Patch by Martin Probst. Thank you.
llvm-svn: 230011
2015-02-20 13:47:38 +00:00
Daniel Jasper
fca735cd58
clang-format: [js] Support ES6 module exports.
...
Patch by Martin Probst, thank you!
llvm-svn: 229865
2015-02-19 16:14:18 +00:00
Daniel Jasper
354aa51587
clang-format: [js] Support ES6 module imports.
...
Patch by Martin Probst.
llvm-svn: 229863
2015-02-19 16:07:32 +00:00
Daniel Jasper
6fa9ec7885
clang-format: [js] Do not fall through for JS structural elements.
...
Patch by Martin Probst. Thank you.
llvm-svn: 229862
2015-02-19 16:03:16 +00:00
Daniel Jasper
3c42dba2dc
clang-format: [JS] support AtScript style annotations for JS.
...
Based on Java annotation support and style.
Patch by Martin Probst.
llvm-svn: 229703
2015-02-18 17:17:15 +00:00
Daniel Jasper
8370908667
clang-format: [JS] Support classes.
...
This adds support for JavaScript class definitions (again following
TypeScript & AtScript style). This only required support for
visibility modifiers in JS, everything else was already working.
Patch by Martin Probst, thank you.
llvm-svn: 229701
2015-02-18 17:14:05 +00:00
Daniel Jasper
b10bdff337
clang-format: [JS] Support type annotations.
...
This patch adds support for type annotations that follow TypeScript's,
Flow's, and AtScript's syntax style.
Patch by Martin Probst, thank you.
Review: http://reviews.llvm.org/D7721
llvm-svn: 229700
2015-02-18 17:09:53 +00:00
Daniel Jasper
0580ff0ec6
clang-format: Fix incorrect calculation of token lenghts.
...
This led, e.g. to break JavaScript regex literals too early.
llvm-svn: 224419
2014-12-17 09:11:08 +00:00
Daniel Jasper
11a0ac66e1
clang-format: Revamp nested block formatting.
...
This fixed llvm.org/PR21804 and hopefully a few other strange cases.
Before:
if (blah_blah(whatever, whatever, [] {
doo_dah();
doo_dah();
})) {
}
}
After:
if (blah_blah(whatever, whatever, [] {
doo_dah();
doo_dah();
})) {
}
}
llvm-svn: 224112
2014-12-12 09:40:58 +00:00
Daniel Jasper
a4e55f4d1e
clang-format: [JS] Don't put top-level dict literals on a single line.
...
These are often used for enums which apparently are easier to read if
formatted with one element per line.
llvm-svn: 223367
2014-12-04 16:07:17 +00:00
Daniel Jasper
41368e9e07
clang-format: [JS] Contract fewer functions to a single line.
...
Before:
var someVariable =
function(x) { return x.zIsTooLongForOneLineWithTheDeclarationLine(); };
After:
var someVariable = function(x) {
return x.zIsTooLongForOneLineWithTheDeclarationLine();
};
llvm-svn: 222893
2014-11-27 15:37:42 +00:00
Daniel Jasper
4087432f8b
clang-format: [JS] Try not to break in container literals.
...
Before:
var obj = {
fooooooooo:
function(x) { return x.zIsTooLongForOneLineWithTheDeclarationLine(); }
};
After:
var obj = {
fooooooooo: function(x) {
return x.zIsTooLongForOneLineWithTheDeclarationLine();
}
};
llvm-svn: 222892
2014-11-27 15:24:48 +00:00
Daniel Jasper
7912123893
clang-format: [JS] new and delete are valid function names.
...
Before:
someObject.new ();
someObject.delete ();
After:
someObject.new();
someObject.delete();
llvm-svn: 222890
2014-11-27 14:55:17 +00:00
Daniel Jasper
53c38f4e79
clang-format: [JS] Make Closure module detection more narrow.
...
Before:
var MyLongClassName = goog.module.get('my.long.module.name.followedBy.MyLongClassName');
After:
var MyLongClassName =
goog.module.get('my.long.module.name.followedBy.MyLongClassName');
llvm-svn: 222888
2014-11-27 14:46:03 +00:00
Daniel Jasper
616de864da
clang-format: [JS] Support Closure's module statements.
...
These are like import statements and should not be line-wrapped. Minor
restructuring of the handling of other import statements.
llvm-svn: 222637
2014-11-23 16:46:28 +00:00
Daniel Jasper
e551bb70a3
Revert "clang-format: [js] Updates to Google's JavaScript style."
...
This reverts commit eefd2eaad43c5c2b17953ae7ed1e72b28e696f7b.
Apparently, this change was a bit premature.
llvm-svn: 221365
2014-11-05 17:22:31 +00:00
Daniel Jasper
f739b0dbfa
clang-format: [js] Updates to Google's JavaScript style.
...
The style guide is changing..
llvm-svn: 220977
2014-10-31 17:50:40 +00:00
Daniel Jasper
49a9a2833b
clang-format: [JS] Support more regex literals.
...
Previously a regex-literal containing "/*" would through clang-format
off, e.g.:
var regex = /\/*$/;
Would lead to none of the following code to be formatted.
llvm-svn: 220860
2014-10-29 16:51:38 +00:00