Annotation location when mixed with modifiers
还没有人认领这个 Issue。
评估
调研方向
首先,将提供的混合注解示例与所链接的 Google Java Style Guide 的第 4.8.5 节和第 4.8.7 节进行比较。没有指定源文件或测试,因此首先定位 formatter 逻辑以及针对修饰符和注解的现有覆盖;当预期的放置位置确定,并且示例得到一致格式化时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
When annotations are mixed with modifiers, formatter formats the code in following way:
$ cat TestingModifiers.java
/** some javadoc. */
public abstract class TestingModifiers {
abstract @MyAnnotation2 public void fooMet1();
final strictfp synchronized protected @MyAnnotation2 void fooMethod7() {}
synchronized final strictfp @MyAnnotation2 public void fooMethod5() {}
@MyAnnotation2 public static @MyAnnotation4 strictfp void someMethod5() {}
strictfp protected final @MyAnnotation2 static synchronized void fooMethod1() {}
native synchronized protected static @MyAnnotation2 void fooMethod3();
}
$ java -jar google-java-format-1.23.0-all-deps.jar TestingModifiers.java > TestingModifiersUpdated.java
$ cat TestingModifiersUpdated.java
/** some javadoc. */
public abstract class TestingModifiers {
abstract @MyAnnotation2 public void fooMet1();
protected final synchronized strictfp @MyAnnotation2 void fooMethod7() {}
final synchronized strictfp @MyAnnotation2 public void fooMethod5() {}
@MyAnnotation2
public static @MyAnnotation4 strictfp void someMethod5() {}
protected final strictfp @MyAnnotation2 static synchronized void fooMethod1() {}
protected static synchronized native @MyAnnotation2 void fooMethod3();
}
$ diff -u TestingModifiers.java TestingModifiersUpdated.java
--- TestingModifiers.java 2024-08-28 11:00:02.129632600 +0530
+++ TestingModifiersUpdated.java 2024-08-28 11:01:40.748988100 +0530
@@ -2,13 +2,14 @@
public abstract class TestingModifiers {
abstract @MyAnnotation2 public void fooMet1();
- final strictfp synchronized protected @MyAnnotation2 void fooMethod7() {}
+ protected final synchronized strictfp @MyAnnotation2 void fooMethod7() {}
- synchronized final strictfp @MyAnnotation2 public void fooMethod5() {}
+ final synchronized strictfp @MyAnnotation2 public void fooMethod5() {}
- @MyAnnotation2 public static @MyAnnotation4 strictfp void someMethod5() {}
+ @MyAnnotation2
+ public static @MyAnnotation4 strictfp void someMethod5() {}
- strictfp protected final @MyAnnotation2 static synchronized void fooMethod1() {}
+ protected final strictfp @MyAnnotation2 static synchronized void fooMethod1() {}
- native synchronized protected static @MyAnnotation2 void fooMethod3();
+ protected static synchronized native @MyAnnotation2 void fooMethod3();
}
From 4.8.7 Modifiers
Class and member modifiers, when present, appear in the order recommended by the Java Language Specification:
public protected private abstract default static final transient volatile synchronized native strictfp
There's not explicitly mentioned anything about position of annotations when mixed with modifiers or annotations should not be mixed with modifiers or something similar to that in above rule.
Also, in 4.8.5 Annotations, there's not explicitly mentioned that how annotations should be positioned when used with modifiers. But all sub-sections mostly refers to:
Annotations applying to a class appear immediately after the documentation block, and each annotation is listed on a line of its own (that is, one annotation per line).
Attention to:
immediately after the documentation block
This kind of implies that annotations should be placed before any modifiers. But formatter does not places annotations before modifiers as shown in above example. So if annotations should not be mixed with modifiers and placed at the beginning or in a separate line then formatter should be updated and format the code according to this.
- 主要语言
- Java
- 星标
- 6.2k
- 派生
- 936
- 平均合并
- 6 分钟
- 30 天内合并 PR
- 3
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
google/google-java-format 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
google/google-java-format#1094 · 1 条评论 ·
-
难度 5/5 一周以上 新手友好度 15/100
google/google-java-format#1450 · 1 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 55/100
google/google-java-format#1439 · 1 条评论 ·
-
难度 3/5 1-2 天 新手友好度 62/100
google/google-java-format#1436 · 2 条评论 ·
-
难度 3/5 1-2 天 新手友好度 48/100
google/google-java-format#1428 · 3 条评论 ·
查看 google/google-java-format 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 65/100
-
bug
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 75/100
elastic/gradle-plugins#157 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
cryptomator/hub#497 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
johanhaleby/occurrent#1120 ·