Open prj- opened 1 week ago
If you tell clang-format that PetscErrorCode
is a type name, the left parenthsis in (*)
is annotated as FunctionTypeLParen
, and the output looks correct.
$ clang-format -version
clang-format version 20.0.0git (https://github.com/llvm/llvm-project bcd586b5abfc7c22a1c0eca3a7abf18e7a09518d)
$ clang-format -style='{TypeNames: [PetscErrorCode]}' -debug foobar.c
...
AnnotatedTokens(L=2, P=0, T=6, C=0):
M=0 C=0 T=Unknown S=1 F=0 B=0 BK=0 P=0 Name=return L=6 PPK=2 FakeLParens= FakeRParens=0 II=0x135018a18 Text='return'
M=0 C=0 T=Unknown S=1 F=0 B=0 BK=0 P=23 Name=l_paren L=8 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='('
M=0 C=1 T=TypeName S=0 F=0 B=0 BK=0 P=59 Name=identifier L=22 PPK=2 FakeLParens= FakeRParens=0 II=0x13500eef8 Text='PetscErrorCode'
M=0 C=0 T=FunctionTypeLParen S=1 F=0 B=0 BK=0 P=43 Name=l_paren L=24 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='('
M=0 C=1 T=PointerOrReference S=0 F=0 B=0 BK=0 P=250 Name=star L=25 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='*'
M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=74 Name=r_paren L=26 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=')'
M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=43 Name=l_paren L=27 PPK=0 FakeLParens= FakeRParens=0 II=0x0 Text='('
M=0 C=1 T=Unknown S=0 F=0 B=0 BK=0 P=79 Name=void L=31 PPK=2 FakeLParens=1/ FakeRParens=0 II=0x135018c38 Text='void'
M=0 C=1 T=PointerOrReference S=1 F=0 B=0 BK=0 P=250 Name=star L=33 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='*'
M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=74 Name=comma L=34 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=','
M=0 C=1 T=Unknown S=1 F=0 B=0 BK=0 P=61 Name=void L=39 PPK=2 FakeLParens= FakeRParens=0 II=0x135018c38 Text='void'
M=0 C=1 T=PointerOrReference S=1 F=0 B=0 BK=0 P=250 Name=star L=41 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='*'
M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=74 Name=comma L=42 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=','
M=0 C=1 T=Unknown S=1 F=0 B=0 BK=0 P=61 Name=identifier L=51 PPK=2 FakeLParens= FakeRParens=0 II=0x13500ef98 Text='PetscInt'
M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=61 Name=comma L=52 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=','
M=0 C=1 T=Unknown S=1 F=0 B=0 BK=0 P=61 Name=ellipsis L=56 PPK=2 FakeLParens= FakeRParens=1 II=0x0 Text='...'
M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=63 Name=r_paren L=57 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=')'
M=0 C=0 T=CastRParen S=0 F=0 B=0 BK=0 P=43 Name=r_paren L=58 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=')'
M=0 C=0 T=UnaryOperator S=0 F=0 B=0 BK=0 P=120 Name=amp L=59 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='&'
M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=80 Name=identifier L=81 PPK=2 FakeLParens= FakeRParens=0 II=0x13500efd8 Text='PCTFS_rvec_non_uniform'
M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=23 Name=semi L=82 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=';'
...
$ clang-format -style='{TypeNames: [PetscErrorCode]}' foobar.c | diff foobar.c -
3,4c3,4
< return (PetscErrorCode(*)(void *, void *, PetscInt,
< ...))&PCTFS_rvec_non_uniform;
---
> return (PetscErrorCode (*)(void *, void *, PetscInt,
> ...))&PCTFS_rvec_non_uniform;
$
Note that there should be a space between PetscErrorCode
and (
.
Thank you.
Works OK with version 19.1.0, but with
Debian clang-format version 20.0.0 (++20240917111146+1e23a6142a82-1~exp1~20240917111312.2342)
, I get:It was OK with
20240831100704%2B8aa8c0590c09-1~exp1~20240831220720.2307
.