Fix IModuleInitializer.Initialize not being called

wip/source-generators
copygirl 12 months 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?
if (module.HasInitializer)
sb.AppendLine("\t\tInitialize(module);");
sb.AppendLine("\t}");
sb.AppendLine("}");

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

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

Loading…
Cancel
Save