Allow comments in selective imports. (#403)

Allow comments in selective imports.
merged-on-behalf-of: Brian Schott <Hackerpilot@users.noreply.github.com>
This commit is contained in:
Bastiaan Veelo 2018-10-19 01:45:52 +02:00 committed by The Dlang Bot
parent 6ad2fbb6fc
commit 92d5e1ac8c
7 changed files with 107 additions and 24 deletions

View file

@ -523,29 +523,20 @@ private:
if (config.dfmt_selective_import_space)
write(" ");
writeToken();
write(" ");
}
else if (currentIs(tok!","))
{
// compute length until next ',' or ';'
int lengthOfNextChunk;
for (size_t i = index + 1; i < tokens.length; i++)
{
if (tokens[i].type == tok!"," || tokens[i].type == tok!";")
break;
const len = tokenLength(tokens[i]);
assert(len >= 0);
lengthOfNextChunk += len;
}
assert(lengthOfNextChunk > 0);
writeToken();
if (currentLineLength + 1 + lengthOfNextChunk >= config.dfmt_soft_max_line_length)
{
pushWrapIndent(tok!",");
newline();
}
else
if (!currentIs(tok!"comment"))
write(" ");
pushWrapIndent(tok!",");
}
else if (currentIs(tok!"comment"))
{
if (peekBack.line != current.line)
{
// The comment appears on its own line, keep it there.
if (!peekBackIs(tok!"comment"))
// Comments are already properly separated.
newline();
}
formatStep();
}
else
formatStep();

View file

@ -1,5 +1,6 @@
import super_long_import_module_name : withSuperLongSymbolNames, andAlsoLotsOfThem;
import super_long_import_module_name : withSuperLongSymbolNames,
andAlsoLotsOfThem;
andAlsoLotsOfThem, lotsAnsLots, andLots, andLotsOfThem, lineExceeds120;
private:
void foo();

View file

@ -0,0 +1,30 @@
import std.stdio : readln, /* comment1 */ writeln;
import std.stdio : readln, // comment2
writeln;
import std.stdio : readln,
// comment3
writeln;
import std.stdio : readln,
/* comment4 */
writeln;
import std.stdio : readln, readln, readln, readln, readln, readln, readln,
readln, readln, readln, readln,
// comment5
writeln;
import std.stdio : // comment6
readln, readln, readln, readln, readln, readln, // comment7
// comment8
writeln;
import std.stdio : /* comment9 */
readln, readln, readln, readln, readln, readln, /* comment10 */
// comment11
writeln;
import std.stdio : readln, // comment12
readln, readln, readln, readln, readln, readln, // comment13
// comment14
writeln;
import std.stdio : readln,
// comment15
readln, readln, readln, readln, readln, readln, // comment16
// comment17
writeln;

View file

@ -1,4 +1,5 @@
import super_long_import_module_name : withSuperLongSymbolNames, andAlsoLotsOfThem;
import super_long_import_module_name : withSuperLongSymbolNames, andAlsoLotsOfThem, lotsAnsLots, andLots, andLotsOfThem, lineExceeds120;
private:
void foo();

29
tests/issue0384.d Normal file
View file

@ -0,0 +1,29 @@
import std.stdio : readln, /* comment1 */ writeln;
import std.stdio : readln, // comment2
writeln;
import std.stdio : readln,
// comment3
writeln;
import std.stdio : readln,
/* comment4 */
writeln;
import std.stdio : readln, readln, readln, readln, readln, readln, readln, readln, readln, readln, readln,
// comment5
writeln;
import std.stdio : // comment6
readln, readln, readln, readln, readln, readln, // comment7
// comment8
writeln;
import std.stdio : /* comment9 */
readln, readln, readln, readln, readln, readln, /* comment10 */
// comment11
writeln;
import std.stdio : readln, // comment12
readln, readln, readln, readln, readln, readln, // comment13
// comment14
writeln;
import std.stdio : readln,
// comment15
readln, readln, readln, readln, readln, readln, // comment16
// comment17
writeln;

View file

@ -1,5 +1,6 @@
import super_long_import_module_name : withSuperLongSymbolNames, andAlsoLotsOfThem;
import super_long_import_module_name : withSuperLongSymbolNames,
andAlsoLotsOfThem;
andAlsoLotsOfThem, lotsAnsLots, andLots, andLotsOfThem, lineExceeds120;
private:
void foo();

View file

@ -0,0 +1,30 @@
import std.stdio : readln, /* comment1 */ writeln;
import std.stdio : readln, // comment2
writeln;
import std.stdio : readln,
// comment3
writeln;
import std.stdio : readln,
/* comment4 */
writeln;
import std.stdio : readln, readln, readln, readln, readln, readln, readln,
readln, readln, readln, readln,
// comment5
writeln;
import std.stdio : // comment6
readln, readln, readln, readln, readln, readln, // comment7
// comment8
writeln;
import std.stdio : /* comment9 */
readln, readln, readln, readln, readln, readln, /* comment10 */
// comment11
writeln;
import std.stdio : readln, // comment12
readln, readln, readln, readln, readln, readln, // comment13
// comment14
writeln;
import std.stdio : readln,
// comment15
readln, readln, readln, readln, readln, readln, // comment16
// comment17
writeln;