From e064be0c7b3440b31b616cec8c43946097fdad7d Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Mon, 31 Dec 2018 14:10:25 -0500 Subject: fix 'unknown mod' deprecation warnings showing wrong stack trace --- docs/release-notes.md | 1 + src/SMAPI/Framework/DeprecationManager.cs | 4 ++-- src/SMAPI/Framework/DeprecationWarning.cs | 7 ++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index dc729ca5..960ede7b 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -8,6 +8,7 @@ * For modders: * Fixed `Constants.SaveFolderName` and `CurrentSavePath` not available during early load stages when using `Specialised.LoadStageChanged` event. * Fixed `LoadStage.SaveParsed` raised before the parsed save data is available. + * Fixed 'unknown mod' deprecation warnings showing the wrong stack trace. ## 2.10.1 Released 30 December 2018 for Stardew Valley 1.3.32. diff --git a/src/SMAPI/Framework/DeprecationManager.cs b/src/SMAPI/Framework/DeprecationManager.cs index 76c2f616..8d836c8c 100644 --- a/src/SMAPI/Framework/DeprecationManager.cs +++ b/src/SMAPI/Framework/DeprecationManager.cs @@ -62,7 +62,7 @@ namespace StardewModdingAPI.Framework return; // queue warning - this.QueuedWarnings.Add(new DeprecationWarning(source, nounPhrase, version, severity)); + this.QueuedWarnings.Add(new DeprecationWarning(source, nounPhrase, version, severity, Environment.StackTrace)); } /// Print any queued messages. @@ -79,7 +79,7 @@ namespace StardewModdingAPI.Framework : $"{warning.ModName ?? "An unknown mod"} uses deprecated code ({warning.NounPhrase} is deprecated since SMAPI {warning.Version})."; #endif if (warning.ModName == null) - message += $"{Environment.NewLine}{Environment.StackTrace}"; + message += $"{Environment.NewLine}{warning.StackTrace}"; // log message switch (warning.Level) diff --git a/src/SMAPI/Framework/DeprecationWarning.cs b/src/SMAPI/Framework/DeprecationWarning.cs index 25415012..5201b06c 100644 --- a/src/SMAPI/Framework/DeprecationWarning.cs +++ b/src/SMAPI/Framework/DeprecationWarning.cs @@ -18,6 +18,9 @@ namespace StardewModdingAPI.Framework /// The deprecation level for the affected code. public DeprecationLevel Level { get; } + /// The stack trace when the deprecation warning was raised. + public string StackTrace { get; } + /********* ** Public methods @@ -27,12 +30,14 @@ namespace StardewModdingAPI.Framework /// A noun phrase describing what is deprecated. /// The SMAPI version which deprecated it. /// The deprecation level for the affected code. - public DeprecationWarning(string modName, string nounPhrase, string version, DeprecationLevel level) + /// The stack trace when the deprecation warning was raised. + public DeprecationWarning(string modName, string nounPhrase, string version, DeprecationLevel level, string stackTrace) { this.ModName = modName; this.NounPhrase = nounPhrase; this.Version = version; this.Level = level; + this.StackTrace = stackTrace; } } } -- cgit