diff --git a/third-party/java9-annotations/module-info.java b/third-party/java9-annotations/module-info.java new file mode 100644 index 00000000000..77450ed8425 --- /dev/null +++ b/third-party/java9-annotations/module-info.java @@ -0,0 +1,4 @@ +module java9_annotations { + exports org.jspecify.nullness; + // add packages needed to export +} \ No newline at end of file diff --git a/third-party/java9-annotations/org/jspecify/nullness/NullMarked.java b/third-party/java9-annotations/org/jspecify/nullness/NullMarked.java new file mode 100644 index 00000000000..fe066b04392 --- /dev/null +++ b/third-party/java9-annotations/org/jspecify/nullness/NullMarked.java @@ -0,0 +1,38 @@ +/* + * Copyright 2018-2020 The JSpecify Authors. + * + * 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 org.jspecify.nullness; + +import static java.lang.annotation.ElementType.MODULE; +import static java.lang.annotation.ElementType.PACKAGE; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +/** + * WARNING: This is not the final class name or package name for this annotation. In + * addition, we are still discussing questions about semantics, particularly around type-variable + * usages. After that, changes and documentation will follow. + * + *
These annotations exist only as a skeleton for the final product. At this point, we are not + * even building prototypes that use them. + */ +@Documented +@Target({TYPE, PACKAGE, MODULE}) +@Retention(RUNTIME) +public @interface NullMarked {} \ No newline at end of file diff --git a/third-party/java9-annotations/org/jspecify/nullness/Nullable.java b/third-party/java9-annotations/org/jspecify/nullness/Nullable.java new file mode 100644 index 00000000000..462518e04cd --- /dev/null +++ b/third-party/java9-annotations/org/jspecify/nullness/Nullable.java @@ -0,0 +1,36 @@ +/* + * Copyright 2018-2020 The JSpecify Authors. + * + * 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 org.jspecify.nullness; + +import static java.lang.annotation.ElementType.TYPE_USE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +/** + * WARNING: This is not the final package name for this annotation. In addition, we are still + * discussing questions about semantics, particularly around type-variable usages. After that, + * changes and documentation will follow. + * + *
These annotations exist only as a skeleton for the final product. At this point, we are not + * even building prototypes that use them. + */ +@Documented +@Target(TYPE_USE) +@Retention(RUNTIME) +public @interface Nullable {} \ No newline at end of file diff --git a/third-party/java9-annotations/org/jspecify/nullness/NullnessUnspecified.java b/third-party/java9-annotations/org/jspecify/nullness/NullnessUnspecified.java new file mode 100644 index 00000000000..0b63f960dc5 --- /dev/null +++ b/third-party/java9-annotations/org/jspecify/nullness/NullnessUnspecified.java @@ -0,0 +1,35 @@ +/* + * Copyright 2018-2020 The JSpecify Authors. + * + * 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 org.jspecify.nullness; + +import static java.lang.annotation.ElementType.TYPE_USE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +/** + * WARNING: This is not the final class name or package name for this annotation. We are not + * even sure if an annotation like this one will make the 1.0 release. + * + *
These annotations exist only as a skeleton for the final product. At this point, we are not + * even building prototypes that use them. + */ +@Documented +@Target(TYPE_USE) +@Retention(RUNTIME) +public @interface NullnessUnspecified {} \ No newline at end of file