Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

JSpecify: Missing compile error when reused method returns `@Nullable` to `@NonNull` constructor

Abierto
#4,081 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@hduelme ya está trabajando en esto.

Desde el 9/8/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

bug JSpecify
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

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de mapstruct/mapstruct

Todos los issues de mapstruct/mapstruct

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.