port(m1): wave 7a — namespace-aware ProcessingBase collapses Story SelectionProcessing cluster (198->190)

The Story chapter-selection processing subsystem is duplicated across two
namespaces (…SelectionProcessing.Main and .BattleResult), each with its own
ProcessingBase : IProcessing + Parameter. m1_genstub keyed output by bare type
name, so only ONE ProcessingBase.g.cs was emitted (BattleResult), and
m1_baseclauses cross-qualified the Main leaves to BattleResult.ProcessingBase —
making it impossible to give IProcessing its real members (Execute(Main.Parameter)
≠ inherited Execute(BattleResult.Parameter) → CS0535).

Now both ProcessingBase variants are generated via the namespace-aware tooling
(<Type>__<Namespace>.g.cs), baseclauses resolves each leaf to its same-namespace
ProcessingBase, and both IProcessing interfaces carry NextProcessing + Execute.
8 IProcessing CS1061 cleared, no CS0535 introduced.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-06-06 00:31:29 -04:00
parent 6e9c5c059f
commit fc54dac081
5 changed files with 26 additions and 8 deletions

View File

@@ -90,7 +90,11 @@ namespace DeckBuilder
namespace Wizard.Story.ChapterSelection.SelectionProcessing.BattleResult
{
public interface IProcessing { }
public interface IProcessing
{
IProcessing NextProcessing { get; set; }
void Execute(Parameter param);
}
public class Parameter { }
}

View File

@@ -18,7 +18,11 @@ namespace Wizard.Story.ChapterSelection.SelectionProcessing.Main
{
// Parallel to the BattleResult submodule (already shimmed); some copied files
// `using` this Main module and reference these unqualified.
public interface IProcessing { }
public interface IProcessing
{
IProcessing NextProcessing { get; set; }
void Execute(Parameter param);
}
public class Parameter { }
}