diff --git a/src/main/java/org/spongepowered/asm/mixin/transformer/MixinInfo.java b/src/main/java/org/spongepowered/asm/mixin/transformer/MixinInfo.java index f18b3dbb1..4781166b8 100644 --- a/src/main/java/org/spongepowered/asm/mixin/transformer/MixinInfo.java +++ b/src/main/java/org/spongepowered/asm/mixin/transformer/MixinInfo.java @@ -1015,17 +1015,29 @@ private ClassInfo getTargetClass(DeclaredTarget target) throws InvalidMixinExcep } this.type.validateTarget(target.name, targetInfo); if (target.isPrivate && targetInfo.isPublic() && !this.isVirtual()) { - this.handleTargetError(String.format("@Mixin target %s is public in %s and should be specified in value", target.name, this)); + String errorMessage = String.format("@Mixin target %s is public in %s and should be specified in value", target.name, this); + this.handleTargetError(errorMessage, target.name.contains('$')); } return targetInfo; } private void handleTargetError(String message) { - if (this.strict) { - this.logger.error(message); - throw new InvalidMixinException(this, message); + handleTargetError(message, false); + } + + private void handleTargetError(String message, boolean nonfatal) { + if (nonfatal) { + if (this.strict) { + this.logger.warn(message); + } + this.logger.debug(message); + } else { + if (this.strict) { + this.logger.error(message); + throw new InvalidMixinException(this, message); + } + this.logger.warn(message); } - this.logger.warn(message); } /**