Skip to content

Commit 21074fd

Browse files
committed
Add more nullability annotations
1 parent 11ef05b commit 21074fd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+379
-262
lines changed

.github/workflows/main.yml

-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ jobs:
143143
java-version: 11
144144
- name: 'Run CheckerFramework'
145145
uses: burrunan/gradle-cache-action@v1
146-
name: Test
147146
with:
148147
job-id: checkerframework-jdk11
149148
arguments: --scan --no-parallel --no-daemon -PenableCheckerframework classes

build.gradle.kts

+5
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,11 @@ allprojects {
524524
checkers.add("org.checkerframework.checker.nullness.NullnessChecker")
525525
checkers.add("org.checkerframework.checker.optional.OptionalChecker")
526526
checkers.add("org.checkerframework.checker.regex.RegexChecker")
527+
extraJavacArgs.add("-Astubs=" +
528+
fileTree("$rootDir/src/main/config/checkerframework") {
529+
include("*.astub")
530+
}.asPath
531+
)
527532
}
528533
}
529534

linq4j/src/main/java/org/apache/calcite/linq4j/BaseQueryable.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ public abstract class BaseQueryable<TSource>
3636
extends AbstractQueryable<TSource> {
3737
protected final QueryProvider provider;
3838
protected final Type elementType;
39-
protected final Expression expression;
39+
protected final @Nullable Expression expression;
4040

4141
public BaseQueryable(QueryProvider provider, Type elementType,
42-
Expression expression) {
42+
@Nullable Expression expression) {
4343
this.provider = provider;
4444
this.elementType = elementType;
4545
this.expression = expression;

linq4j/src/main/java/org/apache/calcite/linq4j/DefaultEnumerable.java

+13-13
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
import org.apache.calcite.linq4j.function.Predicate1;
3434
import org.apache.calcite.linq4j.function.Predicate2;
3535

36-
import org.checkerframework.checker.nullness.qual.NonNull;
3736
import org.checkerframework.checker.nullness.qual.Nullable;
37+
import org.checkerframework.checker.nullness.qual.PolyNull;
3838

3939
import java.math.BigDecimal;
4040
import java.util.Collection;
@@ -54,7 +54,7 @@
5454
*
5555
* @param <T> Element type
5656
*/
57-
public abstract class DefaultEnumerable<T> implements OrderedEnumerable<T> {
57+
public abstract class DefaultEnumerable<T extends @Nullable Object> implements OrderedEnumerable<T> {
5858

5959
/**
6060
* Derived classes might wish to override this method to return the "outer"
@@ -92,12 +92,12 @@ protected OrderedQueryable<T> asOrderedQueryable() {
9292
return EnumerableDefaults.asOrderedQueryable(this);
9393
}
9494

95-
public T aggregate(Function2<T, T, T> func) {
95+
public @Nullable T aggregate(Function2<@Nullable T, T, T> func) {
9696
return EnumerableDefaults.aggregate(getThis(), func);
9797
}
9898

99-
public <TAccumulate> TAccumulate aggregate(TAccumulate seed,
100-
Function2<TAccumulate, T, TAccumulate> func) {
99+
public <TAccumulate> @PolyNull TAccumulate aggregate(@PolyNull TAccumulate seed,
100+
Function2<@PolyNull TAccumulate, T, TAccumulate> func) {
101101
return EnumerableDefaults.aggregate(getThis(), seed, func);
102102
}
103103

@@ -194,11 +194,11 @@ public <TKey> OrderedEnumerable<T> createOrderedEnumerable(
194194
keySelector, comparator, descending);
195195
}
196196

197-
public Enumerable<T> defaultIfEmpty() {
197+
public Enumerable<@Nullable T> defaultIfEmpty() {
198198
return EnumerableDefaults.defaultIfEmpty(getThis());
199199
}
200200

201-
public Enumerable<T> defaultIfEmpty(T value) {
201+
public Enumerable<@PolyNull T> defaultIfEmpty(@PolyNull T value) {
202202
return EnumerableDefaults.defaultIfEmpty(getThis(), value);
203203
}
204204

@@ -214,7 +214,7 @@ public T elementAt(int index) {
214214
return EnumerableDefaults.elementAt(getThis(), index);
215215
}
216216

217-
public T elementAtOrDefault(int index) {
217+
public @Nullable T elementAtOrDefault(int index) {
218218
return EnumerableDefaults.elementAtOrDefault(getThis(), index);
219219
}
220220

@@ -248,7 +248,7 @@ public T first(Predicate1<T> predicate) {
248248
return EnumerableDefaults.firstOrDefault(getThis());
249249
}
250250

251-
public T firstOrDefault(Predicate1<T> predicate) {
251+
public @Nullable T firstOrDefault(Predicate1<T> predicate) {
252252
return EnumerableDefaults.firstOrDefault(getThis(), predicate);
253253
}
254254

@@ -431,11 +431,11 @@ public T last(Predicate1<T> predicate) {
431431
return EnumerableDefaults.last(getThis(), predicate);
432432
}
433433

434-
public T lastOrDefault() {
434+
public @Nullable T lastOrDefault() {
435435
return EnumerableDefaults.lastOrDefault(getThis());
436436
}
437437

438-
public T lastOrDefault(Predicate1<T> predicate) {
438+
public @Nullable T lastOrDefault(Predicate1<T> predicate) {
439439
return EnumerableDefaults.lastOrDefault(getThis(), predicate);
440440
}
441441

@@ -624,11 +624,11 @@ public T single(Predicate1<T> predicate) {
624624
return EnumerableDefaults.single(getThis(), predicate);
625625
}
626626

627-
public T singleOrDefault() {
627+
public @Nullable T singleOrDefault() {
628628
return EnumerableDefaults.singleOrDefault(getThis());
629629
}
630630

631-
public T singleOrDefault(Predicate1<T> predicate) {
631+
public @Nullable T singleOrDefault(Predicate1<T> predicate) {
632632
return EnumerableDefaults.singleOrDefault(getThis(), predicate);
633633
}
634634

linq4j/src/main/java/org/apache/calcite/linq4j/DefaultQueryable.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.apache.calcite.linq4j.function.Predicate2;
3434
import org.apache.calcite.linq4j.tree.FunctionExpression;
3535

36-
import org.checkerframework.checker.nullness.qual.NonNull;
36+
import org.checkerframework.checker.nullness.qual.Nullable;
3737

3838
import java.math.BigDecimal;
3939
import java.util.Comparator;
@@ -150,7 +150,7 @@ public Enumerator<T> enumerator() {
150150
return factory.ofType(getThis(), clazz);
151151
}
152152

153-
@Override public Queryable<T> defaultIfEmpty() {
153+
@Override public Queryable<@Nullable T> defaultIfEmpty() {
154154
return factory.defaultIfEmpty(getThis());
155155
}
156156

@@ -164,7 +164,7 @@ public Enumerator<T> enumerator() {
164164

165165
// End disambiguate
166166

167-
public T aggregate(FunctionExpression<Function2<T, T, T>> selector) {
167+
public @Nullable T aggregate(FunctionExpression<Function2<@Nullable T, T, T>> selector) {
168168
return factory.aggregate(getThis(), selector);
169169
}
170170

@@ -245,7 +245,7 @@ public T first(FunctionExpression<Predicate1<T>> predicate) {
245245
return factory.first(getThis(), predicate);
246246
}
247247

248-
public T firstOrDefault(FunctionExpression<Predicate1<T>> predicate) {
248+
public @Nullable T firstOrDefault(FunctionExpression<Predicate1<T>> predicate) {
249249
return factory.firstOrDefault(getThis(), predicate);
250250
}
251251

@@ -423,7 +423,7 @@ public T single(FunctionExpression<Predicate1<T>> predicate) {
423423
return factory.single(getThis(), predicate);
424424
}
425425

426-
public T singleOrDefault(FunctionExpression<Predicate1<T>> predicate) {
426+
public @Nullable T singleOrDefault(FunctionExpression<Predicate1<T>> predicate) {
427427
return factory.singleOrDefault(getThis(), predicate);
428428
}
429429

0 commit comments

Comments
 (0)