Fixes and improvements for retrieving IMixinInfo from ClassInfo#119
Open
comp500 wants to merge 2 commits intoFabricMC:mainfrom
Open
Fixes and improvements for retrieving IMixinInfo from ClassInfo#119comp500 wants to merge 2 commits intoFabricMC:mainfrom
comp500 wants to merge 2 commits intoFabricMC:mainfrom
Conversation
In MixinInfo#postApply, the MixinInfo reference was being added to the ClassInfo of the mixin itself, rather than the classes the mixin is applied to. This meant that Mixins.getMixinsForClass would only return MixinInfo on mixin classes themselves, not their target classes, and ClassInfo#getAppliedMixins() was empty for target classes. This change fixes the behaviour to resolve the ClassInfo of the target class and add the MixinInfo to that.
Allow external code to query the list of mixins that target a class, including mixins that were not applied, by exposing getMixins; this method wasn't used internally but exposing it allows external error handlers greater visibility of mixins targeting a class. ClassInfo.mixin is also exposed with getMixinInfo to allow external code to retrieve mixin metadata from a class. This supersedes the need for some other methods like isMixin and isLoadable, but these are kept for compatibility.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In
MixinInfo#postApply, theMixinInforeference is being added to theClassInfoof the mixin itself, rather than the classes the mixin is applied to. This means thatMixins.getMixinsForClassonly returnsMixinInfoon mixin classes themselves, not their target classes, andClassInfo#getAppliedMixins()is empty for target classes.The following 3 changes are made in this PR:
ClassInfoof the target class and add theMixinInfoto that.getMixinsas a public method; this method wasn't used internally but exposing it allows external error handlers greater visibility of mixins targeting a class.ClassInfo.mixinwithgetMixinInfoto allow external code to retrieve mixin metadata from a class. This supersedes the need for some other methods likeisMixinandisLoadable, but these are kept for compatibility.(upstream equivalent PR: SpongePowered#529)