From 4691d52517200ca4ee1754fbbb060362e50c8a1e Mon Sep 17 00:00:00 2001 From: "alberto.cuda" Date: Thu, 29 Sep 2016 06:39:42 +0000 Subject: [PATCH] Issue #3471: Fix order of "default" method modifier --- .../rule487modifiers/ModifierOrderTest.java | 1 + .../rule487modifiers/InputModifierOrder.java | 8 ++++++++ .../checks/modifier/ModifierOrderCheck.java | 5 +++-- .../checks/modifier/ModifierOrderCheckTest.java | 1 + .../checks/modifier/InputModifier.java | 16 +++++++++++++++- src/xdocs/config_modifier.xml | 8 ++++++-- 6 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/it/java/com/google/checkstyle/test/chapter4formatting/rule487modifiers/ModifierOrderTest.java b/src/it/java/com/google/checkstyle/test/chapter4formatting/rule487modifiers/ModifierOrderTest.java index d052f0285..3376988c2 100644 --- a/src/it/java/com/google/checkstyle/test/chapter4formatting/rule487modifiers/ModifierOrderTest.java +++ b/src/it/java/com/google/checkstyle/test/chapter4formatting/rule487modifiers/ModifierOrderTest.java @@ -97,6 +97,7 @@ public class ModifierOrderTest extends BaseCheckTestSupport { "215:28: " + getCheckMessage(clazz, msgMod, "synchronized"), "217:37: " + getCheckMessage(clazz, msgMod, "protected"), "219:22: " + getCheckMessage(clazz, msgAnnotation, "@MyAnnotation2"), + "245:14: " + getCheckMessage(clazz, msgMod, "default"), }; final Configuration checkConfig = getCheckConfig("ModifierOrder"); diff --git a/src/it/resources/com/google/checkstyle/test/chapter4formatting/rule487modifiers/InputModifierOrder.java b/src/it/resources/com/google/checkstyle/test/chapter4formatting/rule487modifiers/InputModifierOrder.java index ad405600d..1af55bc10 100644 --- a/src/it/resources/com/google/checkstyle/test/chapter4formatting/rule487modifiers/InputModifierOrder.java +++ b/src/it/resources/com/google/checkstyle/test/chapter4formatting/rule487modifiers/InputModifierOrder.java @@ -236,3 +236,11 @@ class WithInner @interface MyAnnotation4 { } + +/** Illegal order of modifiers for interface methods */ +interface InputModifierOrderInterface +{ + default strictfp void a() { } //ok + + strictfp default void b() { } //warn +} diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/modifier/ModifierOrderCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/modifier/ModifierOrderCheck.java index 396f3f1c4..8b145098c 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/modifier/ModifierOrderCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/modifier/ModifierOrderCheck.java @@ -41,6 +41,7 @@ import com.puppycrawl.tools.checkstyle.api.TokenTypes;
  • private
  • abstract
  • +
  • default
  • static
  • final
  • transient
  • @@ -84,8 +85,8 @@ public class ModifierOrderCheck * 8.3.1 and 8.4.3 of the JLS. */ private static final String[] JLS_ORDER = { - "public", "protected", "private", "abstract", "static", "final", - "transient", "volatile", "synchronized", "native", "strictfp", "default", + "public", "protected", "private", "abstract", "default", "static", + "final", "transient", "volatile", "synchronized", "native", "strictfp", }; @Override diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/modifier/ModifierOrderCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/modifier/ModifierOrderCheckTest.java index ae15ec5f3..594a8f224 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/modifier/ModifierOrderCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/modifier/ModifierOrderCheckTest.java @@ -66,6 +66,7 @@ public class ModifierOrderCheckTest "34:13: " + getCheckMessage(MSG_ANNOTATION_ORDER, "@MyAnnotation2"), "39:13: " + getCheckMessage(MSG_ANNOTATION_ORDER, "@MyAnnotation2"), "49:35: " + getCheckMessage(MSG_ANNOTATION_ORDER, "@MyAnnotation4"), + "157:14: " + getCheckMessage(MSG_MODIFIER_ORDER, "default"), }; verify(checkConfig, getPath("InputModifier.java"), expected); } diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/modifier/InputModifier.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/modifier/InputModifier.java index fd3ae6ca7..98eec5d1b 100644 --- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/modifier/InputModifier.java +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/modifier/InputModifier.java @@ -143,4 +143,18 @@ enum TestEnum { public void method() { } -} \ No newline at end of file +} + +/** holder for interface specific modifier check. */ +interface InputDefaultPublicModifier +{ + /** correct order */ + default strictfp void a() + { + } + + /** wrong order */ + strictfp default void b() // violation + { + } +} diff --git a/src/xdocs/config_modifier.xml b/src/xdocs/config_modifier.xml index 32ef23e23..df274166f 100644 --- a/src/xdocs/config_modifier.xml +++ b/src/xdocs/config_modifier.xml @@ -27,8 +27,9 @@ Checks that the order of modifiers conforms to the suggestions in the Java - Language specification, sections 8.1.1, 8.3.1 and 8.4.3. The - correct order is: + Language specification, sections 8.1.1, 8.3.1, 8.4.3 and + 9.4. The correct order is:

      @@ -44,6 +45,9 @@
    1. abstract
    2. +
    3. + default +
    4. static