From ef33495a5b7885d524af6a6af0163140635d95f8 Mon Sep 17 00:00:00 2001 From: Tevin Jeffrey Date: Thu, 4 Jan 2018 09:57:12 -0500 Subject: [PATCH] Nullability example --- example/build.gradle | 36 ++++++++++++++++++++ example/src/main/java/me/tevjef/Example.java | 9 +++++ example/src/main/java/me/tevjef/Example.kt | 8 +++++ gradle/wrapper/gradle-wrapper.properties | 3 +- settings.gradle | 2 ++ src/main/java/io/reactivex/Observable.java | 2 +- 6 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 example/build.gradle create mode 100644 example/src/main/java/me/tevjef/Example.java create mode 100644 example/src/main/java/me/tevjef/Example.kt diff --git a/example/build.gradle b/example/build.gradle new file mode 100644 index 0000000000..a56f037616 --- /dev/null +++ b/example/build.gradle @@ -0,0 +1,36 @@ +buildscript { + ext.kotlin_version = '1.2.10' + + repositories { + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + + +apply plugin: 'java' +apply plugin: 'kotlin' + +sourceCompatibility = 1.8 + +repositories { + mavenCentral() +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + testCompile group: 'junit', name: 'junit', version: '4.12' +} + +compileKotlin { + kotlinOptions.jvmTarget = "1.6" +} +compileTestKotlin { + kotlinOptions.jvmTarget = "1.6" +} + +dependencies { + compile rootProject +} \ No newline at end of file diff --git a/example/src/main/java/me/tevjef/Example.java b/example/src/main/java/me/tevjef/Example.java new file mode 100644 index 0000000000..852bbe2498 --- /dev/null +++ b/example/src/main/java/me/tevjef/Example.java @@ -0,0 +1,9 @@ +package me.tevjef; + +import io.reactivex.Observable; + +public class Example { + public static void main(String[] args) { + Observable.fromIterable(null); + } +} diff --git a/example/src/main/java/me/tevjef/Example.kt b/example/src/main/java/me/tevjef/Example.kt new file mode 100644 index 0000000000..6297d59086 --- /dev/null +++ b/example/src/main/java/me/tevjef/Example.kt @@ -0,0 +1,8 @@ +package me.tevjef + +import io.reactivex.Observable + +fun main(args: Array) { + // Compile time failure when fromIterable is annotated with io.reactivex.annotations.NonNull + Observable.fromIterable(null) +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 74bb77845e..c467908234 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Thu Jan 04 09:42:32 EST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-all.zip diff --git a/settings.gradle b/settings.gradle index c5620daef9..9103b56c93 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,3 @@ rootProject.name='rxjava' +include 'example' + diff --git a/src/main/java/io/reactivex/Observable.java b/src/main/java/io/reactivex/Observable.java index ae5942bcd1..bd2c8721d4 100644 --- a/src/main/java/io/reactivex/Observable.java +++ b/src/main/java/io/reactivex/Observable.java @@ -1890,7 +1890,7 @@ public static Observable fromFuture(Future future, Scheduler */ @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) - public static Observable fromIterable(Iterable source) { + public static Observable fromIterable(@NonNull Iterable source) { ObjectHelper.requireNonNull(source, "source is null"); return RxJavaPlugins.onAssembly(new ObservableFromIterable(source)); }