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:
34
projects/lints/build.gradle.kts
Normal file
34
projects/lints/build.gradle.kts
Normal 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",
|
||||
)
|
||||
}
|
@@ -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()"),
|
||||
)
|
||||
}
|
@@ -0,0 +1 @@
|
||||
cc.tweaked.linter.MinecraftLibraryModel
|
Reference in New Issue
Block a user