After dealing with bugs that only happen in PGO builds, I would be worried about bugs in the code-formatting-rewriter. The value doesn't seem worth the risk to me.
- jared On Fri, Feb 17, 2017 at 5:44 PM, <gsquel...@mozilla.com> wrote: > On Saturday, February 18, 2017 at 9:29:06 AM UTC+11, Bobby Holley wrote: > > On Fri, Feb 17, 2017 at 2:18 PM, <gsqu...@mozilla.com> wrote: > > > > > Hi again Nick, > > > > > > Someone made me realize that I didn't fully read your message, sorry > for > > > that. > > > > > > I now see that as well as &&/||, you have grepped for other operators, > and > > > shown that the overwhelming usage is to put all of them at the end of > lines! > > > > > > In light of this, and from what others here&elsewhere have discussed, > I'm > > > now thinking that we probably should indeed just update our coding > style > > > with whatever is used the most out there, and model our "Official > > > Formatter" on it. > > > > > > > > > Another thought, if technically possible: > > > If our main repository is going to always be under the control of some > > > official clang-format style, it should be possible for anybody to pull > the > > > repository, and use a different formatter locally with their favorite > > > style. And when pushing, their modified code could be automatically > > > reformatted with the official formatter -- Everybody feels good when > > > programming! :-) > > > > > > > Please no. That would make reviewing a nightmare. > > Not sure what your concern is: > - People who stick with the official parser will only ever see that > (pushing to mozreview will reformat everything to the official style). > - People who prefer a different style at home will have to adapt to the > different style when reviewing others' code, or when their code gets review > comments in a different style -- the formatter shouldn't change things so > wildly that it would be so hard to find the corresponding location in their > local repo. > > So it's everybody's choice to avoid a nightmare, or deal with it. ;-) > > > > > Cheers, > > > Gerald > > > > > > > > > On Friday, February 17, 2017 at 5:16:42 PM UTC+11, Nicholas Nethercote > > > wrote: > > > > I personally have a strong preference for operators at the end of > lines. > > > > The codebase seems to agree with me, judging by some rough grepping > > > ('fff' > > > > is an alias I have that's roughly equivalent to rgrep): > > > > > > > > $ fff "&&$" | wc -l > > > > 28907 > > > > $ fff "^ *&&" | wc -l > > > > 3751 > > > > > > > > $ fff "||$" | wc -l > > > > 26429 > > > > $ fff "^ *||" | wc -l > > > > 2977 > > > > > > > > $ fff " =$" | wc -l > > > > 39379 > > > > $ fff "^ *= " | wc -l > > > > 629 > > > > > > > > $ fff " +$" | wc -l > > > > 31909 > > > > $ fff "^ *+$" | wc -l > > > > 491 > > > > > > > > $ fff " -$" | wc -l > > > > 2083 > > > > $ fff "^ *-$" | wc -l > > > > 52 > > > > > > > > $ fff " ==$" | wc -l > > > > 1501 > > > > $ fff "^ *== " | wc -l > > > > 161 > > > > > > > > $ fff " !=$" | wc -l > > > > 699 > > > > $ fff "^ *!= " | wc -l > > > > 129 > > > > > > > > They are rough regexps and probably have some false positives, but > the > > > > numbers aren't even close; operators at the end of the line clearly > > > > dominate. > > > > > > > > I will conform for the greater good but silently weep inside every > time I > > > > see it. > > > > > > > > Nick > > > > > > > > On Fri, Feb 17, 2017 at 8:47 AM, <gsqu...@mozilla.com> wrote: > > > > > > > > > Question of the day: > > > > > When breaking overlong expressions, should &&/|| go at the end or > the > > > > > beginning of the line? > > > > > > > > > > TL;DR: Coding style says 'end', I&others think we should change it > to > > > > > 'beginning' for better clarity, and consistency with other > operators. > > > > > > > > > > > > > > > Our coding style reads: > > > > > "Break long conditions after && and || logical connectives. See > below > > > for > > > > > the rule for other operators." [1] > > > > > """ > > > > > Overlong expressions not joined by && and || should break so the > > > operator > > > > > starts on the second line and starts in the same column as the > start > > > of the > > > > > expression in the first line. This applies to ?:, binary arithmetic > > > > > operators including +, and member-of operators (in particular the . > > > > > operator in JavaScript, see the Rationale). > > > > > > > > > > Rationale: operator at the front of the continuation line makes for > > > faster > > > > > visual scanning, because there is no need to read to end of line. > Also > > > > > there exists a context-sensitive keyword hazard in JavaScript; see > bug > > > > > 442099, comment 19, which can be avoided by putting . at the start > of a > > > > > continuation line in long member expression. > > > > > """ [2] > > > > > > > > > > > > > > > I initially focused on the rationale, so I thought *all* operators > > > should > > > > > go at the front of the line. > > > > > > > > > > But it seems I've been living a lie! > > > > > &&/|| should apparently be at the end, while other operators (in > some > > > > > situations) should be at the beginning. > > > > > > > > > > > > > > > Now I personally think this just doesn't make sense: > > > > > - Why the distinction between &&/|| and other operators? > > > > > - Why would the excellent rationale not apply to &&/||? > > > > > - Pedantically, the style talks about 'expression *not* joined by > > > &&/||, > > > > > but what about expression that *are* joined by &&/||? (Undefined > > > Behavior!) > > > > > > > > > > Based on that, I believe &&/|| should be made consistent with *all* > > > > > operators, and go at the beginning of lines, aligned with the first > > > operand > > > > > above. > > > > > > > > > > And therefore I would propose the following changes to the coding > > > style: > > > > > - Remove the lonely &&/|| sentence at [1]. > > > > > - Rephrase the first sentence at [2] to something like: "Overlong > > > > > expressions should break so that the operator starts on the > following > > > line, > > > > > in the same column as the first operand for that operator. This > > > applies to > > > > > all binary operators, including member-of operators (in particular > the > > > . > > > > > operator in JavaScript, see the Rationale), and extends to ?: where > > > the 2nd > > > > > and third operands should be on separate lines and start in the > same > > > column > > > > > as the first operand." > > > > > - Keep the rationale at [2]. > > > > > > > > > > Also, I think we should add something about where to break > expressions > > > > > with operators of differing precedences, something like: "Overlong > > > > > expressions containing operators of differing precedences should > first > > > be > > > > > broken at the operator of lowest precedence. E.g.: 'a+b*c' should > be > > > split > > > > > at '+' before '*'" > > > > > > > > > > > > > > > A bit more context: > > > > > Looking at the history of the coding style page, a certain > "Brendan" > > > wrote > > > > > that section in August 2009 [3], shortly after a discussion here > [4] > > > that > > > > > seemed to focus on the dot operator in Javascript. In that > discussion, > > > > > &&/|| appear in examples at the end of lines and nobody talks about > > > that > > > > > (because it was not the main subject, and/or everybody agreed with > it?) > > > > > > > > > > Discuss! > > > > > > > > > > > > > > > [1] https://developer.mozilla.org/en-US/docs/Mozilla/Developer_ > > > > > guide/Coding_Style#Control_Structures > > > > > [2] https://developer.mozilla.org/en-US/docs/Mozilla/Developer_ > > > > > guide/Coding_Style#Operators > > > > > [3] https://developer.mozilla.org/en-US/docs/Mozilla/Developer_ > > > > > guide/Coding_Style$compare?locale=en-US&to=7315&from=7314 > > > > > [4] https://groups.google.com/d/msg/mozilla.dev.platform/ > > > > > Ji9lxlLCYME/zabUmQI9S-sJ > > > > > _______________________________________________ > > > > > dev-platform mailing list > > > > > dev-pl...@lists.mozilla.org > > > > > https://lists.mozilla.org/listinfo/dev-platform > > > _______________________________________________ > > > dev-platform mailing list > > > dev-pl...@lists.mozilla.org > > > https://lists.mozilla.org/listinfo/dev-platform > > > > > _______________________________________________ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform > _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform