Skip to content
Success

Changes

Summary

  1. Add support for slices (commit: 27c562e) (details)
Commit 27c562e906984a465731d1e5b44cc343e56b9e3e by Geolykt
Add support for slices

Also contains a few minor fixes, for example the existence
of fallback descriptors. These have been nuked as the spongeian mixin impl
will always use "()V" as a fallback desc regardless of any other events.

Furthermore the Redirect annotation has been added to micromixin-annotations
as it's inclusion was for one reason or another forgotten or delayed.

Last but not least crashes in local capture due to uninitialized types
will print out more extensive debugging data. I should really start using
eclipse's built-in debugger more often though as from time to time debugging
is just super time-consuming (in this case local capture were bork as I forgot
to include the name of the slices in the TreeSet, meaing that slices weren't
accounted for, hence it was placing the injector at the start of the method
and it was not able to capture anything)

Only issue that remains is that slices are not yet validated, meaning that
it is possible to encounter rather unwanted behaviour if from and to were
to be inversed - accidentally or not.

Aside from that the MixinAtAnnotation.bake methods should be revised,
I am not completely happy with their current form and I have the strong
feeling that they either don't work as advertised once slices depend on
other slices in a more intensive fashion or that the code is plainly overkill
and that building the slices at annotations can be done much simpler or
be plainly avoided in the first case. Perhaps one could've just built
the slices lazily? Well, I guess that is for future me to figure out.

This commit is a breaking change, which is why the version was bumped to
0.3.0, however it is possible that future breaking changes won't see
a bump in the minor version number. Please do not rely on such
behaviour from my side and as such always pin your versions instead
of using version ranges when depending on micromixin.
(commit: 27c562e)
The file was modifiedmicromixin-test-j8/src/main/resources/j8mixinconfig.json (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/api/InjectionPointSelector.java (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/MixinTransformer.java (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/selectors/inject/TailInjectionPointSelector.java (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/selectors/inject/ReturnInjectionPointSelector.java (diff)
The file was modifiedmicromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/At.java (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/selectors/inject/HeadInjectionPointSelector.java (diff)
The file was modifiedmicromixin-transformer/build.gradle (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/selectors/inject/InvokeInjectionPointSelector.java (diff)
The file was addedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/annotation/MixinSliceAnnotation.java
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/api/InjectionPointTargetConstraint.java (diff)
The file was modifiedmicromixin-test-j8/src/main/java/org/stianloader/micromixin/test/j8/TestHarness.java (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/util/Objects.java (diff)
The file was addedmicromixin-test-j8/src/main/java/org/stianloader/micromixin/test/j8/MutableInt.java
The file was modifiedmicromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/Inject.java (diff)
The file was addedmicromixin-test-j8/src/main/java/org/stianloader/micromixin/test/j8/targets/SliceTest.java
The file was addedmicromixin-test-j8/src/main/java/org/stianloader/micromixin/test/j8/targets/invalid/InvalidDuplicateSliceTest.java
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/annotation/MixinRedirectAnnotation.java (diff)
The file was addedmicromixin-test-j8/src/main/java/org/stianloader/micromixin/test/j8/mixin/invalid/InvalidDuplicateSliceTestMixins.java
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/annotation/MixinInjectAnnotation.java (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/annotation/mixinsextras/MixinExtrasModifyReturnValueAnnotation.java (diff)
The file was addedmicromixin-transformer/src/main/java/org/stianloader/micromixin/api/SlicedInjectionPointSelector.java
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/annotation/MixinDescAnnotation.java (diff)
The file was addedmicromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/Slice.java
The file was addedmicromixin-test-j8/src/main/java/org/stianloader/micromixin/test/j8/mixin/SliceTestMixins.java
The file was modifiedmicromixin-annotations/src/main/java/com/llamalad7/mixinextras/injector/ModifyReturnValue.java (diff)
The file was modifiedmicromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/ModifyArg.java (diff)
The file was modifiedREADME.md (diff)
The file was addedmicromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/Redirect.java
The file was modifiedmicromixin-runtime/build.gradle (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/selectors/inject/ConstantInjectionPointSelector.java (diff)
The file was modifiedmicromixin-annotations/build.gradle (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/annotation/MixinModifyArgAnnotation.java (diff)
The file was modifiedmicromixin-transformer/src/main/java/org/stianloader/micromixin/internal/annotation/MixinAtAnnotation.java (diff)