<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/106405>106405</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            PrintingPolicy does not honor terse output for C files
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          otisonoza
      </td>
    </tr>
</table>

<pre>
    I'm not able to reproduce this on main currently, as when analyzing C files nothing gets matched right now.
I suspect there's another bug somewhere in main.

But on release/19.x it's reproducible.

I created the fix and a small matcher which can be used to reproduce the problem here: https://github.com/llvm/llvm-project/compare/release/19.x...otisonoza:llvm-project:19_x

An example file to analyze looks like this:
````
struct A {

};

int main()
{
    struct A a;
    return 0;
}
````

Before the fix the output looks as:
````
struct A {
}
````

After the fix:
````
struct A {}
````

But since it's not reproducible on main I was not sure how to proceed.

As far as I can explain, the issue is the following:
When analyzing C++ code, everything is treated as a CXXRecordDecl which honors the printing policy: https://github.com/llvm/llvm-project/blob/d31603eefc2d8becfd1f41327b6a8db3e0e91a27/clang/lib/AST/DeclPrinter.cpp#L1128

When analyzing C code however, these are now RecordDecls which do not bother with the printing policy: https://github.com/llvm/llvm-project/blob/d31603eefc2d8becfd1f41327b6a8db3e0e91a27/clang/lib/AST/DeclPrinter.cpp#L605

This can be problematic when creating reports for example based on clang-tidy findings.

Please consider incorporating this fix into main.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVU2PozgQ_TXOpTQRmBDgwIHuVqSW9tDaHWnntjJ2Ad4xLmSbTmd-_cpAp5ORVrOzp5GiID6q_F49v2fhve4tYs3yB5Y_7cQcBnI1Be3J0jexa0ld6mfGixEsBRCtQQgEDidHapYIYdAeyMIotAU5O4c2mAvjjyA8nAe0IKwwl2_a9vAInTboY6ch3vcYPIwiyAEVON0PASyd9yx5YknzDH72E8oAYUCHjBceRKxEB-3cg6cRz_EN6HX1rW79f5hDROXQoPDI-Cmt9m-gw9LmHb1uDd5VPYN0KAKquCZ0-g2EVSDAj8KYDamD86DlAFJYaBFmH7--nwjC5Kg1OMKCPGtgCGHyLGsYPzF-6nUY5nYvaWT8ZMzr--XT5OhvlIHxk6RxEpH16Z7Cfr-_isOy5q4qa9Lqr7dbPo0FfBPjZHCZfMS5qoFgiL56MPrrKmHEthYek4_f8sQHN8sADbDi4bY5K55YdvdE27AowXjJePX-1fYJAMC1lbhWxscOw-wsJB_tiqd_Q7PJix05vKoUrzSHaQ4bL_GThH60XtMFdO_L_dfWPyQxB_DaSnzfl9Fht3vz6qtnOIv1tZ8dwkDnKOXkSCKqux3ceOiEi957XnYovk1mUeRxQa-9n-P_SoWMobO2_ZXQn9_5lfEHxh9AksLYAV_RXVbrxhabVYQHAY9fvvyOkpx6Qmk2hwxkyfnND9qGWDeR0fLyvyzRGmoZP6ksPSYZYie5KluUnUq7Q5rxoj2KUrUZJlilghfRREbYPjbSsbD54zPjp4jvJaJBt5fTxHj2W5ry8naG309h4R-HHvlvk_QIwmGMK_jg7Tfiihat2jWszjoMv_4Qjkl-O4PPMda3iNvCTAQt10RfQjIScTiRCx46ctegaUVMRLKwLPwpaHWBTlulbe_vturLkmsgyXqt0IG2ktxEbm29nCvR29oGWvN9p-pMVVkldlinBT-UeVGl1W6oeX6oRLwpVJdji7mosoOQh64QJSY82emaJ_yQlLxM8zTNyz1PiwTLo-DpsU3wmLJDgqPQZh_HvSfX7xan1GlyPCT5zogWjV8OSc4tnlcfMc7jmenqRaN27j07JEb74D_aBB0M1i-b8i-L8KBoPQRXh0BA56_5FUe5nZO72Zn6p3fIAs3H42LF_lrzfwIAAP__NSt_nQ">