Skip to content

Commit

Permalink
Fix nullpointer in hasTypeInImports (#672)
Browse files Browse the repository at this point in the history
  • Loading branch information
GerardPaligot authored and monperrus committed May 23, 2016
1 parent fb40cc7 commit 6e44a66
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,8 @@ private String createTypeName(char[][] typeName) {
private String hasTypeInImports(String typeName) {
if (typeName == null) {
return null;
} else if (context.compilationunitdeclaration.imports == null) {
return null;
}
for (ImportReference anImport : context.compilationunitdeclaration.imports) {
final String importType = CharOperation.charToString(anImport.getImportName()[anImport.getImportName().length - 1]);
Expand Down
19 changes: 17 additions & 2 deletions src/test/java/spoon/test/fieldaccesses/FieldAccessTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,14 @@
import spoon.reflect.declaration.CtType;
import spoon.reflect.factory.Factory;
import spoon.reflect.reference.CtFieldReference;
import spoon.reflect.visitor.DefaultJavaPrettyPrinter;
import spoon.reflect.visitor.Query;
import spoon.reflect.visitor.filter.NameFilter;
import spoon.reflect.visitor.filter.TypeFilter;
import spoon.test.fieldaccesses.testclasses.Kuu;
import spoon.test.fieldaccesses.testclasses.Panini;
import spoon.test.fieldaccesses.testclasses.Pozole;
import spoon.test.fieldaccesses.testclasses.Tacos;
import spoon.testing.Assert;
import spoon.testing.utils.ModelUtils;

import java.util.List;
Expand All @@ -37,7 +38,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static spoon.testing.Assert.*;
import static spoon.testing.Assert.assertThat;
import static spoon.testing.utils.ModelUtils.build;
import static spoon.testing.utils.ModelUtils.buildClass;

Expand Down Expand Up @@ -335,4 +336,18 @@ public void testTypeOfFieldAccess() throws Exception {
assertNotNull(fieldAccesses.get(0).getType());
assertEquals(fieldAccesses.get(0).getVariable().getType(), fieldAccesses.get(0).getType());
}

@Test
public void testFieldAccessWithoutAnyImport() throws Exception {
final Launcher launcher = new Launcher();
launcher.addInputResource("./src/test/java/spoon/test/fieldaccesses/testclasses/Kuu.java");
launcher.addInputResource("./src/test/java/spoon/test/fieldaccesses/testclasses/Mole.java");
launcher.setSourceOutputDirectory("./target/trash");
launcher.run();

final CtType<Kuu> aType = launcher.getFactory().Type().get(Kuu.class);
final DefaultJavaPrettyPrinter printer = new DefaultJavaPrettyPrinter(aType.getFactory().getEnvironment());
assertEquals(0, printer.computeImports(aType).size());
assertEquals("spoon.test.fieldaccesses.testclasses.Mole.Delicious delicious", aType.getMethodsByName("m").get(0).getParameters().get(0).toString());
}
}
6 changes: 6 additions & 0 deletions src/test/java/spoon/test/fieldaccesses/testclasses/Kuu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package spoon.test.fieldaccesses.testclasses;

public class Kuu {
public void m(Mole.Delicious delicious) {
}
}
6 changes: 6 additions & 0 deletions src/test/java/spoon/test/fieldaccesses/testclasses/Mole.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package spoon.test.fieldaccesses.testclasses;

class Mole {
public class Delicious {
}
}

0 comments on commit 6e44a66

Please sign in to comment.