Merge branch 'master' of https://github.com/dlang-community/dfmt into master
This commit is contained in:
commit
0ff045669e
2
dub.json
2
dub.json
|
@ -4,7 +4,7 @@
|
|||
"targetType": "autodetect",
|
||||
"license": "BSL-1.0",
|
||||
"dependencies": {
|
||||
"libdparse": "~>0.14.0"
|
||||
"libdparse": ">=0.14.0 <0.16.0"
|
||||
},
|
||||
"targetPath" : "bin/",
|
||||
"targetName" : "dfmt",
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 597d9a697b1f8a51fb2f441c61d0c6cc4eadc6d1
|
||||
Subproject commit 1557eb079a2d5958e0a7136f942eea0922d58e8a
|
|
@ -212,7 +212,9 @@ private:
|
|||
{
|
||||
immutable t = tokens[index].type;
|
||||
if (t == tok!"identifier" || isStringLiteral(t)
|
||||
|| isNumberLiteral(t) || t == tok!"characterLiteral")
|
||||
|| isNumberLiteral(t) || t == tok!"characterLiteral"
|
||||
// a!"b" function()
|
||||
|| t == tok!"function" || t == tok!"delegate")
|
||||
write(" ");
|
||||
}
|
||||
}
|
||||
|
@ -1620,16 +1622,21 @@ private:
|
|||
{
|
||||
import std.range : assumeSorted;
|
||||
import std.algorithm.comparison : min;
|
||||
import std.algorithm.searching : countUntil;
|
||||
import std.algorithm.searching : canFind, countUntil;
|
||||
|
||||
// The end of the tokens considered by the line break algorithm is
|
||||
// either the expression end index or the next mandatory line break,
|
||||
// whichever is first.
|
||||
// either the expression end index or the next mandatory line break
|
||||
// or a newline inside a string literal, whichever is first.
|
||||
auto r = assumeSorted(astInformation.ufcsHintLocations).upperBound(tokens[i].index);
|
||||
immutable ufcsBreakLocation = r.empty
|
||||
? size_t.max
|
||||
: tokens[i .. $].countUntil!(t => t.index == r.front) + i;
|
||||
immutable size_t j = min(expressionEndIndex(i), ufcsBreakLocation);
|
||||
immutable multilineStringLocation = tokens[i .. $]
|
||||
.countUntil!(t => t.text.canFind('\n'));
|
||||
immutable size_t j = min(
|
||||
expressionEndIndex(i),
|
||||
ufcsBreakLocation,
|
||||
multilineStringLocation == -1 ? size_t.max : multilineStringLocation + i + 1);
|
||||
// Use magical negative value for array literals and wrap indents
|
||||
immutable inLvl = (indents.topIsWrap() || indents.topIs(tok!"]")) ? -indentLevel
|
||||
: indentLevel;
|
||||
|
@ -1713,7 +1720,14 @@ private:
|
|||
}
|
||||
else if (currentIs(tok!"case") || currentIs(tok!"default"))
|
||||
{
|
||||
if (peekBackIs(tok!"}", true) || peekBackIs(tok!";", true))
|
||||
|
||||
if (peekBackIs(tok!"}", true) || peekBackIs(tok!";", true)
|
||||
/**
|
||||
* The following code is valid and should be indented flatly
|
||||
* case A:
|
||||
* case B:
|
||||
*/
|
||||
|| peekBackIs(tok!":", true))
|
||||
{
|
||||
indents.popTempIndents();
|
||||
if (indents.topIs(tok!"case"))
|
||||
|
@ -1830,7 +1844,11 @@ private:
|
|||
case tok!"wstringLiteral":
|
||||
case tok!"dstringLiteral":
|
||||
immutable o = current.text.retro().countUntil('\n');
|
||||
currentLineLength += o == -1 ? current.text.length : o;
|
||||
if (o == -1) {
|
||||
currentLineLength += current.text.length;
|
||||
} else {
|
||||
currentLineLength = cast(uint) o;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
currentLineLength += current.text.length;
|
||||
|
|
|
@ -172,9 +172,6 @@ size_t[] chooseLineBreakTokens(size_t index, const Token[] tokens,
|
|||
void validMoves(OR)(auto ref OR output, const Token[] tokens, immutable short[] depths,
|
||||
uint current, const Config* config, int currentLineLength, int indentLevel)
|
||||
{
|
||||
import std.algorithm : sort, canFind, min;
|
||||
import std.array : insertInPlace;
|
||||
|
||||
foreach (i, token; tokens)
|
||||
{
|
||||
if (!isBreakToken(token.type) || (((1 << i) & current) != 0))
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
string BuildForwardCall()
|
||||
{
|
||||
return `static if (is(typeof(mocked___.` ~ methodString ~ argsPassed ~ `)))
|
||||
{
|
||||
return (mocked___.` ~ methodString ~ argsPassed ~ `);
|
||||
}`;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
module tests.issue0483;
|
||||
|
||||
void main()
|
||||
{
|
||||
switch (0)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
label:
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
alias f1 = S function();
|
||||
alias f2 = S!"foo" function();
|
||||
alias f3 = S!5 function();
|
||||
alias f4 = S!S function();
|
||||
alias f5 = S!(S) function();
|
|
@ -0,0 +1,7 @@
|
|||
string BuildForwardCall()
|
||||
{
|
||||
return `static if (is(typeof(mocked___.` ~ methodString ~ argsPassed ~ `)))
|
||||
{
|
||||
return (mocked___.` ~ methodString ~ argsPassed ~ `);
|
||||
}`;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
--align_switch_statements=false
|
|
@ -0,0 +1,15 @@
|
|||
module tests.issue0483;
|
||||
|
||||
void main()
|
||||
{
|
||||
switch (0)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
label:
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
alias f1 = S function();
|
||||
alias f2 = S!"foo" function();
|
||||
alias f3 = S!5 function();
|
||||
alias f4 = S!S function();
|
||||
alias f5 = S!(S) function();
|
|
@ -0,0 +1,6 @@
|
|||
string BuildForwardCall() {
|
||||
return `static if (is(typeof(mocked___.` ~ methodString ~ argsPassed ~ `)))
|
||||
{
|
||||
return (mocked___.` ~ methodString ~ argsPassed ~ `);
|
||||
}`;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
module tests.issue0483;
|
||||
|
||||
void main() {
|
||||
switch (0) {
|
||||
case 1:
|
||||
case 2:
|
||||
label:
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
alias f1 = S function();
|
||||
alias f2 = S!"foo" function();
|
||||
alias f3 = S!5 function();
|
||||
alias f4 = S!S function();
|
||||
alias f5 = S!(S) function();
|
Loading…
Reference in New Issue