Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,56 @@ abstract class InvalidTest implements Map<String, String> {
.doTest();
}

@Test
public void collectionToArrayOverrideUsesJSpecifyModel() {
makeHelper()
.addSourceLines(
"Test.java",
"""
import java.util.AbstractList;
import java.util.List;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
@NullMarked
class Test {
static @Nullable Object[] modeledCall(List<String> list) {
return list.toArray();
}
static Object[] invalidCall(List<String> list) {
// BUG: Diagnostic contains: incompatible types: @Nullable Object [] cannot be converted to Object []
return list.toArray();
}
static class DelegatingList extends AbstractList<String> {
private final List<String> delegate;
DelegatingList(List<String> delegate) {
this.delegate = delegate;
}
@Override public String get(int index) {
return delegate.get(index);
}
@Override public int size() {
return delegate.size();
}
@Override public @Nullable Object[] toArray() {
return delegate.toArray();
}
}
static class NonNullElementsList extends AbstractList<String> {
@Override public String get(int index) {
throw new IndexOutOfBoundsException();
}
@Override public int size() {
return 0;
}
@Override public Object[] toArray() {
return new Object[0];
}
}
}
""")
.doTest();
}

@Test
public void modeledMethodTypeVariableBoundUsedForOverride() {
makeHelper()
Expand Down
Loading