[cfe-dev] Question about clang-format

Graham St Jack via cfe-dev cfe-dev at lists.llvm.org
Thu Nov 26 16:00:40 PST 2015


Awesome - that patch fixed the problem with alignment of the function 
declaration/definition parameter list alignment, and also fixed my test 
case re erroneously putting all of the parameters on a second line. 
Thank you for fixing this so fast!

The remaining issues from my original email are just us being a bit 
fussy with our style, and we can live with changing that.

Cheers,
Graham St Jack


On 27/11/15 08:00, Beren Minor wrote:
> I've updated http://reviews.llvm.org/D14325 
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D14325&d=CwMFaQ&c=8S5idjlO_n28Ko3lg6lskTMwneSC-WqZ5EBTEEvDlkg&r=yTQSm-kpxQWFmaw_dZw3NDIbiHmjByJUaCZAObR4cjk&m=4tfptidvCcBhCKrDu0JKjqk5Ueu40DPigZSDPNDj0bc&s=eip8U8rXUNwQqrsoS7Fuw1i12b3xIfx4ia2XvrdNq68&e=> 
> with a fix for the parameter declaration alignment issue.
>
> --
> Beren Minor
>
> On Sun, Nov 22, 2015 at 11:43 PM, Graham St Jack via cfe-dev 
> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>
>     Thanks for the reply - my response is late too because I have been
>     on leave.
>
>     On 19/11/15 05:21, via cfe-dev wrote:
>
>
>         Message: 4
>         Date: Wed, 18 Nov 2015 19:53:34 +0100
>         From: Beren Minor via cfe-dev <cfe-dev at lists.llvm.org
>         <mailto:cfe-dev at lists.llvm.org>>
>         To: Daniel Jasper <djasper at google.com <mailto:djasper at google.com>>
>         Cc: cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>,
>         graham.stjack at quantum.com <mailto:graham.stjack at quantum.com>
>         Subject: Re: [cfe-dev] Question about clang-format
>         Message-ID:
>         <CAONPvZxsy4=S+Yaa3vxL6Gy983-BsTag4G2UBga9hc8c3CW8=Q at mail.gmail.com
>         <mailto:Q at mail.gmail.com>>
>         Content-Type: text/plain; charset="utf-8"
>
>         Sorry for the late answer, the mail was lost in my inbox.
>
>         You're totally right about the pointer and reference
>         attachment rules, but
>         currently the alignment code doesn't really handle it. I don't
>         think it
>         would be very hard to implement, but I am wondering what the
>         expected
>         alignment would be in the case of nested pointer / cv
>         qualifiers. I
>         personally find such cases troublesome, and that is why I
>         usually attach
>         the pointers and qualifiers to the type and not to the variable.
>
>         For example, where should the spaces be inserted in the
>         following case:
>
>         const char* const* v1;
>         float const* v2;
>         SomeVeryLongType const& v3;
>
>     These use cases don't come up in our code base (we only care about
>     the constness of what is pointed/referred to, so the question
>     doesn't arise - but I see the problem.
>
>     For us, what happens with cases like this are more compelling:
>
>     const char *v1, *v2, v3;
>
>     Hence our interest in associating the pointer/reference with the
>     variable rather than the type - although I do admit that we frown
>     on declaring more than one variable per line.
>
>
>         Regarding the function parameter misalignment, this is
>         certainly a bug and
>         you can file a bugreport about it if you like. I will try to
>         reproduce and
>         fix it anyway.
>
>
>     I will leave it in your court, thanks. This is the one that is the
>     real blocker.
>
>         Thanks,
>         --
>         Beren Minor
>
>         On Fri, Nov 13, 2015 at 9:52 AM, Daniel Jasper
>         <djasper at google.com <mailto:djasper at google.com>> wrote:
>
>             Adding Beren, who has done the development here.
>
>
>             On Fri, Nov 13, 2015 at 12:01 AM, Graham St Jack via cfe-dev <
>             cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>
>                 Hi all,
>
>                 I am looking at using clang-format, and like everyone
>                 else with a
>                 pre-existing quirky style, there are some things that
>                 clang-format doesn't
>                 seem to handle for me.
>
>                 Most of the issues are minor - we can just redefine
>                 our style, or they
>                 occur rarely enough for it not to matter.
>
>                 Some things that stand out as odd though (and make
>                 adoption difficult)
>                 are the following blocks of code formatted with this
>                 .clang-format file,
>                 using clang-format-3.8 built from trunk source yesterday.
>
>                 BasedOnStyle: LLVM
>
>                 AlignConsecutiveAssignments: true
>                 AlignConsecutiveDeclarations:  true
>                 AllowShortCaseLabelsOnASingleLine: true
>                 AllowShortFunctionsOnASingleLine:  Inline
>                 BinPackParameters: false
>                 BinPackArguments:  false
>                 BraceWrapping:
>                    IndentBraces:          false
>                    AfterNamespace:        false
>                    AfterClass:            true
>                    AfterControlStatement: true
>                    AfterEnum:             true
>                    AfterFunction:         true
>                    AfterStruct:           true
>                    AfterUnion:            true
>                    BeforeCatch:           true
>                    BeforeElse:            true
>                 BreakBeforeBraces: Custom
>                 ConstructorInitializerIndentWidth:              2
>                 ContinuationIndentWidth:                        2
>                 ConstructorInitializerAllOnOneLineOrOnePerLine: true
>                 MaxEmptyLinesToKeep:                            1
>
>                 ----------------------------------------
>
>                    int *    err       = 0;
>                    ino_t_xx dir_inode = 0;
>                    gen_t    dir_gen   = 0;
>
>                 Here, the variables and equal-signs are lined up
>                 beautifully, but the
>                 star isn't hard up against 'err' - which I would have
>                 expected given the
>                 fact that LLVM sets PointerAlignment to Right. Looking
>                 into the
>                 implementation (and doing some experiments), it looks
>                 like 'Right' just
>                 means "no need to put a space to the right of a star"
>                 - but plenty of
>                 spaces can be inserted to align the variable. Is this
>                 intentional, and if
>                 so, is there a plan to add a new option to align
>                 pointers/references to the
>                 right (as distinct from not-left like now)?
>
>                 Since (regrettably) in C/C++, "pointerness" is
>                 associated with the
>                 variable and not the type, having the star hard up
>                 against the variable
>                 seems to me to be something that a lot of people would
>                 want.
>
>
>                 ----------------------------------------
>
>                   static int find_highest_index(ino_t base_inode,
>                                                gen_t     base_gen,
>                                                int       fd,
>                                                uint32_t *highest_index)
>
>                 This looks like a bug - if it aligns some of the
>                 parameters, it should
>                 align all of them.
>
>                 ----------------------------------------
>
>                 static int find_highest_index(
>                    ino_t base_inode, gen_t base_gen, int fd, uint32_t
>                 *highest_index, bool
>                 dummy)
>
>                 This looks like a bug too - I added an extra parameter
>                 with a short type
>                 to demonstrate that the first and last parameters
>                 aren't aligned, but it
>                 put them all on one line. If there is an extra
>                 configuration parameter that
>                 would prevent this, please let me know.
>
>                 ----------------------------------------
>
>                 static int find_highest_index(ino_t base_inode,
>                                                int       fd,
>                                                uint32_t *highest_index,
>                                                bool dummy)
>
>                 Here is the example that shows the first and last
>                 parameter aren't
>                 aligned, but the others are.
>
>
>                 Thanks
>
>                 --
>                 Graham St Jack | Software Engineer | Quantum
>
>                 _______________________________________________
>                 cfe-dev mailing list
>                 cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>                 https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=CwIGaQ&c=8S5idjlO_n28Ko3lg6lskTMwneSC-WqZ5EBTEEvDlkg&r=yTQSm-kpxQWFmaw_dZw3NDIbiHmjByJUaCZAObR4cjk&m=txXwxkJVYrSF9OKwEB6ccTSxCsEMnoTxVYXq8gtPE-U&s=YcA6gd67WO2JnSODQdhhCsw1x2uZE7WalB25sZMMRr0&e=
>
>
>         -------------- next part --------------
>         An HTML attachment was scrubbed...
>         URL:
>         <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_pipermail_cfe-2Ddev_attachments_20151118_545bc757_attachment.html&d=CwIGaQ&c=8S5idjlO_n28Ko3lg6lskTMwneSC-WqZ5EBTEEvDlkg&r=yTQSm-kpxQWFmaw_dZw3NDIbiHmjByJUaCZAObR4cjk&m=txXwxkJVYrSF9OKwEB6ccTSxCsEMnoTxVYXq8gtPE-U&s=ZTepWq0tjqTSgDGjP2RD5sf5MP_xviz8zdwI9db_jyI&e=
>         >
>
>         ------------------------------
>
>         Subject: Digest Footer
>
>         _______________________________________________
>         cfe-dev mailing list
>         cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>         https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=CwIGaQ&c=8S5idjlO_n28Ko3lg6lskTMwneSC-WqZ5EBTEEvDlkg&r=yTQSm-kpxQWFmaw_dZw3NDIbiHmjByJUaCZAObR4cjk&m=txXwxkJVYrSF9OKwEB6ccTSxCsEMnoTxVYXq8gtPE-U&s=YcA6gd67WO2JnSODQdhhCsw1x2uZE7WalB25sZMMRr0&e=
>
>
>         ------------------------------
>
>         End of cfe-dev Digest, Vol 101, Issue 110
>         *****************************************
>
>
>
>     -- 
>     Graham St Jack | Software Engineer | Quantum | Office: 8304 8919 |
>     Mobile: 0417 281 693 <tel:0417%20281%20693>
>
>
>     _______________________________________________
>     cfe-dev mailing list
>     cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>     <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=CwMFaQ&c=8S5idjlO_n28Ko3lg6lskTMwneSC-WqZ5EBTEEvDlkg&r=yTQSm-kpxQWFmaw_dZw3NDIbiHmjByJUaCZAObR4cjk&m=4tfptidvCcBhCKrDu0JKjqk5Ueu40DPigZSDPNDj0bc&s=iwxA5OA5U4rIXbXHUm7hR6wlvOVm5XSMT0AStCTH4BA&e=>
>
>


-- 
Graham St Jack | Software Engineer | Quantum | Office: 8304 8919 | Mobile: 0417 281 693

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20151127/ef694e55/attachment.html>


More information about the cfe-dev mailing list