Skip to content

Commit 7d7a84f

Browse files
committed
doing
1 parent e2f5db2 commit 7d7a84f

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

src/ConsoleAppFramework/ConsoleAppGenerator.cs

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
using Microsoft.CodeAnalysis.CSharp.Syntax;
44
using System.Collections.Immutable;
55
using System.Reflection;
6+
using System.Xml.Linq;
67

78
namespace ConsoleAppFramework;
89

9-
10-
1110
[Generator(LanguageNames.CSharp)]
1211
public partial class ConsoleAppGenerator : IIncrementalGenerator
1312
{
@@ -38,7 +37,7 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
3837
}
3938

4039
return false;
41-
}, (context, ct) => new RunNode((InvocationExpressionSyntax)context.Node, context.SemanticModel))
40+
}, (context, ct) => new RunContext((InvocationExpressionSyntax)context.Node, context.SemanticModel))
4241
.WithTrackingName("ConsoleApp.Run.CreateSyntaxProvider");
4342

4443
context.RegisterSourceOutput(runSource, EmitConsoleAppRun);
@@ -63,14 +62,14 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
6362
}
6463

6564
return false;
66-
}, (context, ct) => (
65+
}, (context, ct) => new BuilderContext(
6766
(InvocationExpressionSyntax)context.Node,
6867
((context.Node as InvocationExpressionSyntax)!.Expression as MemberAccessExpressionSyntax)!.Name.Identifier.Text,
6968
context.SemanticModel))
7069
.WithTrackingName("ConsoleApp.Builder.CreateSyntaxProvider")
7170
.Where(x =>
7271
{
73-
var model = x.SemanticModel.GetTypeInfo((x.Item1.Expression as MemberAccessExpressionSyntax)!.Expression);
72+
var model = x.Model.GetTypeInfo((x.Node.Expression as MemberAccessExpressionSyntax)!.Expression);
7473
return model.Type?.Name == "ConsoleAppBuilder";
7574
})
7675
.WithTrackingName("ConsoleApp.Builder.Where")
@@ -560,7 +559,7 @@ namespace ConsoleAppFramework;
560559
561560
""";
562561

563-
static void EmitConsoleAppRun(SourceProductionContext sourceProductionContext, RunNode runNode)
562+
static void EmitConsoleAppRun(SourceProductionContext sourceProductionContext, RunContext runNode)
564563
{
565564
var node = runNode.Node;
566565
var model = runNode.SemanticModel;
@@ -601,7 +600,7 @@ static void EmitConsoleAppRun(SourceProductionContext sourceProductionContext, R
601600
sourceProductionContext.AddSource("ConsoleApp.Run.Help.g.cs", help.ToString());
602601
}
603602

604-
static void EmitConsoleAppBuilder(SourceProductionContext sourceProductionContext, ImmutableArray<(InvocationExpressionSyntax Node, string Name, SemanticModel Model)> generatorSyntaxContexts)
603+
static void EmitConsoleAppBuilder(SourceProductionContext sourceProductionContext, ImmutableArray<BuilderContext> generatorSyntaxContexts)
605604
{
606605
if (generatorSyntaxContexts.Length == 0) return;
607606

@@ -747,12 +746,12 @@ static void EmitConsoleAppBuilder(SourceProductionContext sourceProductionContex
747746
sourceProductionContext.AddSource("ConsoleApp.Builder.Help.g.cs", help.ToString());
748747
}
749748

750-
class RunNode(InvocationExpressionSyntax node, SemanticModel model) : IEquatable<RunNode>
749+
readonly struct RunContext(InvocationExpressionSyntax node, SemanticModel model) : IEquatable<RunContext>
751750
{
752751
public InvocationExpressionSyntax Node => node;
753752
public SemanticModel SemanticModel => model;
754753

755-
public bool Equals(RunNode other)
754+
public bool Equals(RunContext other)
756755
{
757756
if (!SyntaxNodeTextEqualityComparer.Default.Equals(node.Expression, other.Node.Expression)) return false;
758757

@@ -843,4 +842,24 @@ public override int GetHashCode()
843842
return SyntaxNodeTextEqualityComparer.Default.GetHashCode(node);
844843
}
845844
}
845+
846+
readonly struct BuilderContext(InvocationExpressionSyntax node, string name, SemanticModel model) : IEquatable<BuilderContext>
847+
{
848+
public InvocationExpressionSyntax Node => node;
849+
public string Name => name;
850+
public SemanticModel Model => model;
851+
852+
public bool Equals(BuilderContext other)
853+
{
854+
// TODO:
855+
return node == other.Node;
856+
}
857+
858+
public override int GetHashCode()
859+
{
860+
// TODO:
861+
return base.GetHashCode();
862+
}
863+
}
864+
846865
}

0 commit comments

Comments
 (0)