I did notice an issue with testing solutions in `c-ts-mode-resources/indent.erts`.
In cases where no indentation is applied (eg. comment is first-sibling) or there
is no matching rule (eg. else_clause), the test case can still pass since 
the test cases are written with the proper indentation already.  So, despite
no indentation being applied, the result still matches the expected result.

On Fri, Nov 24, 2023 at 6:35 AM Noah Peart <noah.v.peart@gmail.com> wrote:
> I'm sorry I insist on a complete recipe with all the details

Ok, lemme try again :)

To reproduce the indentation bugs for unbracketed `else_clause`, and 
do-while:
1. open a buffer and insert the following:

    int main() {
      if (true)
        puts("Hello");
      else
                    puts("No matched rule!"); // 1
      do
        puts("Hello");
                    while (indented_as_part_of_block);  // 2
    }

2. call `M-x example-setup` to configure `c-ts-mode`
3. `M-x indent-region` to indent the whole buffer
You should see that the line with comment `1` has not been
indented, and the line with comment `2` has been indented to the 
same level as the previous line.

To reproduce the indentation bugs when comments are the first
siblings:
1. open a buffer and insert:

    int main() {
      while (true) { /* foo */
                          if (true) { // 1
                          puts ("Hello"); // 2
       }
      }
    }

2. call `M-x example-setup` to configure `c-ts-mode`
3. `M-x indent-region` to indent the whole buffer

You should see that the lines with comments `1` and `2` have
not been indented at all.

On Fri, Nov 24, 2023 at 6:07 AM Eli Zaretskii <eliz@gnu.org> wrote:
> From: Noah Peart <noah.v.peart@gmail.com>
> Date: Fri, 24 Nov 2023 05:47:34 -0800
> Cc: Eli Zaretskii <eliz@gnu.org>, casouri@gmail.com, 67357@debbugs.gnu.org
>
> Sorry for the confusion: to setup the `c-ts-mode` buffers to reproduce bugs,
> run the following to configure `c-ts-mode` with `linux` style:
>
>     (defun example-setup ()
>       (interactive)
>       (c-ts-mode)
>       (setq-local indent-tabs-mode nil)
>       (setq-local c-ts-mode-indent-offset 2)
>       (c-ts-mode-set-style 'linux))

Thanks, but what to do after (or before?) the above, to actually
reproduce the problem?

I'm sorry I insist on a complete recipe with all the details, but IME
without having such a recipe, it is all too easy to create
misunderstandings about the problem, and harder to test solutions.