From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Tue, 1 Mar 2016 00:16:08 +0100 Subject: [PATCH] Build system changes diff --git a/build.gradle.kts b/build.gradle.kts index 6271e2bad0ed937c2c46a8c8fdf186c46b0b620e..78aadebda145fe83327ceb430c4b38f9a8e45a2b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,15 +18,27 @@ dependencies { api("net.md-5:bungeecord-chat:$bungeeCordChatVersion") api("org.yaml:snakeyaml:2.2") api("org.joml:joml:1.10.5") + // Paper start + api("com.googlecode.json-simple:json-simple:1.1.1") { + isTransitive = false // includes junit + } + // Paper end compileOnly("org.apache.maven:maven-resolver-provider:3.9.6") compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") - val annotations = "org.jetbrains:annotations-java5:$annotationsVersion" + val annotations = "org.jetbrains:annotations:$annotationsVersion" // Paper - we don't want Java 5 annotations... compileOnly(annotations) testCompileOnly(annotations) + // Paper start - add checker + val checkerQual = "org.checkerframework:checker-qual:3.33.0" + compileOnlyApi(checkerQual) + testCompileOnly(checkerQual) + // Paper end + api("org.jspecify:jspecify:1.0.0") // Paper - add jspecify + testImplementation("org.apache.commons:commons-lang3:3.12.0") testImplementation("org.junit.jupiter:junit-jupiter:5.10.2") testImplementation("org.hamcrest:hamcrest:2.2") @@ -69,8 +81,13 @@ tasks.withType { options.links( "https://guava.dev/releases/32.1.2-jre/api/docs/", "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", - "https://javadoc.io/doc/org.jetbrains/annotations-java5/$annotationsVersion/", + "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", + // Paper start - add missing javadoc links + "https://javadoc.io/doc/org.joml/joml/1.10.5/index.html", + "https://www.javadoc.io/doc/com.google.code.gson/gson/2.10.1", + "https://jspecify.dev/docs/api/", + // Paper end ) options.tags("apiNote:a:API Note:") @@ -89,3 +106,14 @@ tasks.withType { tasks.test { useJUnitPlatform() } + +// Paper start +val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks.ScanJarForBadCalls::class) { + badAnnotations.add("Lio/papermc/paper/annotation/DoNotUse;") + jarToScan.set(tasks.jar.flatMap { it.archiveFile }) + classpath.from(configurations.compileClasspath) +} +tasks.check { + dependsOn(scanJar) +} +// Paper end diff --git a/src/main/java/io/papermc/paper/annotation/DoNotUse.java b/src/main/java/io/papermc/paper/annotation/DoNotUse.java new file mode 100644 index 0000000000000000000000000000000000000000..4766e49d819e75e5c2127c698b44078bf2fd6219 --- /dev/null +++ b/src/main/java/io/papermc/paper/annotation/DoNotUse.java @@ -0,0 +1,18 @@ +package io.papermc.paper.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.jetbrains.annotations.ApiStatus; + +/** + * Annotation used to mark methods or constructors which should not be called. + * + *

Separate from {@link Deprecated} to differentiate from the large amount of deprecations.

+ */ +@ApiStatus.Internal +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD, ElementType.CONSTRUCTOR}) +public @interface DoNotUse { +}