diff --git a/docs/releasenotes.html b/docs/releasenotes.html
index 5559936f2..e126d022f 100644
--- a/docs/releasenotes.html
+++ b/docs/releasenotes.html
@@ -61,6 +61,10 @@
Added check for trailing comma in array
initialization. (module ArrayTrailingComma, request
696301)
+
+ MagicNumberCheck now checks array initializers. (request
+ 745949)
+
@@ -75,6 +79,9 @@
Typo in HideUtilityClassConstructor description (bug
743973)
+ False MagicNumberCheck errors for interfaces (bug
+ 745941)
+
diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/MagicNumberCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/MagicNumberCheck.java
index daa6f2672..3ac6b6fbb 100644
--- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/MagicNumberCheck.java
+++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/MagicNumberCheck.java
@@ -20,6 +20,7 @@ package com.puppycrawl.tools.checkstyle.checks;
import com.puppycrawl.tools.checkstyle.api.Check;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
+import com.puppycrawl.tools.checkstyle.api.ScopeUtils;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
import java.util.Arrays;
@@ -141,6 +142,9 @@ public class MagicNumberCheck extends Check
*/
private boolean isConstantDefinition(DetailAST aAST)
{
+ if (ScopeUtils.inInterfaceBlock(aAST)) {
+ return true;
+ }
DetailAST parent = aAST.getParent();
//expression?
@@ -148,8 +152,13 @@ public class MagicNumberCheck extends Check
return false;
}
- //assignment?
+ //array init?
parent = parent.getParent();
+ if ((parent != null) && (parent.getType() == TokenTypes.ARRAY_INIT)) {
+ parent = parent.getParent();
+ }
+
+ //assignment?
if ((parent == null) || (parent.getType() != TokenTypes.ASSIGN)) {
return false;
}
diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/InputMagicNumber.java b/src/testinputs/com/puppycrawl/tools/checkstyle/InputMagicNumber.java
index 0ce64834f..3e20b6896 100644
--- a/src/testinputs/com/puppycrawl/tools/checkstyle/InputMagicNumber.java
+++ b/src/testinputs/com/puppycrawl/tools/checkstyle/InputMagicNumber.java
@@ -72,3 +72,16 @@ public class InputMagicNumber {
long longHexVar17 = 0X11l;
}
}
+
+interface Blah
+{
+ int LOW = 5;
+ int HIGH = 78;
+}
+
+class ArrayMagicTest
+{
+ private static final int[] NONMAGIC = {3};
+ private int[] magic = {3};
+}
+
diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/MagicNumberCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/MagicNumberCheckTest.java
index 01f952c57..8c3f39ab7 100644
--- a/src/tests/com/puppycrawl/tools/checkstyle/checks/MagicNumberCheckTest.java
+++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/MagicNumberCheckTest.java
@@ -32,6 +32,7 @@ public class MagicNumberCheckTest
"69:24: '0X011' is a magic number.",
"71:29: '0x10L' is a magic number.",
"72:29: '0X11l' is a magic number.",
+ "85:28: '3' is a magic number.",
};
verify(checkConfig, getPath("InputMagicNumber.java"), expected);
}
@@ -110,6 +111,7 @@ public class MagicNumberCheckTest
"70:28: '0x0L' is a magic number.",
"71:29: '0x10L' is a magic number.",
"72:29: '0X11l' is a magic number.",
+ "85:28: '3' is a magic number.",
};
verify(checkConfig, getPath("InputMagicNumber.java"), expected);
}
@@ -139,6 +141,7 @@ public class MagicNumberCheckTest
"69:24: '0X011' is a magic number.",
"71:29: '0x10L' is a magic number.",
"72:29: '0X11l' is a magic number.",
+ "85:28: '3' is a magic number.",
};
verify(checkConfig, getPath("InputMagicNumber.java"), expected);
}