Skip to content

Commit

Permalink
Fixed NullPointerException in method findReturnTypeBinding()
Browse files Browse the repository at this point in the history
occurring when the method declarations containing the clones
are constructors.
  • Loading branch information
tsantalis committed Sep 2, 2016
1 parent bd00ca6 commit e1c90f3
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 23 deletions.
2 changes: 1 addition & 1 deletion META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<returnedTypeBindings1.size(); i++) {
Expand All @@ -3905,13 +3907,15 @@ else if(returnedTypeBindings1.size() == returnedTypeBindings2.size()) {
returnTypeBinding = typeBinding;
}
else {
ITypeBinding methodReturnTypeBinding1 = methodDeclaration1.getReturnType2().resolveBinding();
ITypeBinding methodReturnTypeBinding2 = methodDeclaration2.getReturnType2().resolveBinding();
ITypeBinding commonSuperTypeWithMethodReturnTypeBinding1 = ASTNodeMatcher.commonSuperType(returnTypeBinding, methodReturnTypeBinding1);
ITypeBinding commonSuperTypeWithMethodReturnTypeBinding2 = ASTNodeMatcher.commonSuperType(returnTypeBinding, methodReturnTypeBinding2);
if(methodReturnTypeBinding1.isEqualTo(commonSuperTypeWithMethodReturnTypeBinding1) &&
methodReturnTypeBinding2.isEqualTo(commonSuperTypeWithMethodReturnTypeBinding2)) {
returnTypeBinding = methodReturnTypeBinding1;
if(methodDeclaration1.getReturnType2() != null && methodDeclaration2.getReturnType2() != null) {
ITypeBinding methodReturnTypeBinding1 = methodDeclaration1.getReturnType2().resolveBinding();
ITypeBinding methodReturnTypeBinding2 = methodDeclaration2.getReturnType2().resolveBinding();
ITypeBinding commonSuperTypeWithMethodReturnTypeBinding1 = ASTNodeMatcher.commonSuperType(returnTypeBinding, methodReturnTypeBinding1);
ITypeBinding commonSuperTypeWithMethodReturnTypeBinding2 = ASTNodeMatcher.commonSuperType(returnTypeBinding, methodReturnTypeBinding2);
if(methodReturnTypeBinding1.isEqualTo(commonSuperTypeWithMethodReturnTypeBinding1) &&
methodReturnTypeBinding2.isEqualTo(commonSuperTypeWithMethodReturnTypeBinding2)) {
returnTypeBinding = methodReturnTypeBinding1;
}
}
}
}
Expand All @@ -3921,13 +3925,15 @@ else if(commonSuperType != null) {
returnTypeBinding = typeBinding;
}
else {
ITypeBinding methodReturnTypeBinding1 = methodDeclaration1.getReturnType2().resolveBinding();
ITypeBinding methodReturnTypeBinding2 = methodDeclaration2.getReturnType2().resolveBinding();
ITypeBinding commonSuperTypeWithMethodReturnTypeBinding1 = ASTNodeMatcher.commonSuperType(returnTypeBinding, methodReturnTypeBinding1);
ITypeBinding commonSuperTypeWithMethodReturnTypeBinding2 = ASTNodeMatcher.commonSuperType(returnTypeBinding, methodReturnTypeBinding2);
if(methodReturnTypeBinding1.isEqualTo(commonSuperTypeWithMethodReturnTypeBinding1) &&
methodReturnTypeBinding2.isEqualTo(commonSuperTypeWithMethodReturnTypeBinding2)) {
returnTypeBinding = methodReturnTypeBinding1;
if(methodDeclaration1.getReturnType2() != null && methodDeclaration2.getReturnType2() != null) {
ITypeBinding methodReturnTypeBinding1 = methodDeclaration1.getReturnType2().resolveBinding();
ITypeBinding methodReturnTypeBinding2 = methodDeclaration2.getReturnType2().resolveBinding();
ITypeBinding commonSuperTypeWithMethodReturnTypeBinding1 = ASTNodeMatcher.commonSuperType(returnTypeBinding, methodReturnTypeBinding1);
ITypeBinding commonSuperTypeWithMethodReturnTypeBinding2 = ASTNodeMatcher.commonSuperType(returnTypeBinding, methodReturnTypeBinding2);
if(methodReturnTypeBinding1.isEqualTo(commonSuperTypeWithMethodReturnTypeBinding1) &&
methodReturnTypeBinding2.isEqualTo(commonSuperTypeWithMethodReturnTypeBinding2)) {
returnTypeBinding = methodReturnTypeBinding1;
}
}
}
}
Expand Down

0 comments on commit e1c90f3

Please sign in to comment.