@@ -49,6 +49,11 @@ void TokenAnalyzer::Analyze(FormatState &f, const LuaSyntaxTree &t) {
4949
5050 break ;
5151 }
52+ case TK_SHORT_COMMENT: {
53+ if (f.GetStyle ().space_after_comment_dash ) {
54+ AnalyzeComment (f, syntaxNode, t);
55+ }
56+ }
5257 default : {
5358 break ;
5459 }
@@ -111,28 +116,28 @@ void TokenAnalyzer::TableFieldAddSep(FormatState &f, LuaSyntaxNode n, const LuaS
111116 }
112117}
113118
114- void TokenAnalyzer::AnalyzeTableField (FormatState &f, LuaSyntaxNode &syntaxNode , const LuaSyntaxTree &t) {
119+ void TokenAnalyzer::AnalyzeTableField (FormatState &f, LuaSyntaxNode n , const LuaSyntaxTree &t) {
115120 if (f.GetStyle ().table_separator_style == TableSeparatorStyle::Semicolon) {
116- auto sep = syntaxNode .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
121+ auto sep = n .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
117122 auto comma = sep.GetChildToken (' ,' , t);
118123 if (comma.IsToken (t)) {
119124 Mark (comma, t, TokenStrategy::TableSepSemicolon);
120125 }
121126 } else if (f.GetStyle ().table_separator_style == TableSeparatorStyle::Comma) {
122- auto sep = syntaxNode .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
127+ auto sep = n .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
123128 auto semicolon = sep.GetChildToken (' ;' , t);
124129 if (semicolon.IsToken (t)) {
125130 Mark (semicolon, t, TokenStrategy::TableSepComma);
126131 }
127132 } else if (f.GetStyle ().table_separator_style == TableSeparatorStyle::OnlyKVColon) {
128- if (syntaxNode .GetChildToken (' =' , t).IsToken (t)) {
129- auto sep = syntaxNode .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
133+ if (n .GetChildToken (' =' , t).IsToken (t)) {
134+ auto sep = n .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
130135 auto semicolon = sep.GetChildToken (' ,' , t);
131136 if (semicolon.IsToken (t)) {
132137 Mark (semicolon, t, TokenStrategy::TableSepSemicolon);
133138 }
134139 } else {
135- auto sep = syntaxNode .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
140+ auto sep = n .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
136141 auto semicolon = sep.GetChildToken (' ;' , t);
137142 if (semicolon.IsToken (t)) {
138143 Mark (semicolon, t, TokenStrategy::TableSepComma);
@@ -141,28 +146,28 @@ void TokenAnalyzer::AnalyzeTableField(FormatState &f, LuaSyntaxNode &syntaxNode,
141146 }
142147
143148 if (f.GetStyle ().trailing_table_separator != TrailingTableSeparator::Keep) {
144- auto nextToken = syntaxNode .GetNextTokenSkipComment (t);
149+ auto nextToken = n .GetNextTokenSkipComment (t);
145150 // the last table field
146151 if (nextToken.GetTokenKind (t) == ' }' ) {
147152 switch (f.GetStyle ().trailing_table_separator ) {
148153 case TrailingTableSeparator::Never: {
149- auto sep = syntaxNode .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
154+ auto sep = n .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
150155 auto sepToken = sep.GetFirstToken (t);
151156 Mark (sepToken, t, TokenStrategy::Remove);
152157 break ;
153158 }
154159 case TrailingTableSeparator::Always: {
155- TableFieldAddSep (f, syntaxNode , t);
160+ TableFieldAddSep (f, n , t);
156161 break ;
157162 }
158163 case TrailingTableSeparator::Smart: {
159- auto tableFieldList = syntaxNode .GetParent (t);
164+ auto tableFieldList = n .GetParent (t);
160165 if (tableFieldList.GetEndLine (t) == nextToken.GetStartLine (t)) {
161- auto sep = syntaxNode .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
166+ auto sep = n .GetChildSyntaxNode (LuaSyntaxNodeKind::TableFieldSep, t);
162167 auto sepToken = sep.GetFirstToken (t);
163168 Mark (sepToken, t, TokenStrategy::Remove);
164169 } else {
165- TableFieldAddSep (f, syntaxNode , t);
170+ TableFieldAddSep (f, n , t);
166171 }
167172 break ;
168173 }
@@ -174,8 +179,8 @@ void TokenAnalyzer::AnalyzeTableField(FormatState &f, LuaSyntaxNode &syntaxNode,
174179 }
175180}
176181
177- bool IsSingleTableOrStringArg (LuaSyntaxNode &syntaxNode , const LuaSyntaxTree &t) {
178- auto children = syntaxNode .GetChildren (t);
182+ bool IsSingleTableOrStringArg (LuaSyntaxNode n , const LuaSyntaxTree &t) {
183+ auto children = n .GetChildren (t);
179184 for (auto child: children) {
180185 if (child.GetTokenKind (t) == TK_STRING || child.GetTokenKind (t) == TK_LONG_STRING || child.GetSyntaxKind (t) == LuaSyntaxNodeKind::TableExpression) {
181186 return true ;
@@ -218,39 +223,39 @@ LuaSyntaxNode GetSingleArgStringOrTable(LuaSyntaxNode &syntaxNode, const LuaSynt
218223 return LuaSyntaxNode (0 );
219224}
220225
221- void TokenAnalyzer::AnalyzeCallExpression (FormatState &f, LuaSyntaxNode &syntaxNode , const LuaSyntaxTree &t) {
222- if (IsSingleTableOrStringArg (syntaxNode , t)) {
226+ void TokenAnalyzer::AnalyzeCallExpression (FormatState &f, LuaSyntaxNode n , const LuaSyntaxTree &t) {
227+ if (IsSingleTableOrStringArg (n , t)) {
223228 switch (f.GetStyle ().call_arg_parentheses ) {
224229 case CallArgParentheses::Remove: {
225- auto lbrace = syntaxNode .GetChildToken (' (' , t);
230+ auto lbrace = n .GetChildToken (' (' , t);
226231 if (lbrace.IsToken (t)) {
227232 Mark (lbrace, t, TokenStrategy::Remove);
228- auto rbrace = syntaxNode .GetChildToken (' )' , t);
233+ auto rbrace = n .GetChildToken (' )' , t);
229234 Mark (rbrace, t, TokenStrategy::Remove);
230235 }
231236
232237 break ;
233238 }
234239 case CallArgParentheses::RemoveStringOnly: {
235- auto node = GetSingleArgStringOrTable (syntaxNode , t);
240+ auto node = GetSingleArgStringOrTable (n , t);
236241 if (node.GetTokenKind (t) == TK_STRING || node.GetTokenKind (t) == TK_LONG_STRING) {
237- auto lbrace = syntaxNode .GetChildToken (' (' , t);
242+ auto lbrace = n .GetChildToken (' (' , t);
238243 if (lbrace.IsToken (t)) {
239244 Mark (lbrace, t, TokenStrategy::Remove);
240- auto rbrace = syntaxNode .GetChildToken (' )' , t);
245+ auto rbrace = n .GetChildToken (' )' , t);
241246 Mark (rbrace, t, TokenStrategy::Remove);
242247 }
243248 }
244249
245250 break ;
246251 }
247252 case CallArgParentheses::RemoveTableOnly: {
248- auto node = GetSingleArgStringOrTable (syntaxNode , t);
253+ auto node = GetSingleArgStringOrTable (n , t);
249254 if (node.GetSyntaxKind (t) == LuaSyntaxNodeKind::TableExpression) {
250- auto lbrace = syntaxNode .GetChildToken (' (' , t);
255+ auto lbrace = n .GetChildToken (' (' , t);
251256 if (lbrace.IsToken (t)) {
252257 Mark (lbrace, t, TokenStrategy::Remove);
253- auto rbrace = syntaxNode .GetChildToken (' )' , t);
258+ auto rbrace = n .GetChildToken (' )' , t);
254259 Mark (rbrace, t, TokenStrategy::Remove);
255260 }
256261 }
@@ -264,7 +269,20 @@ void TokenAnalyzer::AnalyzeCallExpression(FormatState &f, LuaSyntaxNode &syntaxN
264269
265270 auto spaceAnalyzer = f.GetAnalyzer <SpaceAnalyzer>();
266271 if (spaceAnalyzer) {
267- spaceAnalyzer->FunctionCallSingleArgSpace (f, syntaxNode, t);
272+ spaceAnalyzer->FunctionCallSingleArgSpace (f, n, t);
273+ }
274+ }
275+ }
276+
277+ void TokenAnalyzer::AnalyzeComment (FormatState &f, LuaSyntaxNode n, const LuaSyntaxTree &t) {
278+ auto text = n.GetText (t);
279+ auto pos = 0 ;
280+ while (pos < text.size () && text[pos] == ' -' ) {
281+ pos++;
282+ }
283+ if (pos == 2 || pos == 3 ) {
284+ if (pos < text.size () && text[pos] != ' ' ) {
285+ Mark (n, t, TokenStrategy::SpaceAfterCommentDash);
268286 }
269287 }
270288}
0 commit comments