[Bug]: CtComment getpath() throws a NullPointerException
- Dominant language
- Java
- Stars
- 2k
- Forks
- 392
- Avg merge
- 11h 24m
- Merged PRs (30d)
- 36
Description
### Describe the bug
CtComment getpath() throws a NullPointerException, Observe that the error is caused by an unknown class(Test02) in the static code block
### Source code you are trying to analyze/transform
```Java
package org.example.module01;
import org.example.module02.Test02;
import java.util.HashMap;
import java.util.Map;
/**
* NumberCopier
*
* @since 2021-02-24
*/
public class NumberCopier {
private static Map, ConvertHandler> invokeMap = new HashMap<>(1);
static {
invokeMap.put(Test02.class, Test02::new);
}
/**
* ConvertHandler
*
* @since 2021-02-24
*/
@FunctionalInterface
private interface ConvertHandler {
/**
* doConvert
*
* @param dv dv
* @return Object
*/
Object doConvert(Double dv);
}
}
```
### Source code for your Spoon processing
```Java
Launcher launcher = new Launcher();
launcher.getEnvironment().setComplianceLevel(11);
launcher.getEnvironment().setAutoImports(true);
launcher.getEnvironment().setIgnoreDuplicateDeclarations(true);
launcher.addInputResource("the file path");
CtModel model = launcher.buildModel();
List elements = model.getElements(new TypeFilter<>(CtComment.class));
for (CtComment element : elements) {
element.getPath(); // throws NullPointerException
}
```
### Actual output
```Java
java.util.concurrent.CompletionException: java.lang.NullPointerException
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1739)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1728)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
Caused by: java.lang.NullPointerException
at spoon.support.visitor.SignaturePrinter.writeNameAndParameters(SignaturePrinter.java:51)
at spoon.support.visitor.SignaturePrinter.visitCtExecutableReference(SignaturePrinter.java:45)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.accept(CtExecutableReferenceImpl.java:77)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.visitCtExecutableReferenceExpression(CtScanner.java:659)
at spoon.support.reflect.code.CtExecutableReferenceExpressionImpl.accept(CtExecutableReferenceExpressionImpl.java:24)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:149)
at spoon.reflect.visitor.CtScanner.visitCtInvocation(CtScanner.java:528)
at spoon.support.reflect.code.CtInvocationImpl.accept(CtInvocationImpl.java:46)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:149)
at spoon.reflect.visitor.CtScanner.visitCtBlock(CtScanner.java:321)
at spoon.support.reflect.code.CtBlockImpl.accept(CtBlockImpl.java:58)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.visitCtAnonymousExecutable(CtScanner.java:248)
at spoon.support.reflect.declaration.CtAnonymousExecutableImpl.accept(CtAnonymousExecutableImpl.java:37)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.support.reflect.declaration.CtExecutableImpl.getSignature(CtExecutableImpl.java:182)
at spoon.reflect.path.CtElementPathBuilder.getSignature(CtElementPathBuilder.java:177)
at spoon.reflect.path.CtElementPathBuilder.getArg(CtElementPathBuilder.java:166)
at spoon.reflect.path.CtElementPathBuilder.fromElement(CtElementPathBuilder.java:93)
at spoon.reflect.path.CtElementPathBuilder.fromElement(CtElementPathBuilder.java:44)
at spoon.support.reflect.declaration.CtElementImpl.getPath(CtElementImpl.java:576)
```
### Expected output
_No response_
### Spoon Version
10.4.3-beta-2
### JVM Version
11
### What operating system are you using?
windows
Contributor guide
Assessment
This issue has not been assessed yet.