JSpecify: Missing compile error when reused method returns `@Nullable` to `@NonNull` constructor
@hduelme đang làm issue này rồi.
Từ ngày 9/8/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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
- Ngôn ngữ chính
- Java
- Star
- 7.7k
- Fork
- 1.1k
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của mapstruct/mapstruct
-
bug test
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 68/100
-
bug JSpecify
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 72/100
Tất cả issue của mapstruct/mapstruct
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
elastic/gradle-plugins#157 ·
-
enhancement Tools
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
apache/rocketmq-dashboard#5008 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
DETECT_PARAMETER_NAMES=false silently disables @ConstructorProperties-based Creator detection too Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
FasterXML/jackson-databind#6229 ·