JSpecify: Missing compile error when reused method returns `@Nullable` to `@NonNull` constructor
@hduelme ya está trabajando en esto.
Desde el 9/8/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Expected behavior
Missing compile error when reused method returns @Nullable but constructor expects @NonNull parameter
Given:
@Mapper
@NullMarked
public interface ErroneousIssue4081Mapper {
Target map(Source source);
default Target.@Nullable Payload mapPayload(String payload) {
if ( payload.isBlank() ) {
return null;
}
return new Target.Payload( payload );
}
}
public class Source {
private final String payload;
public @NonNull String getPayload() { return this.payload; }
}
public class Target {
private final Payload payload;
public Target(@NonNull Payload payload) { this.payload = payload; }
public class Payload {
private final String value;
public Payload(@NonNull String value) { this.value = value; }
}
}
Expected: compilation fails with
error: Can't map potentially nullable source property "payload" to @NonNull constructor parameter "payload".
Actual behavior
Compilation succeeds silently:
@Generated
public class ErroneousIssue4081MapperImpl implements ErroneousIssue4081Mapper {
@Override
public Target map(Source source) {
Target.Payload payload = null;
payload = mapValue( source.getPayload() );
Target target = new Target( payload );
return target;
}
}
Steps to reproduce the problem
A @NullMarked mapper where a reused method has an explicit @Nullable return type, and the target constructor parameter is @NonNull.
Can be reproduced in this branch: https://github.com/mapstruct/mapstruct/compare/main...RaniAgus:mapstruct:issues/4081
MapStruct Version
1.7.0.Beta2
- Lenguaje dominante
- Java
- Estrellas
- 7.7k
- Forks
- 1.1k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de mapstruct/mapstruct
-
bug test
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
-
bug JSpecify
-
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
Todos los issues de mapstruct/mapstruct
Issues similares
-
bug untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
opensearch-project/ml-commons#5094 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
-
emitter:client:csharp feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
affects/8.10 affects/8.9 component/clients kind/bug likelihood/mid severity/mid
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Two open-case totals on one screen: the Programs tile says 15,858 and the nav badge says 15,868 Abiertobug frontend maui-pilot
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100