Issue 89696
Summary [clang-format] Failure when formatting a nested structure containing a lint-suppression comment
Labels clang-format
Assignees
Reporter mitchgrout
    **Version**: 17.0.2
**Platform**: Windows 10 (mingw64), x86_64
**.clang-format**:

```yml
---
BasedOnStyle: LLVM
Language:               Cpp
Standard: c++17
ColumnLimit:            120
AlignArrayOfStructures: Left
```

**main.c**:

```c
object_t obj =
{
  .outer =
  {
    .w = 0,
    .x = 1, //lint some comment here
    .y = 2,
    .z = 3
  }
};
```

Running the command `clang-format -style=file main.c` triggers a failure with the following stack dump:

```
Stack dump:
0.      Program arguments: "C:\\Program Files\\LLVM\\bin\\clang-format.exe" -style=file main.c
Exception Code: 0xC0000005
 #0 0x00007ff744ab591b C:\Program Files\LLVM\bin\clang-format.exe 0xe591b C:\Program Files\LLVM\bin\clang-format.exe 0xe5373
 #1 0x00007ff744ab591b C:\Program Files\LLVM\bin\clang-format.exe 0xe3c20 C:\Program Files\LLVM\bin\clang-format.exe 0xe0d26
 #2 0x00007ff744ab591b C:\Program Files\LLVM\bin\clang-format.exe 0x5bd3d C:\Program Files\LLVM\bin\clang-format.exe 0xc54d1
 #3 0x00007ff744ab591b C:\Program Files\LLVM\bin\clang-format.exe 0x6eed7 C:\Program Files\LLVM\bin\clang-format.exe 0x51462
 #4 0x00007ff744ab591b C:\Program Files\LLVM\bin\clang-format.exe 0x53e89 C:\Program Files\LLVM\bin\clang-format.exe 0x572d
 #5 0x00007ff744ab591b C:\Program Files\LLVM\bin\clang-format.exe 0x39b6 C:\Program Files\LLVM\bin\clang-format.exe 0x1b0d40
 #6 0x00007ff744ab591b (C:\Program Files\LLVM\bin\clang-format.exe+0xe591b)
 #7 0x00007ff744ab5373 (C:\Program Files\LLVM\bin\clang-format.exe+0xe5373)
0x00007FF744AB591B, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0xE591B byte(s)
0x00007FF744AB5373, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0xE5373 byte(s)
0x00007FF744AB3C20, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0xE3C20 byte(s)
0x00007FF744AB0D26, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0xE0D26 byte(s)
0x00007FF744A2BD3D, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0x5BD3D byte(s)
0x00007FF744A954D1, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0xC54D1 byte(s)
0x00007FF744A3EED7, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0x6EED7 byte(s)
0x00007FF744A21462, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0x51462 byte(s)
0x00007FF744A23E89, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0x53E89 byte(s)
0x00007FF7449D572D, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0x572D byte(s)
0x00007FF7449D39B6, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0x39B6 byte(s)
0x00007FF744B80D40, C:\Program Files\LLVM\bin\clang-format.exe(0x00007FF7449D0000) + 0x1B0D40 byte(s)
0x00007FFC55B27344, C:\Windows\System32\KERNEL32.DLL(0x00007FFC55B10000) + 0x17344 byte(s), BaseThreadInitThunk() + 0x14 byte(s)
0x00007FFC55E026B1, C:\Windows\SYSTEM32\ntdll.dll(0x00007FFC55DB0000) + 0x526B1 byte(s), RtlUserThreadStart() + 0x21 byte(s)
```

This is a stripped-down example from a larger code-base. `object_t` represents a union, with `.outer` being one of the possible variants. Some extra notes:

- If a trailing comma is attached to `.z`, no failure occurs,  but `.y` will be de-dented heavily
- If `.w` is removed, no error occurs
- If a space between `//` and `lint` is added, no error occurs
- If the comment is removed, no error occurs
- If the `.outer` declaration is removed, no error occurs
- If `AlignArrayOfStructures` is removed, no error occurs
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to