From 546d1df48f643b86e91389a733767775a3ffe698 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 10 Jul 2023 19:13:01 -0400 Subject: [PATCH] Prevent mixin.perf suboptions from defaulting to on if an explicit option is not added --- .../embeddedt/modernfix/core/ModernFixMixinPlugin.java | 6 +++++- .../modernfix/core/config/ModernFixEarlyConfig.java | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java b/common/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java index c27995f1..ca2fb8ca 100644 --- a/common/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java +++ b/common/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java @@ -97,7 +97,11 @@ public class ModernFixMixinPlugin implements IMixinConfigPlugin { Option option = instance.config.getEffectiveOptionForMixin(mixin); if (option == null) { - this.logger.error("No rules matched mixin '{}', treating as foreign and disabling!", mixin); + String msg = "No rules matched mixin '{}', treating as foreign and disabling!"; + if(ModernFixPlatformHooks.isDevEnv()) + this.logger.error(msg, mixin); + else + this.logger.debug(msg, mixin); return false; } diff --git a/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java b/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java index fc965085..8c0f40db 100644 --- a/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java +++ b/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java @@ -128,10 +128,17 @@ public class ModernFixEarlyConfig { List mixinOptionNames = dotSplitter.splitToList(mixinClassName); StringBuilder optionBuilder = new StringBuilder(mixinClassName.length()); optionBuilder.append("mixin"); + // mixin.core, mixin.safety can be top-level, everything else must have a subcategory + boolean allowTopLevel; + if(mixinOptionNames.size() > 0) + allowTopLevel = mixinOptionNames.get(0).equals("core") || mixinOptionNames.get(0).equals("safety"); + else + allowTopLevel = false; for(int i = 0; i < mixinOptionNames.size() - 1; i++) { optionBuilder.append('.'); optionBuilder.append(mixinOptionNames.get(i)); - mixinOptions.add(optionBuilder.toString()); + if(i > 0 || allowTopLevel) + mixinOptions.add(optionBuilder.toString()); } } } catch(IOException e) {