1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-10-22 09:27:39 +00:00

Make the main mod non-null by default

This was actually much more work than I thought it would be. Tests pass,
but I'm sure there's some regressions in here.
This commit is contained in:
Jonathan Coates
2022-11-09 18:58:31 +00:00
parent 34c7fcf750
commit b36b96e0bc
243 changed files with 1065 additions and 1429 deletions

View File

@@ -0,0 +1,34 @@
plugins {
id("cc-tweaked.kotlin-convention")
id("cc-tweaked.java-convention")
}
repositories {
maven("https://maven.minecraftforge.net") {
content {
includeGroup("net.minecraftforge")
includeGroup("cpw.mods")
}
}
}
dependencies {
implementation(libs.kotlin.stdlib)
implementation(libs.errorProne.api)
implementation(libs.nullAway)
}
tasks.test {
jvmArgs(
"--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
"--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
"--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
"--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
"--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
"--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED",
"--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
"--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
"--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
"--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED",
)
}

View File

@@ -0,0 +1,38 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package cc.tweaked.linter
import com.google.common.collect.ImmutableSet
import com.google.common.collect.ImmutableSetMultimap
import com.uber.nullaway.LibraryModels
import com.uber.nullaway.LibraryModels.MethodRef.methodRef
/**
* Extends NullAway's model of Minecraft's code with a couple of extra annotations.
*/
class MinecraftLibraryModel : LibraryModels {
override fun failIfNullParameters(): ImmutableSetMultimap<LibraryModels.MethodRef, Int> = ImmutableSetMultimap.of()
override fun explicitlyNullableParameters(): ImmutableSetMultimap<LibraryModels.MethodRef, Int> =
ImmutableSetMultimap.of()
override fun nonNullParameters(): ImmutableSetMultimap<LibraryModels.MethodRef, Int> = ImmutableSetMultimap.of()
override fun nullImpliesTrueParameters(): ImmutableSetMultimap<LibraryModels.MethodRef, Int> =
ImmutableSetMultimap.of()
override fun nullImpliesFalseParameters(): ImmutableSetMultimap<LibraryModels.MethodRef, Int> =
ImmutableSetMultimap.of()
override fun nullImpliesNullParameters(): ImmutableSetMultimap<LibraryModels.MethodRef, Int> =
ImmutableSetMultimap.of()
override fun castToNonNullMethods(): ImmutableSetMultimap<LibraryModels.MethodRef, Int> = ImmutableSetMultimap.of()
override fun nullableReturns(): ImmutableSet<LibraryModels.MethodRef> = ImmutableSet.of()
override fun nonNullReturns(): ImmutableSet<LibraryModels.MethodRef> = ImmutableSet.of(
// Reasoning about nullability of BlockEntity.getLevel() is awkward. For now, assume it's non-null.
methodRef("net.minecraft.world.level.block.entity.BlockEntity", "getLevel()"),
)
}

View File

@@ -0,0 +1 @@
cc.tweaked.linter.MinecraftLibraryModel