While trying to compile this code, I get a stackoverflow:
@Mapper
public abstract class StackOverflowMapper {
public abstract A mapBtoA(B other);
public abstract AElement mapBElementToAElement(BElement other);
protected ImmutableList<AElement> mapImmutableList(ImmutableList<BElement> test) {
var mapped = test.stream().map(this::mapBElementToAElement).collect(Collectors.toList());
return ImmutableList.copyOf(mapped);
}
}
class AElement {
public String stuff;
}
class A {
public ImmutableList<AElement> test;
}
class BElement {
public String stuff;
}
class B {
public ImmutableList<BElement> test;
}
Error:
Internal error in the mapping processor: java.lang.StackOverflowError at
jdk.compiler/com.sun.tools.javac.code.Types.freshTypeVariables(Types.java:4417) at
jdk.compiler/com.sun.tools.javac.code.Types.capture(Types.java:4363) at
jdk.compiler/com.sun.tools.javac.code.Types.isSubtype(Types.java:1096) at
jdk.compiler/com.sun.tools.javac.code.Types.isSubtypeUncheckedInternal(Types.java:1022) at
jdk.compiler/com.sun.tools.javac.code.Types.isSubtypeUnchecked(Types.java:1008) at
jdk.compiler/com.sun.tools.javac.code.Types.isConvertible(Types.java:607) at
jdk.compiler/com.sun.tools.javac.code.Types.isAssignable(Types.java:2319) at
jdk.compiler/com.sun.tools.javac.code.Types.isAssignable(Types.java:2287) at
jdk.compiler/com.sun.tools.javac.model.JavacTypes.isAssignable(JavacTypes.java:105) at
org.mapstruct.ap.spi.DefaultBuilderProvider.isBuildMethod(DefaultBuilderProvider.java:269) at
org.mapstruct.ap.spi.DefaultBuilderProvider.findBuildMethods(DefaultBuilderProvider.java:236) at
org.mapstruct.ap.spi.DefaultBuilderProvider.findBuilderInfo(DefaultBuilderProvider.java:167) at
org.mapstruct.ap.spi.ImmutablesBuilderProvider.findBuilderInfo(ImmutablesBuilderProvider.java:49) at
org.mapstruct.ap.spi.DefaultBuilderProvider.findBuilderInfo(DefaultBuilderProvider.java:96) at
org.mapstruct.ap.internal.model.common.TypeFactory.findBuilder(TypeFactory.java:530) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:189) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:180) at
org.mapstruct.ap.internal.model.common.BuilderType.create(BuilderType.java:98) at
org.mapstruct.ap.internal.model.common.Type.<init>(Type.java:160) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:280) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:180) at
org.mapstruct.ap.internal.model.common.BuilderType.create(BuilderType.java:98) at
org.mapstruct.ap.internal.model.common.Type.<init>(Type.java:160) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:280) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:180) at
org.mapstruct.ap.internal.model.common.BuilderType.create(BuilderType.java:98) at
org.mapstruct.ap.internal.model.common.Type.<init>(Type.java:160) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:280) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:180) at
org.mapstruct.ap.internal.model.common.BuilderType.create(BuilderType.java:98) at
org.mapstruct.ap.internal.model.common.Type.<init>(Type.java:160) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:280) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:180) at
org.mapstruct.ap.internal.model.common.BuilderType.create(BuilderType.java:98) at
org.mapstruct.ap.internal.model.common.Type.<init>(Type.java:160) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:280) at
org.mapstruct.ap.internal.model.common.TypeFactory.getType(TypeFactory.java:180) at
org.mapstruct.ap.internal.model.common.BuilderType.create(BuilderType.java:98) at
org.mapstruct.ap.internal.model.common.Type.<init>(Type.java:160)
...
Java version: 11.0.2, vendor: AdoptOpenJDK
I know ImmutableLists are not supported, but shouldn't this work with the mapImmutableList method?
While trying to compile this code, I get a stackoverflow:
Error:
Java version: 11.0.2, vendor: AdoptOpenJDK
I know ImmutableLists are not supported, but shouldn't this work with the
mapImmutableListmethod?