summaryrefslogtreecommitdiff
path: root/plugins/InspectionGadgets/test/com/siyeh/igtest/memory/inner_class_may_be_static/InnerClassMayBeStatic.java
blob: dc0b97443b4e2f17f7ac82fe640a6b9a733bd02d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.siyeh.igtest.memory.inner_class_may_be_static;

import javax.swing.*;

public class InnerClassMayBeStatic {
     class <warning descr="Inner class 'Nested' may be 'static'">Nested</warning> {
         public void foo() {
             bar("InnerClassMayBeStaticInspection.this");
         }

         private void bar(String string) {
         }
     }
}

class IDEADEV_5513 {

    private static class Inner  {

        private boolean b = false;

        private class InnerInner {

            public void foo() {
                b = true;
            }
        }
    }
}

class C extends JComponent {
    private class I {
        public void foo() {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    repaint();
                }
            });
        }
    }
}
class D {

    void foo() {
        new Object() {
            class Y {}
        };
    }
}
class StaticInnerClass {

  private int foo;
  int bar;

  public class Baz extends StaticInnerClass  {
    Baz() {
      foo = -1;
    }
  }
  class <warning descr="Inner class 'C' may be 'static'">C</warning> extends StaticInnerClass {{
    bar = 1;
  }}
}
class SomeBeanUnitTest {

  private class <warning descr="Inner class 'BeanCreator' may be 'static'">BeanCreator</warning> {

    public BeanCreator  withQuery() {
      return null;
    }
  }
}
class Outer {
  class <warning descr="Inner class 'A' may be 'static'">A</warning> { // may be static
    B b;
  }
  class B extends  A {} // may not be static

  class <warning descr="Inner class 'C' may be 'static'">C</warning> { // may be static
    D b;
    class D extends C {}
  }

  static class E {
    G.F b;
    class <warning descr="Inner class 'G' may be 'static'">G</warning> { // may be static
      class F extends  E {}
    }
  }

  class <warning descr="Inner class 'H' may be 'static'">H</warning> { // may be static
    J.I b;
    class J {
      class I extends  H {}
    }
  }
}
class Complex {
  class C {
    void m() {
      Complex.super.toString();
    }
  }
  int i;
  static void n() {
  }

  private class <warning descr="Inner class 'A' may be 'static'">A</warning> {
    private A() {
    }
  }

  class <warning descr="Inner class 'B' may be 'static'">B</warning> {
  }

  class <warning descr="Inner class 'F' may be 'static'">F</warning> extends Complex {
    class G {
    }

    {
      A a = (A) null;
      G g = (G) null;
      new A() {};
      new B();

      i = 10;
      new E().m();
      Complex.n();
    }

    void m(A a) {
      a.toString();
    }

    class E {
      private void m() {
      }
    }
  }
}