From e1c90f3da2235122bd7ea598b008d293de91f0ea Mon Sep 17 00:00:00 2001 From: tsantalis Date: Fri, 2 Sep 2016 11:10:54 -0400 Subject: [PATCH] Fixed NullPointerException in method findReturnTypeBinding() occurring when the method declarations containing the clones are constructors. --- META-INF/MANIFEST.MF | 2 +- .../cfg/mapping/PreconditionExaminer.java | 50 +++++++++++-------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index 16860dc4..0c9fb738 100644 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDeodorant Plug-in Bundle-SymbolicName: gr.uom.java.jdeodorant; singleton:=true -Bundle-Version: 5.0.61 +Bundle-Version: 5.0.62 Bundle-Activator: gr.uom.java.jdeodorant.refactoring.Activator Bundle-Localization: plugin Require-Bundle: org.eclipse.ui, diff --git a/src/gr/uom/java/ast/decomposition/cfg/mapping/PreconditionExaminer.java b/src/gr/uom/java/ast/decomposition/cfg/mapping/PreconditionExaminer.java index e7db8124..86ea8faf 100644 --- a/src/gr/uom/java/ast/decomposition/cfg/mapping/PreconditionExaminer.java +++ b/src/gr/uom/java/ast/decomposition/cfg/mapping/PreconditionExaminer.java @@ -3878,14 +3878,16 @@ else if(returnedTypeBindings1.size() == returnedTypeBindings2.size()) { ITypeBinding returnTypeBinding = null; if(returnedTypeBindings1.size() == 0 && returnedTypeBindings2.size() == 0 && pdg1.getNodes().size() == mappedNodesG1.size() && pdg2.getNodes().size() == mappedNodesG2.size()) { - ITypeBinding methodReturnTypeBinding1 = methodDeclaration1.getReturnType2().resolveBinding(); - ITypeBinding methodReturnTypeBinding2 = methodDeclaration2.getReturnType2().resolveBinding(); - ITypeBinding commonSuperType = ASTNodeMatcher.commonSuperType(methodReturnTypeBinding1, methodReturnTypeBinding2); - if(methodReturnTypeBinding1.isEqualTo(methodReturnTypeBinding2)) { - returnTypeBinding = methodReturnTypeBinding1; - } - else { - returnTypeBinding = commonSuperType; + if(methodDeclaration1.getReturnType2() != null && methodDeclaration2.getReturnType2() != null) { + ITypeBinding methodReturnTypeBinding1 = methodDeclaration1.getReturnType2().resolveBinding(); + ITypeBinding methodReturnTypeBinding2 = methodDeclaration2.getReturnType2().resolveBinding(); + ITypeBinding commonSuperType = ASTNodeMatcher.commonSuperType(methodReturnTypeBinding1, methodReturnTypeBinding2); + if(methodReturnTypeBinding1.isEqualTo(methodReturnTypeBinding2)) { + returnTypeBinding = methodReturnTypeBinding1; + } + else { + returnTypeBinding = commonSuperType; + } } } for(int i=0; i