diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/MagicNumberInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/MagicNumberInspectionBase.java
index 215bf39f1a37..a664d01a92dc 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/MagicNumberInspectionBase.java
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/MagicNumberInspectionBase.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -77,7 +77,8 @@ public class MagicNumberInspectionBase extends BaseInspection {
return;
}
if (ignoreInHashCode) {
- final PsiMethod containingMethod = PsiTreeUtil.getParentOfType(expression, PsiMethod.class);
+ final PsiMethod containingMethod = PsiTreeUtil.getParentOfType(expression, PsiMethod.class, true,
+ PsiClass.class, PsiLambdaExpression.class);
if (MethodUtils.isHashCode(containingMethod)) {
return;
}
@@ -119,7 +120,8 @@ public class MagicNumberInspectionBase extends BaseInspection {
CommonClassNames.JAVA_LANG_ABSTRACT_STRING_BUILDER,
CommonClassNames.JAVA_UTIL_MAP,
CommonClassNames.JAVA_UTIL_COLLECTION,
- "java.io.ByteArrayOutputStream") != null;
+ "java.io.ByteArrayOutputStream",
+ "java.awt.Dimension") != null;
}
private boolean isSpecialCaseLiteral(PsiLiteralExpression expression) {
@@ -145,7 +147,7 @@ public class MagicNumberInspectionBase extends BaseInspection {
public boolean isFinalVariableInitialization(PsiExpression expression) {
final PsiElement parent =
- PsiTreeUtil.skipParentsOfType(expression, PsiTypeCastExpression.class, PsiParenthesizedExpression.class, PsiPrefixExpression.class);
+ PsiTreeUtil.getParentOfType(expression, PsiVariable.class, PsiAssignmentExpression.class);
final PsiVariable variable;
if (!(parent instanceof PsiVariable)) {
if (!(parent instanceof PsiAssignmentExpression)) {
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/MagicNumber.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/MagicNumber.java
index fe7cb824e3aa..1e1af814f3a6 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/MagicNumber.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/magic_number/MagicNumber.java
@@ -1,7 +1,9 @@
package com.siyeh.igtest.abstraction.magic_number;
+import java.awt.*;
import java.util.*;
import java.io.*;
+import java.util.List;
@Size(max = 15)
public class MagicNumber
@@ -11,6 +13,7 @@ public class MagicNumber
private static int s_foo2 = 400;
private final int m_foo2 = -(-(400));
private static final List s_set = new ArrayList(400);
+ private static final Dimension PREFERRED_SIZE = new Dimension(600, 400);
public static void main(String[] args)
{
@@ -18,6 +21,10 @@ public class MagicNumber
set.toString();
}
+ public Dimension getScreenSize() {
+ return new Dimension(2880, 1800);
+ }
+
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
@@ -31,6 +38,9 @@ public class MagicNumber
}
public int hashCode() {
+ new Object() {
+ private int i = 987;
+ };
int result;
result = m_foo;
result = 29 * result + m_foo2;
@@ -38,7 +48,7 @@ public class MagicNumber
}
void foo() {
- final int value = 101 * 55;
+ final int value = 101 * 55;
}
ByteArrayOutputStream out = new ByteArrayOutputStream(756);
@@ -49,4 +59,34 @@ public class MagicNumber
}
@interface Size {
int max();
+}
+enum Planet {
+ MERCURY (3.303e+23, 2.4397e6),
+ VENUS (4.869e+24, 6.0518e6),
+ EARTH (5.976e+24, 6.37814e6),
+ MARS (6.421e+23, 3.3972e6),
+ JUPITER (1.9e+27, 7.1492e7),
+ SATURN (5.688e+26, 6.0268e7),
+ URANUS (8.686e+25, 2.5559e7),
+ NEPTUNE (1.024e+26, 2.4746e7),
+ PLUTO (1.27e+22, 1.137e6);
+
+ private final double mass; // in kilograms
+ private final double radius; // in meters
+ Planet(double mass, double radius) {
+ this.mass = mass;
+ this.radius = radius;
+ }
+ public double mass() { return mass; }
+ public double radius() { return radius; }
+
+ // universal gravitational constant (m3 kg-1 s-2)
+ public static final double G = 6.67300E-11;
+
+ public double surfaceGravity() {
+ return G * mass / (radius * radius);
+ }
+ public double surfaceWeight(double otherMass) {
+ return otherMass * surfaceGravity();
+ }
}
\ No newline at end of file