From 4fc4ba75b68e4448297adefbc7ed9651f830b127 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 5 Sep 2012 15:05:16 +0200 Subject: [PATCH] EA-38947 (assert: JavaParserUtil.parseFragment) --- ...thoutPublicNoArgConstructorInspection.java | 5 ++++ ...alizableWithoutPublicNoArgConstructor.java | 26 +++++++++++++++++++ .../expected.xml | 10 ++++--- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ExternalizableWithoutPublicNoArgConstructorInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ExternalizableWithoutPublicNoArgConstructorInspection.java index 4a23293bac41..27920b1343b0 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ExternalizableWithoutPublicNoArgConstructorInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ExternalizableWithoutPublicNoArgConstructorInspection.java @@ -52,6 +52,10 @@ public class ExternalizableWithoutPublicNoArgConstructorInspection extends BaseI final PsiMethod constructor = (PsiMethod)infos[1]; if (constructor == null) { final PsiClass aClass = (PsiClass)infos[0]; + if (aClass instanceof PsiAnonymousClass) { + // can't create constructor for anonymous class + return null; + } return new DelegatingFix(new AddDefaultConstructorFix(aClass, PsiModifier.PUBLIC)); } else { @@ -73,6 +77,7 @@ public class ExternalizableWithoutPublicNoArgConstructorInspection extends BaseI private static class MakeConstructorPublicFix extends InspectionGadgetsFix { + @Override @NotNull public String getName() { return InspectionGadgetsBundle.message("make.constructor.public"); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/serialization/externalizable_without_public_no_arg_constructor/ExternalizableWithoutPublicNoArgConstructor.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/serialization/externalizable_without_public_no_arg_constructor/ExternalizableWithoutPublicNoArgConstructor.java index b0676d8bdd07..0be95608c044 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/serialization/externalizable_without_public_no_arg_constructor/ExternalizableWithoutPublicNoArgConstructor.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/serialization/externalizable_without_public_no_arg_constructor/ExternalizableWithoutPublicNoArgConstructor.java @@ -31,4 +31,30 @@ class eImpl2 extends e { public void writeExternal(ObjectOutput out) throws IOException { } } +class AnonymousTest { + public static void main(String[] args) throws IOException, ClassNotFoundException { + final String h = "Hello World"; + final Externalizable externalizable = new Externalizable() { + + private String string = h; + + @Override + public void writeExternal(ObjectOutput out) throws IOException { + out.writeUTF(string); + } + + @Override + public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { + string = in.readUTF(); + } + }; + final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + final ObjectOutputStream out = new ObjectOutputStream(bytes); + out.writeObject(externalizable); + out.close(); + final ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray())); + final Object o = in.readObject(); + System.out.println("o = " + o); + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/serialization/externalizable_without_public_no_arg_constructor/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/serialization/externalizable_without_public_no_arg_constructor/expected.xml index e03eea5d8a6b..1a66108a074d 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/serialization/externalizable_without_public_no_arg_constructor/expected.xml +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/serialization/externalizable_without_public_no_arg_constructor/expected.xml @@ -3,7 +3,6 @@ ExternalizableWithoutPublicNoArgConstructor.java 9 - test_5975879954938100914 Externalizable class without public no-arg constructor Externalizable class <code>eImpl</code> has no public no-arg constructor @@ -11,7 +10,6 @@ ExternalizableWithoutPublicNoArgConstructor.java 16 - Externalizable class without public no-arg constructor Externalizable class <code>eImpl1</code> has no public no-arg constructor @@ -19,8 +17,14 @@ ExternalizableWithoutPublicNoArgConstructor.java 24 - Externalizable class without public no-arg constructor Externalizable class <code>eImpl2</code> has no public no-arg constructor + + + ExternalizableWithoutPublicNoArgConstructor.java + 37 + Externalizable class without public no-arg constructor + Externalizable class <code>Externalizable</code> has no public no-arg constructor #loc + \ No newline at end of file