Problem: A '}' inside a // line comment changes the indentation of the
following line inside an enum or struct (rendcrx).
Solution: Stop scanning the line once a line comment is reached, so a brace
inside the comment is no longer mistaken for an unmatched brace.
fixes: #20455
closes: #20458
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
for (i = 0; l[i] != NUL; i++)
{
i = (int)(cin_skipcomment(l + i) - l); // ignore parens in comments
+ if (l[i] == NUL)
+ break;
i = (int)(skip_string(l + i) - l); // ignore parens in quotes
if (l[i] == start)
++open_count;
assert_equal(' arg3);', getline(3))
bwipe!
+ # stray } in a // line comment inside an aggregate (enum/struct) whose
+ # opening brace is at the end of the line must not affect the next member
+ new
+ setl cindent sw=4
+ var code6 =<< trim [CODE]
+ typedef enum {
+ ND_BLOCK, // { ... }
+ ND_FUNCALL,
+ } NodeKind;
+ [CODE]
+ setline(1, code6)
+ cursor(3, 1)
+ normal ==
+ assert_equal(' ND_FUNCALL,', getline(3))
+ bwipe!
+
+ # same, a struct member with a trailing // } comment
+ new
+ setl cindent sw=4
+ var code7 =<< trim [CODE]
+ struct S {
+ int a; // }
+ int b;
+ };
+ [CODE]
+ setline(1, code7)
+ cursor(3, 1)
+ normal ==
+ assert_equal(' int b;', getline(3))
+ bwipe!
+
enddef
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 610,
/**/
609,
/**/