diff --git a/build.xml b/build.xml
index 688a08068..01f9fd587 100644
--- a/build.xml
+++ b/build.xml
@@ -182,7 +182,7 @@
+ value="**/grammars/*,**/j2ee/*,**/InputAssertIdentifier.java,**/InputJUnitTest.java,**/InputValidMethodIndent.java,**/InputSetterGetter.java,**/InputImport.java,**/InputCovariant.java,**/InputClone.java,**/InputSimple.java"/>
Object clone()
{
- super.clone();
+ return super.clone();
}
}
@@ -70,4 +70,4 @@ class MyClassWithGenericSuperMethod
{
}
-}
\ No newline at end of file
+}
diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputExplicitInit.java b/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputExplicitInit.java
index 573773537..ef243bf94 100644
--- a/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputExplicitInit.java
+++ b/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputExplicitInit.java
@@ -60,11 +60,14 @@ enum InputExplicitInit3 {
}
class ForEach {
- public ForEach(Collection strings)
+ public ForEach(java.util.Collection strings)
{
for(String s : strings) //this should not even be checked
{
}
}
-}
\ No newline at end of file
+}
+
+class Bar {
+}
diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputFinalize.java b/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputFinalize.java
index 72c1ea7d8..535208e9f 100644
--- a/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputFinalize.java
+++ b/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputFinalize.java
@@ -44,10 +44,10 @@ class InnerFinalize
}
//Check that super keword isn't snagged here
-class MyClassWithGenericSuperMethod
+class MyClassWithGenericSuperMethod1
{
void someMethod(java.util.List super java.util.Map> l)
{
}
-}
\ No newline at end of file
+}
diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputEmptyFile.java b/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputEmptyFile.java
new file mode 100644
index 000000000..bb7db0ea4
--- /dev/null
+++ b/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputEmptyFile.java
@@ -0,0 +1,2 @@
+// this is an empty file
+// it's a test for 1165855
diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputUnusedMethod.java b/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputUnusedMethod.java
index 78037508c..6aa8b6b2e 100644
--- a/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputUnusedMethod.java
+++ b/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputUnusedMethod.java
@@ -86,7 +86,7 @@ class SerializableTest implements java.io.Serializable
}
}
-class BadSerializableTest implements java.io.Serializable
+class BadSerializableTest1 implements java.io.Serializable
{
private void writeObject(Object out) throws java.io.IOException
{
@@ -100,36 +100,19 @@ class BadSerializableTest implements java.io.Serializable
{
}
- private int writeObject(java.io.ObjectOutputStream out) throws java.io.IOException
- {
- }
-
private void readObject(java.io.ObjectInputStream in) throws java.io.IOException
{
}
- private void readObject(java.io.ObjectInputStream in) throws ClassNotFoundException
- {
- }
-
private void readObject(Object in) throws java.io.IOException, ClassNotFoundException
{
}
- private int readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException
- {
- }
-
private int writeReplace() throws java.io.ObjectStreamException
{
return 1;
}
- private java.lang.Object writeReplace()
- {
- return new SerializableTest();
- }
-
private Object writeReplace(int i) throws java.io.ObjectStreamException
{
return new SerializableTest();
@@ -140,13 +123,33 @@ class BadSerializableTest implements java.io.Serializable
return 1;
}
- private Object readResolve()
- {
- return new SerializableTest();
- }
-
private Object readResolve(int i) throws java.io.ObjectStreamException
{
return new SerializableTest();
}
}
+
+class BadSerializableTest2 implements java.io.Serializable
+{
+ private int writeObject(java.io.ObjectOutputStream out) throws java.io.IOException
+ {
+ return 1;
+ }
+
+ private void readObject(java.io.ObjectInputStream in) throws ClassNotFoundException
+ {
+ }
+
+ private Object readResolve()
+ {
+ return new SerializableTest();
+ }
+}
+
+class BadSerializableTest3 implements java.io.Serializable
+{
+ private int readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException
+ {
+ return 1;
+ }
+}
diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/usage/UnusedPrivateMethodCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/usage/UnusedPrivateMethodCheckTest.java
index b2e5cd32c..d37077b4f 100644
--- a/src/tests/com/puppycrawl/tools/checkstyle/checks/usage/UnusedPrivateMethodCheckTest.java
+++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/usage/UnusedPrivateMethodCheckTest.java
@@ -19,17 +19,16 @@ public class UnusedPrivateMethodCheckTest
"91:18: Unused private method 'writeObject'.",
"95:18: Unused private method 'writeObject'.",
"99:18: Unused private method 'writeObject'.",
- "103:17: Unused private method 'writeObject'.",
+ "103:18: Unused private method 'readObject'.",
"107:18: Unused private method 'readObject'.",
- "111:18: Unused private method 'readObject'.",
- "115:18: Unused private method 'readObject'.",
- "119:17: Unused private method 'readObject'.",
- "123:17: Unused private method 'writeReplace'.",
- "128:30: Unused private method 'writeReplace'.",
- "133:20: Unused private method 'writeReplace'.",
- "138:17: Unused private method 'readResolve'.",
+ "111:17: Unused private method 'writeReplace'.",
+ "116:20: Unused private method 'writeReplace'.",
+ "121:17: Unused private method 'readResolve'.",
+ "126:20: Unused private method 'readResolve'.",
+ "134:17: Unused private method 'writeObject'.",
+ "139:18: Unused private method 'readObject'.",
"143:20: Unused private method 'readResolve'.",
- "148:20: Unused private method 'readResolve'.",
+ "151:17: Unused private method 'readObject'.",
};
verify(checkConfig, getPath("usage/InputUnusedMethod.java"), expected);
}
@@ -45,17 +44,16 @@ public class UnusedPrivateMethodCheckTest
"91:18: Unused private method 'writeObject'.",
"95:18: Unused private method 'writeObject'.",
"99:18: Unused private method 'writeObject'.",
- "103:17: Unused private method 'writeObject'.",
+ "103:18: Unused private method 'readObject'.",
"107:18: Unused private method 'readObject'.",
- "111:18: Unused private method 'readObject'.",
- "115:18: Unused private method 'readObject'.",
- "119:17: Unused private method 'readObject'.",
- "123:17: Unused private method 'writeReplace'.",
- "128:30: Unused private method 'writeReplace'.",
- "133:20: Unused private method 'writeReplace'.",
- "138:17: Unused private method 'readResolve'.",
+ "111:17: Unused private method 'writeReplace'.",
+ "116:20: Unused private method 'writeReplace'.",
+ "121:17: Unused private method 'readResolve'.",
+ "126:20: Unused private method 'readResolve'.",
+ "134:17: Unused private method 'writeObject'.",
+ "139:18: Unused private method 'readObject'.",
"143:20: Unused private method 'readResolve'.",
- "148:20: Unused private method 'readResolve'.",
+ "151:17: Unused private method 'readObject'.",
};
verify(checkConfig, getPath("usage/InputUnusedMethod.java"), expected);
}
@@ -68,4 +66,13 @@ public class UnusedPrivateMethodCheckTest
};
verify(checkConfig, getPath("usage/InputInnerUsedMethod.java"), expected);
}
+
+ public void testEmptyFile() throws Exception
+ {
+ final DefaultConfiguration checkConfig =
+ createCheckConfig(UnusedPrivateMethodCheck.class);
+ final String[] expected = {
+ };
+ verify(checkConfig, getPath("usage/InputEmptyFile.java"), expected);
+ }
}
diff --git a/src/xdocs/releasenotes.xml b/src/xdocs/releasenotes.xml
index 38b79df4c..f2af60ec4 100755
--- a/src/xdocs/releasenotes.xml
+++ b/src/xdocs/releasenotes.xml
@@ -26,6 +26,9 @@
Fixed bug #1185722 (DeclarationCollector.leaveToken unbalanced
with visitToken)
+ Fixed NPE in AbstractUsageCheck when we process an empty
+ file (bug 1165855)
+