Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: CtComment getpath() throws a NullPointerException #5522

Open
honghao12 opened this issue Oct 26, 2023 · 0 comments
Open

[Bug]: CtComment getpath() throws a NullPointerException #5522

honghao12 opened this issue Oct 26, 2023 · 0 comments
Labels

Comments

@honghao12
Copy link

honghao12 commented Oct 26, 2023

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

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<Class<?>, 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

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<CtComment> elements = model.getElements(new TypeFilter<>(CtComment.class));
  for (CtComment element : elements) {
      element.getPath(); // throws NullPointerException 
  }

Actual output

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

@honghao12 honghao12 added the bug label Oct 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant