Propagate MixinErrors as MixinApplicatorExceptions with context #118
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.
Many internal Mixin errors, particularly
InjectionError
s, are raised as the result of invalid mixins (e.g. failed injection check as the mixin was compiled for a different Minecraft version) or mixin conflicts that are not issues in Mixin itself. TheseMixinError
s don't currently get handled byIMixinErrorHandler
handlers, and when propagated to more generic error handling code don't have much machine-readable context.Wrapping these errors in
MixinApplicatorException
s allows them to be handled by existingIMixinErrorHandler
implementations in the apply error phase, and attaching this context allows Mixin callers to reason about the cause of mixin errors and present them in a more user-friendly way.MixinApplicatorStandard
seems like the most appropriate place to insert context of the current mixin and activity stack similarly to the existingException
handling, and doesn't requireMixinError
to change how it is constructed and used by internal Mixin code.(upstream equivalent PR: SpongePowered#640)