diff --git a/core/src/main/java/com/google/common/truth/IgnoreJRERequirement.java b/core/src/main/java/com/google/common/truth/IgnoreJRERequirement.java
new file mode 100644
index 000000000..a2d484272
--- /dev/null
+++ b/core/src/main/java/com/google/common/truth/IgnoreJRERequirement.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2019 Google, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.common.truth;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Target;
+
+/**
+ * Disables Animal Sniffer's checking of compatibility with older versions of Java/Android.
+ */
+@Target({METHOD, CONSTRUCTOR, TYPE})
+@interface IgnoreJRERequirement {}
diff --git a/extensions/java8/src/main/java/com/google/common/truth/IntStreamSubject.java b/core/src/main/java/com/google/common/truth/IntStreamSubject.java
similarity index 96%
rename from extensions/java8/src/main/java/com/google/common/truth/IntStreamSubject.java
rename to core/src/main/java/com/google/common/truth/IntStreamSubject.java
index 45699bce8..95270b61f 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/IntStreamSubject.java
+++ b/core/src/main/java/com/google/common/truth/IntStreamSubject.java
@@ -40,12 +40,16 @@
*
* @author Kurt Alfred Kluever
*/
-@SuppressWarnings("deprecation") // TODO(b/134064106): design an alternative to no-arg check()
+@SuppressWarnings({
+ "deprecation", // TODO(b/134064106): design an alternative to no-arg check()
+ "Java7ApiChecker", // used only from APIs with Java 8 in their signatures
+})
+@IgnoreJRERequirement
public final class IntStreamSubject extends Subject {
private final List> actualList;
- private IntStreamSubject(FailureMetadata failureMetadata, @Nullable IntStream stream) {
+ IntStreamSubject(FailureMetadata failureMetadata, @Nullable IntStream stream) {
super(failureMetadata, stream);
this.actualList =
(stream == null) ? null : stream.boxed().collect(toCollection(ArrayList::new));
diff --git a/extensions/java8/src/main/java/com/google/common/truth/LongStreamSubject.java b/core/src/main/java/com/google/common/truth/LongStreamSubject.java
similarity index 96%
rename from extensions/java8/src/main/java/com/google/common/truth/LongStreamSubject.java
rename to core/src/main/java/com/google/common/truth/LongStreamSubject.java
index 0a5c22557..70213a5cd 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/LongStreamSubject.java
+++ b/core/src/main/java/com/google/common/truth/LongStreamSubject.java
@@ -40,12 +40,16 @@
*
* @author Kurt Alfred Kluever
*/
-@SuppressWarnings("deprecation") // TODO(b/134064106): design an alternative to no-arg check()
+@SuppressWarnings({
+ "deprecation", // TODO(b/134064106): design an alternative to no-arg check()
+ "Java7ApiChecker", // used only from APIs with Java 8 in their signatures
+})
+@IgnoreJRERequirement
public final class LongStreamSubject extends Subject {
private final List> actualList;
- private LongStreamSubject(FailureMetadata failureMetadata, @Nullable LongStream stream) {
+ LongStreamSubject(FailureMetadata failureMetadata, @Nullable LongStream stream) {
super(failureMetadata, stream);
this.actualList =
(stream == null) ? null : stream.boxed().collect(toCollection(ArrayList::new));
diff --git a/extensions/java8/src/main/java/com/google/common/truth/OptionalDoubleSubject.java b/core/src/main/java/com/google/common/truth/OptionalDoubleSubject.java
similarity index 96%
rename from extensions/java8/src/main/java/com/google/common/truth/OptionalDoubleSubject.java
rename to core/src/main/java/com/google/common/truth/OptionalDoubleSubject.java
index 4a9aa5f88..7265fcac8 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/OptionalDoubleSubject.java
+++ b/core/src/main/java/com/google/common/truth/OptionalDoubleSubject.java
@@ -26,6 +26,8 @@
*
* @author Ben Douglass
*/
+@SuppressWarnings("Java7ApiChecker") // used only from APIs with Java 8 in their signatures
+@IgnoreJRERequirement
public final class OptionalDoubleSubject extends Subject {
private final OptionalDouble actual;
diff --git a/extensions/java8/src/main/java/com/google/common/truth/OptionalIntSubject.java b/core/src/main/java/com/google/common/truth/OptionalIntSubject.java
similarity index 95%
rename from extensions/java8/src/main/java/com/google/common/truth/OptionalIntSubject.java
rename to core/src/main/java/com/google/common/truth/OptionalIntSubject.java
index 957594f72..cafdd5aff 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/OptionalIntSubject.java
+++ b/core/src/main/java/com/google/common/truth/OptionalIntSubject.java
@@ -26,6 +26,8 @@
*
* @author Ben Douglass
*/
+@SuppressWarnings("Java7ApiChecker") // used only from APIs with Java 8 in their signatures
+@IgnoreJRERequirement
public final class OptionalIntSubject extends Subject {
private final OptionalInt actual;
diff --git a/extensions/java8/src/main/java/com/google/common/truth/OptionalLongSubject.java b/core/src/main/java/com/google/common/truth/OptionalLongSubject.java
similarity index 95%
rename from extensions/java8/src/main/java/com/google/common/truth/OptionalLongSubject.java
rename to core/src/main/java/com/google/common/truth/OptionalLongSubject.java
index 9b57b9a4a..ab770a323 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/OptionalLongSubject.java
+++ b/core/src/main/java/com/google/common/truth/OptionalLongSubject.java
@@ -26,6 +26,8 @@
*
* @author Ben Douglass
*/
+@SuppressWarnings("Java7ApiChecker") // used only from APIs with Java 8 in their signatures
+@IgnoreJRERequirement
public final class OptionalLongSubject extends Subject {
private final OptionalLong actual;
diff --git a/extensions/java8/src/main/java/com/google/common/truth/OptionalSubject.java b/core/src/main/java/com/google/common/truth/OptionalSubject.java
similarity index 96%
rename from extensions/java8/src/main/java/com/google/common/truth/OptionalSubject.java
rename to core/src/main/java/com/google/common/truth/OptionalSubject.java
index 65ca4dae9..8fa39adff 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/OptionalSubject.java
+++ b/core/src/main/java/com/google/common/truth/OptionalSubject.java
@@ -26,6 +26,8 @@
*
* @author Christian Gruber
*/
+@SuppressWarnings("Java7ApiChecker") // used only from APIs with Java 8 in their signatures
+@IgnoreJRERequirement
public final class OptionalSubject extends Subject {
private final @Nullable Optional> actual;
diff --git a/extensions/java8/src/main/java/com/google/common/truth/PathSubject.java b/core/src/main/java/com/google/common/truth/PathSubject.java
similarity index 92%
rename from extensions/java8/src/main/java/com/google/common/truth/PathSubject.java
rename to core/src/main/java/com/google/common/truth/PathSubject.java
index 0be8532e0..f98c60093 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/PathSubject.java
+++ b/core/src/main/java/com/google/common/truth/PathSubject.java
@@ -22,8 +22,9 @@
/** Assertions for {@link Path} instances. */
@GwtIncompatible
@J2ObjCIncompatible
+@J2ktIncompatible
public final class PathSubject extends Subject {
- private PathSubject(FailureMetadata failureMetadata, Path actual) {
+ PathSubject(FailureMetadata failureMetadata, Path actual) {
super(failureMetadata, actual);
}
diff --git a/core/src/main/java/com/google/common/truth/StandardSubjectBuilder.java b/core/src/main/java/com/google/common/truth/StandardSubjectBuilder.java
index f41fb486f..0d90808b7 100644
--- a/core/src/main/java/com/google/common/truth/StandardSubjectBuilder.java
+++ b/core/src/main/java/com/google/common/truth/StandardSubjectBuilder.java
@@ -18,7 +18,6 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.annotations.GwtIncompatible;
-import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multiset;
@@ -149,7 +148,7 @@ public final PrimitiveDoubleArraySubject that(double @Nullable [] actual) {
return new PrimitiveDoubleArraySubject(metadata(), actual, "array");
}
- public final GuavaOptionalSubject that(@Nullable Optional> actual) {
+ public final GuavaOptionalSubject that(com.google.common.base.@Nullable Optional> actual) {
return new GuavaOptionalSubject(metadata(), actual, "optional");
}
diff --git a/extensions/java8/src/main/java/com/google/common/truth/StreamSubject.java b/core/src/main/java/com/google/common/truth/StreamSubject.java
similarity index 97%
rename from extensions/java8/src/main/java/com/google/common/truth/StreamSubject.java
rename to core/src/main/java/com/google/common/truth/StreamSubject.java
index f3e90cd6e..45ed8f5f2 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/StreamSubject.java
+++ b/core/src/main/java/com/google/common/truth/StreamSubject.java
@@ -40,12 +40,16 @@
*
* @author Kurt Alfred Kluever
*/
-@SuppressWarnings("deprecation") // TODO(b/134064106): design an alternative to no-arg check()
+@SuppressWarnings({
+ "deprecation", // TODO(b/134064106): design an alternative to no-arg check()
+ "Java7ApiChecker", // used only from APIs with Java 8 in their signatures
+})
+@IgnoreJRERequirement
public final class StreamSubject extends Subject {
private final List> actualList;
- private StreamSubject(FailureMetadata failureMetadata, @Nullable Stream> stream) {
+ StreamSubject(FailureMetadata failureMetadata, @Nullable Stream> stream) {
super(failureMetadata, stream);
this.actualList = (stream == null) ? null : stream.collect(toCollection(ArrayList::new));
}
diff --git a/core/src/main/java/com/google/common/truth/Truth.java b/core/src/main/java/com/google/common/truth/Truth.java
index 1afbccaa1..6cf4ca7e8 100644
--- a/core/src/main/java/com/google/common/truth/Truth.java
+++ b/core/src/main/java/com/google/common/truth/Truth.java
@@ -18,7 +18,6 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.annotations.GwtIncompatible;
-import com.google.common.base.Optional;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multiset;
import com.google.common.collect.Table;
@@ -229,7 +228,8 @@ public static PrimitiveDoubleArraySubject assertThat(double @Nullable [] actual)
return assert_().that(actual);
}
- public static GuavaOptionalSubject assertThat(@Nullable Optional> actual) {
+ public static GuavaOptionalSubject assertThat(
+ com.google.common.base.@Nullable Optional> actual) {
return assert_().that(actual);
}
diff --git a/extensions/java8/src/main/java/com/google/common/truth/Truth8.java b/core/src/main/java/com/google/common/truth/Truth8.java
similarity index 95%
rename from extensions/java8/src/main/java/com/google/common/truth/Truth8.java
rename to core/src/main/java/com/google/common/truth/Truth8.java
index c156c54b8..c34a97513 100644
--- a/extensions/java8/src/main/java/com/google/common/truth/Truth8.java
+++ b/core/src/main/java/com/google/common/truth/Truth8.java
@@ -43,6 +43,8 @@
* How do I specify a custom message/failure
* behavior/{@code Subject} type? in the Truth FAQ.
*/
+// The methods here are no more dangerous that wherever the user got the (e.g.) Stream.
+@SuppressWarnings("Java7ApiChecker")
public final class Truth8 {
@SuppressWarnings("AssertAboutOptionals") // suggests infinite recursion
public static OptionalSubject assertThat(@Nullable Optional> target) {
@@ -79,6 +81,7 @@ public static LongStreamSubject assertThat(@Nullable LongStream target) {
// to support Java environments without java.nio.file such as Android and J2CL.
@GwtIncompatible
@J2ObjCIncompatible
+ @J2ktIncompatible
public static PathSubject assertThat(@Nullable Path target) {
return assertAbout(PathSubject.paths()).that(target);
}
diff --git a/core/src/test/java/com/google/common/truth/gwt/Inventory.java b/core/src/test/java/com/google/common/truth/gwt/Inventory.java
index 63e2fbcc1..96ce5e1eb 100644
--- a/core/src/test/java/com/google/common/truth/gwt/Inventory.java
+++ b/core/src/test/java/com/google/common/truth/gwt/Inventory.java
@@ -23,13 +23,19 @@
import com.google.common.truth.FailureStrategy;
import com.google.common.truth.FloatSubject;
import com.google.common.truth.GuavaOptionalSubject;
+import com.google.common.truth.IntStreamSubject;
import com.google.common.truth.IntegerSubject;
import com.google.common.truth.IterableSubject;
+import com.google.common.truth.LongStreamSubject;
import com.google.common.truth.LongSubject;
import com.google.common.truth.MapSubject;
import com.google.common.truth.MultimapSubject;
import com.google.common.truth.MultisetSubject;
import com.google.common.truth.ObjectArraySubject;
+import com.google.common.truth.OptionalDoubleSubject;
+import com.google.common.truth.OptionalIntSubject;
+import com.google.common.truth.OptionalLongSubject;
+import com.google.common.truth.OptionalSubject;
import com.google.common.truth.Ordered;
import com.google.common.truth.PrimitiveBooleanArraySubject;
import com.google.common.truth.PrimitiveByteArraySubject;
@@ -39,11 +45,13 @@
import com.google.common.truth.PrimitiveIntArraySubject;
import com.google.common.truth.PrimitiveLongArraySubject;
import com.google.common.truth.PrimitiveShortArraySubject;
+import com.google.common.truth.StreamSubject;
import com.google.common.truth.StringSubject;
import com.google.common.truth.Subject;
import com.google.common.truth.TableSubject;
import com.google.common.truth.ThrowableSubject;
import com.google.common.truth.Truth;
+import com.google.common.truth.Truth8;
import com.google.common.truth.TruthJUnit;
/**
@@ -59,12 +67,18 @@ public class Inventory {
FloatSubject floatSubject;
GuavaOptionalSubject guavaOptionalSubject;
IntegerSubject integerSubject;
+ IntStreamSubject intStreamSubject;
IterableSubject iterableSubject;
LongSubject longSubject;
+ LongStreamSubject longStreamSubject;
MapSubject mapSubject;
MultimapSubject multimapSubject;
MultisetSubject multisetSubject;
ObjectArraySubject> objectArraySubject;
+ OptionalSubject optionalSubject;
+ OptionalDoubleSubject optionalDoubleSubject;
+ OptionalIntSubject optionalIntSubject;
+ OptionalLongSubject optionalLongSubject;
Ordered ordered;
PrimitiveBooleanArraySubject primitiveBooleanArraySubject;
PrimitiveByteArraySubject primitiveByteArraySubject;
@@ -74,11 +88,13 @@ public class Inventory {
PrimitiveIntArraySubject primitiveIntArraySubject;
PrimitiveLongArraySubject primitiveLongArraySubject;
PrimitiveShortArraySubject primitiveShortArraySubject;
+ StreamSubject streamSubject;
StringSubject stringSubject;
Subject.Factory, ?> subjectFactory;
Subject subject;
TableSubject tableSubject;
ThrowableSubject throwableSubject;
Truth truth;
+ Truth8 truth8;
TruthJUnit truthJUnit;
}
diff --git a/core/src/test/java/com/google/common/truth/gwt/TruthTest.gwt.xml b/core/src/test/java/com/google/common/truth/gwt/TruthTest.gwt.xml
index ee9caccb9..a0362fbd8 100644
--- a/core/src/test/java/com/google/common/truth/gwt/TruthTest.gwt.xml
+++ b/core/src/test/java/com/google/common/truth/gwt/TruthTest.gwt.xml
@@ -3,6 +3,5 @@
-
diff --git a/extensions/java8/src/main/java/com/google/common/truth/Truth8.gwt.xml b/extensions/java8/src/main/java/com/google/common/truth/Truth8.gwt.xml
deleted file mode 100644
index f9aa5adff..000000000
--- a/extensions/java8/src/main/java/com/google/common/truth/Truth8.gwt.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pom.xml b/pom.xml
index 0962f1d43..d66034df0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -263,6 +263,7 @@
animal-sniffer-maven-plugin
1.23
+ com.google.common.truth.IgnoreJRERequirement
com.toasttab.android
gummy-bears-api-19