diff options
author | shartte <shartte@users.noreply.github.com> | 2021-09-14 23:40:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-14 22:40:47 +0100 |
commit | d48c74161e1a17fd5c8464605f9eb1e45d6e359a (patch) | |
tree | 7042da87cdafd52ead9b2ac3a6e703f4e8c9e26b /src/test/resources | |
parent | 08e548b6c62815bf4b75593cb9a499951a4f564e (diff) | |
download | architectury-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')
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"); + } +} |