aboutsummaryrefslogtreecommitdiff
path: root/src/test/resources
diff options
context:
space:
mode:
authorshartte <shartte@users.noreply.github.com>2021-09-14 23:40:47 +0200
committerGitHub <noreply@github.com>2021-09-14 22:40:47 +0100
commitd48c74161e1a17fd5c8464605f9eb1e45d6e359a (patch)
tree7042da87cdafd52ead9b2ac3a6e703f4e8c9e26b /src/test/resources
parent08e548b6c62815bf4b75593cb9a499951a4f564e (diff)
downloadarchitectury-loom-d48c74161e1a17fd5c8464605f9eb1e45d6e359a.tar.gz
architectury-loom-d48c74161e1a17fd5c8464605f9eb1e45d6e359a.tar.bz2
architectury-loom-d48c74161e1a17fd5c8464605f9eb1e45d6e359a.zip
Access Widener 2.0 with support for Transitive Access Wideners (#484)
* Added global access widener support. * Adapt loom to changed API of latest AW PR. * Fix expected access widener to fix the test. Since the access widener is now streamed directly into the writer, the expanded rules (i.e. accessible field makes the owning class also accessible) are no longer found in the remapped file. * Add basic transitive accesswidener test * Extracted applying transitive access wideners into their own jar processor since they also need to be applied if there is no AW in the mod itself. * Misc assortment of fixes * Set up the processor lazily to allow for adding the intermediary MC jar, which is needed to correctly remap intermediary AWs to named. * Rework to setup the tiny remapper classpath with the mc jar Add an extension prop to disable * Add TransitiveDetectorVisitor * Minor refactoring. * Use release-version of access-widener. Co-authored-by: modmuss50 <modmuss50@gmail.com>
Diffstat (limited to 'src/test/resources')
-rw-r--r--src/test/resources/accesswidener/expected.accesswidener7
-rw-r--r--src/test/resources/projects/transitiveAccesswidener/build.gradle18
-rw-r--r--src/test/resources/projects/transitiveAccesswidener/dummyDependency/dummy.accesswidener3
-rw-r--r--src/test/resources/projects/transitiveAccesswidener/dummyDependency/fabric.mod.json7
-rw-r--r--src/test/resources/projects/transitiveAccesswidener/src/main/java/ExampleMod.java13
5 files changed, 43 insertions, 5 deletions
diff --git a/src/test/resources/accesswidener/expected.accesswidener b/src/test/resources/accesswidener/expected.accesswidener
index 53bf68a7..66f55429 100644
--- a/src/test/resources/accesswidener/expected.accesswidener
+++ b/src/test/resources/accesswidener/expected.accesswidener
@@ -1,9 +1,6 @@
accessWidener v1 intermediary
-accessible class net/minecraft/class_1928$class_5199
-accessible class net/minecraft/class_1735
-accessible class net/minecraft/class_1928$class_4314
-extendable class net/minecraft/class_1928$class_4314
-accessible class net/minecraft/class_5235$class_5238
accessible method net/minecraft/class_1928$class_4314 <init> (Ljava/util/function/Supplier;Ljava/util/function/Function;Ljava/util/function/BiConsumer;Lnet/minecraft/class_1928$class_5199;)V
extendable method net/minecraft/class_1928$class_4314 <init> (Ljava/util/function/Supplier;Ljava/util/function/Function;Ljava/util/function/BiConsumer;Lnet/minecraft/class_1928$class_5199;)V
+accessible class net/minecraft/class_1928$class_5199
+accessible class net/minecraft/class_5235$class_5238
accessible field net/minecraft/class_1735 field_7873 I
diff --git a/src/test/resources/projects/transitiveAccesswidener/build.gradle b/src/test/resources/projects/transitiveAccesswidener/build.gradle
new file mode 100644
index 00000000..52f1fc39
--- /dev/null
+++ b/src/test/resources/projects/transitiveAccesswidener/build.gradle
@@ -0,0 +1,18 @@
+// This is used by a range of tests that append to this file before running the gradle tasks.
+// Can be used for tests that require minimal custom setup
+plugins {
+ id 'fabric-loom'
+ id 'maven-publish'
+}
+
+archivesBaseName = "fabric-example-mod"
+version = "1.0.0"
+group = "com.example"
+
+dependencies {
+ minecraft "com.mojang:minecraft:1.17.1"
+ mappings "net.fabricmc:yarn:1.17.1+build.59:v2"
+ modImplementation "net.fabricmc:fabric-loader:0.11.6"
+
+ modImplementation files("dummy.jar")
+} \ No newline at end of file
diff --git a/src/test/resources/projects/transitiveAccesswidener/dummyDependency/dummy.accesswidener b/src/test/resources/projects/transitiveAccesswidener/dummyDependency/dummy.accesswidener
new file mode 100644
index 00000000..05537ad1
--- /dev/null
+++ b/src/test/resources/projects/transitiveAccesswidener/dummyDependency/dummy.accesswidener
@@ -0,0 +1,3 @@
+accessWidener v2 intermediary
+
+transitive-accessible method net/minecraft/class_1972 method_8775 (Ljava/lang/String;)Lnet/minecraft/class_5321; \ No newline at end of file
diff --git a/src/test/resources/projects/transitiveAccesswidener/dummyDependency/fabric.mod.json b/src/test/resources/projects/transitiveAccesswidener/dummyDependency/fabric.mod.json
new file mode 100644
index 00000000..b89a826e
--- /dev/null
+++ b/src/test/resources/projects/transitiveAccesswidener/dummyDependency/fabric.mod.json
@@ -0,0 +1,7 @@
+{
+ "schemaVersion": 1,
+ "id": "dummy",
+ "version": "1",
+ "name": "Dummy Mod",
+ "accessWidener" : "dummy.accesswidener"
+}
diff --git a/src/test/resources/projects/transitiveAccesswidener/src/main/java/ExampleMod.java b/src/test/resources/projects/transitiveAccesswidener/src/main/java/ExampleMod.java
new file mode 100644
index 00000000..e5442d2d
--- /dev/null
+++ b/src/test/resources/projects/transitiveAccesswidener/src/main/java/ExampleMod.java
@@ -0,0 +1,13 @@
+import net.minecraft.world.biome.BiomeKeys;
+import net.minecraft.world.biome.Biome;
+import net.minecraft.util.registry.RegistryKey;
+
+import net.fabricmc.api.ModInitializer;
+
+public class ExampleMod implements ModInitializer {
+ @Override
+ public void onInitialize() {
+ // BiomeKeys.register has been made public by a transitive AW
+ RegistryKey<Biome> biomeRegistryKey = BiomeKeys.register("dummy");
+ }
+}