Skip to content

Commit 6753393

Browse files
committed
FIX 144
1 parent c0d4995 commit 6753393

File tree

3 files changed

+36
-9
lines changed

3 files changed

+36
-9
lines changed

CodeFormatCore/src/Format/Analyzer/SpaceAnalyzer.cpp

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ void SpaceAnalyzer::Analyze(FormatState &f, const LuaSyntaxTree &t) {
2626
break;
2727
}
2828
case TK_CONCAT: {
29-
SpaceAround(syntaxNode, t, f.GetStyle().space_around_concat_operator ? 1 : 0);
29+
if (!f.GetStyle().space_around_concat_operator &&
30+
syntaxNode.GetPrevToken(t).GetTokenKind(t) != TK_NUMBER) {
31+
SpaceAround(syntaxNode, t, 0);
32+
break;
33+
}
34+
35+
SpaceAround(syntaxNode, t, 1);
3036
break;
3137
}
3238
case '=': {
@@ -146,7 +152,8 @@ void SpaceAnalyzer::ComplexAnalyze(FormatState &f, const LuaSyntaxTree &t) {
146152
case LuaSyntaxNodeKind::CallExpression: {
147153
auto leftBrace = syntaxNode.GetChildToken('(', t);
148154
if (leftBrace.IsToken(t)) {
149-
if (f.GetStyle().space_inside_function_call_parentheses && leftBrace.GetNextToken(t).GetTokenKind(t) != ')') {
155+
if (f.GetStyle().space_inside_function_call_parentheses &&
156+
leftBrace.GetNextToken(t).GetTokenKind(t) != ')') {
150157
auto rightBrace = syntaxNode.GetChildToken(')', t);
151158
SpaceRight(leftBrace, t, 1);
152159
SpaceLeft(rightBrace, t, 1);
@@ -186,7 +193,8 @@ void SpaceAnalyzer::ComplexAnalyze(FormatState &f, const LuaSyntaxTree &t) {
186193
}
187194
case FunctionSingleArgSpace::OnlyString: {
188195
auto firstToken = syntaxNode.GetFirstToken(t);
189-
if (firstToken.GetTokenKind(t) == TK_STRING || firstToken.GetTokenKind(t) == TK_LONG_STRING) {
196+
if (firstToken.GetTokenKind(t) == TK_STRING ||
197+
firstToken.GetTokenKind(t) == TK_LONG_STRING) {
190198
SpaceLeft(syntaxNode, t, 1);
191199
} else {
192200
SpaceLeft(syntaxNode, t, 0);
@@ -211,7 +219,8 @@ void SpaceAnalyzer::ComplexAnalyze(FormatState &f, const LuaSyntaxTree &t) {
211219
}
212220
case LuaSyntaxNodeKind::TableExpression: {
213221
auto leftCurly = syntaxNode.GetChildToken('{', t);
214-
if (leftCurly.GetNextToken(t).GetTokenKind(t) != '}' && f.GetStyle().space_around_table_field_list) {
222+
if (leftCurly.GetNextToken(t).GetTokenKind(t) != '}' &&
223+
f.GetStyle().space_around_table_field_list) {
215224
SpaceRight(leftCurly, t, 1);
216225
auto rightCurly = syntaxNode.GetChildToken('}', t);
217226
SpaceLeft(rightCurly, t, 1);
@@ -236,7 +245,10 @@ void SpaceAnalyzer::ComplexAnalyze(FormatState &f, const LuaSyntaxTree &t) {
236245
} else {
237246
auto tokenKindAfterSquareBracket = leftSquareBracket.GetNextToken(t).GetTokenKind(t);
238247
auto tokenKindBeforeSquareBracket = rightSquareBracket.GetPrevToken(t).GetTokenKind(t);
239-
if (tokenKindAfterSquareBracket == TK_LONG_STRING || tokenKindAfterSquareBracket == TK_LONG_COMMENT || tokenKindBeforeSquareBracket == TK_LONG_COMMENT || tokenKindBeforeSquareBracket == TK_LONG_STRING) {
248+
if (tokenKindAfterSquareBracket == TK_LONG_STRING ||
249+
tokenKindAfterSquareBracket == TK_LONG_COMMENT ||
250+
tokenKindBeforeSquareBracket == TK_LONG_COMMENT ||
251+
tokenKindBeforeSquareBracket == TK_LONG_STRING) {
240252
SpaceRight(leftSquareBracket, t, 1);
241253
SpaceLeft(rightSquareBracket, t, 1);
242254
}
@@ -251,7 +263,10 @@ void SpaceAnalyzer::ComplexAnalyze(FormatState &f, const LuaSyntaxTree &t) {
251263
if (exprs.size() == 2) {
252264
auto leftExpr = exprs[0];
253265
auto rightExpr = exprs[1];
254-
if (leftExpr.GetSyntaxKind(t) == LuaSyntaxNodeKind::UnaryExpression && leftExpr.GetChildToken('#', t).IsToken(t) && rightExpr.GetSyntaxKind(t) == LuaSyntaxNodeKind::LiteralExpression && rightExpr.GetText(t) == "1") {
266+
if (leftExpr.GetSyntaxKind(t) == LuaSyntaxNodeKind::UnaryExpression &&
267+
leftExpr.GetChildToken('#', t).IsToken(t) &&
268+
rightExpr.GetSyntaxKind(t) == LuaSyntaxNodeKind::LiteralExpression &&
269+
rightExpr.GetText(t) == "1") {
255270
SpaceAround(plus, t, 0);
256271
}
257272
}

Test/src/FormatResult_unitest.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,4 +1055,17 @@ local table = { -- My comment
10551055
elem2 = {}
10561056
}
10571057
)", style));
1058+
}
1059+
1060+
TEST(Format, bug_144) {
1061+
LuaStyle style;
1062+
1063+
style.space_around_concat_operator = false;
1064+
EXPECT_TRUE(TestHelper::TestFormatted(
1065+
R"(
1066+
local t = 1 .. "1231"..bb..1111
1067+
)",
1068+
R"(
1069+
local t = 1 .. "1231"..bb..1111
1070+
)", style));
10581071
}

Test2/src/FormatTest2.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88

99
int main() {
1010
std::string buffer = R"(
11-
local t = {
12-
{ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, cccccccccccccccccccccccccccccccccccccccccc,ddddddddddddddddddddddddddddddddd}
13-
}
11+
local t = 1 .. "1231"
1412
)";
1513

1614
auto file = std::make_shared<LuaSource>(std::move(buffer));
@@ -26,6 +24,7 @@ local t = {
2624
std::cout << t.GetDebugView() << std::endl;
2725

2826
LuaStyle s;
27+
s.space_around_concat_operator = false;
2928
FormatBuilder b(s);
3029
auto text = b.GetFormatResult(t);
3130
std::cout<< text << std::endl;

0 commit comments

Comments
 (0)