On Tue, 2 Nov 2021 16:30:56 GMT, Pavel Rappo <pra...@openjdk.org> wrote:
> This PR follows up one of the recent PRs, where I used a non-canonical > modifier order. Since the problem was noticed [^1], why not to address it en > masse? > > As far as I remember, the first mass-canonicalization of modifiers took place > in JDK-8136583 in 2015 [^2]. That change affected 1780 lines spanning 453 > files. Since then modifiers have become a bit loose, and it makes sense to > re-bless (using the JDK-8136583 terminology) them. > > This change was produced by running the below command followed by updating > the copyright years on the affected files where necessary: > > $ sh ./bin/blessed-modifier-order.sh src/java.base > > The resulting change is much smaller than that of 2015: 39 lines spanning 21 > files. > > [^1]: > https://mail.openjdk.java.net/pipermail/core-libs-dev/2021-November/082987.html > (or https://github.com/openjdk/jdk/pull/6191#pullrequestreview-794333365) > [^2]: > http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-September/035217.html > _Mailing list message from [David Holmes](mailto:david.hol...@oracle.com) on > [core-libs-dev](mailto:core-libs-...@mail.openjdk.java.net):_ > > On 3/11/2021 9:26 pm, Pavel Rappo wrote: > > > On Tue, 2 Nov 2021 20:34:44 GMT, Martin Buchholz <martin at openjdk.org> > > wrote: > > > > > Pragmatically, fix the script to ignore those keywords on comment > > > > > lines. Learn Perl, its just a regular expression pattern match and > > > > > replace expression. > > > > > > > > > > > > I understand in principle how to modify that script to ignore doc > > > > comments. The thing I was referring to when said "btw, how would we do > > > > that?" was this: not all comment lines are prose. Some of those lines > > > > belong to snippets of code, which I guess you would also like to be > > > > properly formatted. > > > > > But having seen several reviewers be unmoved by the difference, the > > > > > real pragmatic view is to ignore the English. > > > > > > > > > > > > I'm sorry you feel that way. Would it be okay if I made it clear that > > > > those two words are not English adjectives but are special symbols that > > > > happen to use Latin script and originate from the English words they > > > > resemble? If so, I could enclose each of them in `{@code ... }`. If > > > > not, I could drop that particular change from this PR. > > > > > > > > > The blessed-modifier-order.sh script intentionally modifies comments, > > > with the hope of finding code snippets (it did!) > > > Probably I manually deleted the change to Object.java back in 2015, to > > > avoid the sort of controversy we're seeing now. > > > I don't have a strong feeling either way on changing that file. > > > I agree with @pavelrappo that script-generated changes should not be > > > mixed with manual changes. > > > I would also not update copyright years for such changes. > > > It's a feature of blessed-modifier-order.sh that all existing formatting > > > is perfectly preserved. > > > > > > One more thing. Please have a look at this other line in the same file; > > this line was there before the change > > https://github.com/openjdk/jdk/blob/465d350d0b3cac277a58b9f8ece196c1cde68e80/src/java.base/share/classes/java/lang/Object.java#L49 > > So before the change, the file was somewhat inconsistent. The change made > > it consistent. **If one is going to ever revert that controversial part of > > the change, please update both lines so that the file remains consistent.** > > Line 281 is (was!) consistent with line 277 because it is distinguishing a > synchronized "static method" from a synchronized "instance method". There was > no need to make any change to line 281 because of the blessed-order of > modifiers as defined for method declarations! This text is just prose. Now > for consistency you should change line 277 to refer to a "non-static > synchronized method" (as "instance synchronized method" would be truly awful). Thanks, David. You've provided a clear and convincing argument, and I can see the inconsistency I introduced. I can revert that particular piece back if you think that it would be appropriate. That said, this line will have to be filtered out every time the script is run. I could probably provide a more involved script that harnesses the power of AST (com.sun.source.doctree) to try to filter out prose, but it would be impossible to beat the simplicity of the current script; and simplicity is also important. > Line 49 places "static synchronized" in code font, implying that it is > referring to the actual method modifiers and as such using the blessed order > is appropriate. Line 49 does not need to be "consistent" with line 281. If > line 49 used a normal font so the words "static" and "synchronized" were just > prose then either order would be perfectly fine in terms of English language, > but then you could make a case for having it be consistent with line 281. I've been always having hard time with modifiers being not enclosed in `@code` in the first place; they are barely English words. Is there really a semantic difference between L49 and L281 such that it warrants the use of `@code` in the former but not in the latter case? Does `synchornized` or `static` in L281 refer to anything other than the like-named Java modifiers? ------------- PR: https://git.openjdk.java.net/jdk/pull/6213