[Bug]: StackOverflowError occurred in CtExecutableReference.getExecutableDeclaration
- Dominant language
- Java
- Stars
- 2k
- Forks
- 392
- Avg merge
- 11h 24m
- Merged PRs (30d)
- 36
Description
### Describe the bug
StackOverflowError occurred in CtExecutableReference.getExecutableDeclaration
### Source code you are trying to analyze/transform
```Java
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Function;
class A {
public void checkDataValidDimension(String versionCode, List fcBasicDataList,
BiFunction isMatchFunc, Function msgFunc,
BiConsumer matchedFunc) {
// dimensionVo List
List dimensionVoList = getFcDimensionListByVersionCode(versionCode);
fcBasicDataList.stream().forEach(checkVo -> {
for (FcBasicDataFullVo dimensionVo : dimensionVoList) {
if (isMatchFunc.apply(checkVo, dimensionVo)) {
}
}
});
}
}
```
### 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(filteringFolder);
launcher.run();
List elements = model.getElements(
new spoon.reflect.visitor.filter.TypeFilter<>(CtExecutableReference.class));
for (CtExecutableReference element : elements) {
element.getExecutableDeclaration();
}
```
### Actual output
```Java
java.lang.StackOverflowError
at spoon.support.util.internal.ElementNameMap.get(ElementNameMap.java:169)
at spoon.support.reflect.declaration.CtPackageImpl.getPackage(CtPackageImpl.java:130)
at spoon.reflect.factory.PackageFactory.getPackageFromModule(PackageFactory.java:216)
at spoon.reflect.factory.PackageFactory.get(PackageFactory.java:176)
at spoon.reflect.factory.TypeFactory.get(TypeFactory.java:434)
at spoon.reflect.factory.TypeFactory.get(TypeFactory.java:562)
at spoon.support.reflect.reference.CtTypeReferenceImpl.getTypeDeclaration(CtTypeReferenceImpl.java:245)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
at spoon.support.reflect.declaration.CtTypeImpl.isSameParameter(CtTypeImpl.java:767)
at spoon.support.reflect.declaration.CtTypeImpl.hasSameParameters(CtTypeImpl.java:759)
at spoon.support.reflect.declaration.CtTypeImpl.getMethod(CtTypeImpl.java:733)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getCtExecutable(CtExecutableReferenceImpl.java:121)
at spoon.support.reflect.reference.CtExecutableReferenceImpl.getExecutableDeclaration(CtExecutableReferenceImpl.java:113)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getDeclaration(CtTypeParameterReferenceImpl.java:134)
at spoon.support.reflect.reference.CtTypeParameterReferenceImpl.getTypeErasure(CtTypeParameterReferenceImpl.java:174)
```
### Expected output
```Java
.
```
### Spoon Version
10.4.3-beta-10
### JVM Version
11
### What operating system are you using?
windows 11
Contributor guide
Assessment
This issue has not been assessed yet.