diff --git a/ModuleManager/ModListGenerator.cs b/ModuleManager/ModListGenerator.cs index 5d017232..9291042e 100644 --- a/ModuleManager/ModListGenerator.cs +++ b/ModuleManager/ModListGenerator.cs @@ -107,7 +107,17 @@ public static IEnumerable GenerateModList(IEnumerable OnPassStarted { get; } void Warning(UrlDir.UrlConfig url, string message); + void ForWithInvalidNeedsWarning(string modName, UrlDir.UrlConfig cfgmod); void Error(UrlDir.UrlConfig url, string message); void Error(string message); void Exception(string message, Exception exception); diff --git a/ModuleManager/Progress/PatchProgress.cs b/ModuleManager/Progress/PatchProgress.cs index 61fd0d33..52b588cb 100644 --- a/ModuleManager/Progress/PatchProgress.cs +++ b/ModuleManager/Progress/PatchProgress.cs @@ -112,6 +112,13 @@ public void Warning(UrlDir.UrlConfig url, string message) RecordWarningFile(url); } + public void ForWithInvalidNeedsWarning(string tag, UrlDir.UrlConfig url) + { + Counter.warnings.Increment(); + logger.Warning($"Name {tag} shouldn't be used both on :FOR and :NEEDS, as :FOR takes precedence rendering :NEEDS innocuous. Check file {url.parent.url} node: {url.type}"); + RecordWarningFile(url); + } + public void Error(UrlDir.UrlConfig url, string message) { Counter.errors.Increment(); diff --git a/Tests/ForNeedsSameName.cfg b/Tests/ForNeedsSameName.cfg new file mode 100644 index 00000000..39c9d003 --- /dev/null +++ b/Tests/ForNeedsSameName.cfg @@ -0,0 +1,15 @@ +@PART[HeatShield0]:FOR[forneedstest]:NEEDS[forneedstest] +{ +} + +@PART[HeatShield0]:FOR[forneedstest]:NEEDS[forneedstest,Squad,Something,Else] +{ +} + +@PART[HeatShield0]:FOR[forneedstest]:NEEDS[!forneedstest&Squad|Something,!Else] +{ +} + +@PART[HeatShield0]:FOR[forneedstest]:NEEDS[Squad|!Something] +{ +}