To repro:
git clone https://github.com/spring-projects/spring-framework.git
cd spring-framework
git checkout ed451c107fddde0cf80e70f38380accd0b840868
And then to run Specimin:
./gradlew run --args='--root "path/to/spring-framework/spring-core/src/main/java" --targetFile "org/springframework/core/io/buffer/DataBufferUtils.java" --outputDirectory "/tmp" --targetMethod "org.springframework.core.io.buffer.DataBufferUtils#skipUntilByteCount(Publisher<T>, long)"'
I get a crash:
Exception in thread "main" UnsolvedSymbolException{context='Flux.defer(() -> {
return Flux.from(publisher).map(buffer -> {
return buffer;
});
}).doOnDiscard(DataBuffer.class, DataBufferUtils::release)', name='Flux.defer(() -> {
return Flux.from(publisher).map(buffer -> {
return buffer;
});
})', cause='java.lang.NullPointerException: Cannot invoke "com.github.javaparser.resolution.types.ResolvedType.isWildcard()" because "type" is null'}
at com.github.javaparser.symbolsolver.javaparsermodel.contexts.AbstractJavaParserContext.findTypeDeclarations(AbstractJavaParserContext.java:211)
at com.github.javaparser.symbolsolver.javaparsermodel.contexts.MethodCallExprContext.solveMethod(MethodCallExprContext.java:152)
at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.solve(JavaParserFacade.java:326)
at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.visit(TypeExtractor.java:646)
at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.visit(TypeExtractor.java:64)
at com.github.javaparser.ast.expr.MethodReferenceExpr.accept(MethodReferenceExpr.java:96)
at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getTypeConcrete(JavaParserFacade.java:563)
at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.lambda$getType$5(JavaParserFacade.java:440)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
[...]
Caused by: java.lang.NullPointerException: Cannot invoke "com.github.javaparser.resolution.types.ResolvedType.isWildcard()" because "type" is null
at com.github.javaparser.resolution.logic.InferenceContext.placeInferenceVariables(InferenceContext.java:209)
at com.github.javaparser.resolution.logic.InferenceContext.addPair(InferenceContext.java:65)
at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.resolveLambda(TypeExtractor.java:622)
at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.visit(TypeExtractor.java:526)
at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.visit(TypeExtractor.java:64)
at com.github.javaparser.ast.expr.LambdaExpr.accept(LambdaExpr.java:162)
at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getTypeConcrete(JavaParserFacade.java:563)
at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getType(JavaParserFacade.java:424)
at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getType(JavaParserFacade.java:420)
To repro:
git clone https://github.com/spring-projects/spring-framework.git cd spring-framework git checkout ed451c107fddde0cf80e70f38380accd0b840868And then to run Specimin:
./gradlew run --args='--root "path/to/spring-framework/spring-core/src/main/java" --targetFile "org/springframework/core/io/buffer/DataBufferUtils.java" --outputDirectory "/tmp" --targetMethod "org.springframework.core.io.buffer.DataBufferUtils#skipUntilByteCount(Publisher<T>, long)"'I get a crash: