Fix IModuleInitializer.Initialize not being called

wip/source-generators
copygirl 1 year ago
parent 40cb0045df
commit fe54cc3637
  1. 3
      src/gaemstone.SourceGen/ModuleGenerator.cs
  2. 2
      src/gaemstone.SourceGen/Structure/MethodEntityInfo.cs
  3. 7
      src/gaemstone.SourceGen/Structure/ModuleEntityInfo.cs

@ -132,6 +132,9 @@ public class ModuleGenerator
// TODO: Can BuiltIn modules have systems and such? // TODO: Can BuiltIn modules have systems and such?
if (module.HasInitializer)
sb.AppendLine("\t\tInitialize(module);");
sb.AppendLine("\t}"); sb.AppendLine("\t}");
sb.AppendLine("}"); sb.AppendLine("}");

@ -25,6 +25,8 @@ public class MethodEntityInfo : BaseEntityInfo
public bool HasPhaseSet { get; private set; } public bool HasPhaseSet { get; private set; }
public override bool HasEntitiesToAdd => base.HasEntitiesToAdd || !HasPhaseSet; public override bool HasEntitiesToAdd => base.HasEntitiesToAdd || !HasPhaseSet;
// TODO: Support [Source].
public MethodEntityInfo(ISymbol symbol) public MethodEntityInfo(ISymbol symbol)
: base(symbol) : base(symbol)
{ {

@ -11,15 +11,18 @@ public class ModuleEntityInfo : TypeEntityInfo
{ {
public bool IsPartial { get; } public bool IsPartial { get; }
public bool IsBuiltIn { get; } public bool IsBuiltIn { get; }
public bool HasInitializer { get; }
// TODO: Support [Source].
public ModuleEntityInfo(ISymbol symbol) public ModuleEntityInfo(ISymbol symbol)
: base(symbol) : base(symbol)
{ {
var classDecl = (TypeDeclarationSyntax)Symbol.DeclaringSyntaxReferences.First().GetSyntax(); var classDecl = (TypeDeclarationSyntax)Symbol.DeclaringSyntaxReferences.First().GetSyntax();
IsPartial = classDecl.Modifiers.Any(t => t.IsKind(SyntaxKind.PartialKeyword)); IsPartial = classDecl.Modifiers.Any(t => t.IsKind(SyntaxKind.PartialKeyword));
IsBuiltIn = Has("BuiltIn"); IsBuiltIn = Has("BuiltIn");
HasInitializer = Symbol.AllInterfaces.Any(i =>
i.GetFullName(FullNameStyle.NoGeneric) == "gaemstone.ECS.IModuleInitializer");
} }
protected override IEnumerable<Diagnostic> ValidateSelf() protected override IEnumerable<Diagnostic> ValidateSelf()

Loading…
Cancel
Save