Skip to content

Commit

Permalink
Merge pull request #6404 from Youssef1313/void-type-comp-start
Browse files Browse the repository at this point in the history
Get void type only once at compilation start
  • Loading branch information
mavasani authored Jan 5, 2023
2 parents 2f82379 + 227d14e commit 6e15806
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ static void DrainDictionary<T>(ConcurrentDictionary<T, PooledConcurrentSet<IType
}
}

public static Collector GetInstance(Compilation compilation)
public static Collector GetInstance(INamedTypeSymbol voidType)
{
var c = _pool.Allocate();
c.Void = compilation.GetSpecialType(SpecialType.System_Void);
c.Void = voidType;
return c;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,26 +108,29 @@ public override void Initialize(AnalysisContext context)
{
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
context.EnableConcurrentExecution();

context.RegisterSymbolStartAction(context =>
context.RegisterCompilationStartAction(context =>
{
var coll = Collector.GetInstance(context.Compilation);

context.RegisterOperationAction(context => coll.HandleInvocation((IInvocationOperation)context.Operation), OperationKind.Invocation);
context.RegisterOperationAction(context => coll.HandleSimpleAssignment((ISimpleAssignmentOperation)context.Operation), OperationKind.SimpleAssignment);
context.RegisterOperationAction(context => coll.HandleCoalesceAssignment((ICoalesceAssignmentOperation)context.Operation), OperationKind.CoalesceAssignment);
context.RegisterOperationAction(context => coll.HandleDeconstructionAssignment((IDeconstructionAssignmentOperation)context.Operation), OperationKind.DeconstructionAssignment);
context.RegisterOperationAction(context => coll.HandleFieldInitializer((IFieldInitializerOperation)context.Operation), OperationKind.FieldInitializer);
context.RegisterOperationAction(context => coll.HandleVariableDeclarator((IVariableDeclaratorOperation)context.Operation), OperationKind.VariableDeclarator);
context.RegisterOperationAction(context => coll.HandleDeclarationExpression((IDeclarationExpressionOperation)context.Operation), OperationKind.DeclarationExpression);
context.RegisterOperationAction(context => coll.HandleReturn((IReturnOperation)context.Operation), OperationKind.Return);

context.RegisterSymbolEndAction(context =>
var voidType = context.Compilation.GetSpecialType(SpecialType.System_Void);
context.RegisterSymbolStartAction(context =>
{
Report(context, coll);
Collector.ReturnInstance(coll, context.CancellationToken);
});
}, SymbolKind.NamedType);
var coll = Collector.GetInstance(voidType);

context.RegisterOperationAction(context => coll.HandleInvocation((IInvocationOperation)context.Operation), OperationKind.Invocation);
context.RegisterOperationAction(context => coll.HandleSimpleAssignment((ISimpleAssignmentOperation)context.Operation), OperationKind.SimpleAssignment);
context.RegisterOperationAction(context => coll.HandleCoalesceAssignment((ICoalesceAssignmentOperation)context.Operation), OperationKind.CoalesceAssignment);
context.RegisterOperationAction(context => coll.HandleDeconstructionAssignment((IDeconstructionAssignmentOperation)context.Operation), OperationKind.DeconstructionAssignment);
context.RegisterOperationAction(context => coll.HandleFieldInitializer((IFieldInitializerOperation)context.Operation), OperationKind.FieldInitializer);
context.RegisterOperationAction(context => coll.HandleVariableDeclarator((IVariableDeclaratorOperation)context.Operation), OperationKind.VariableDeclarator);
context.RegisterOperationAction(context => coll.HandleDeclarationExpression((IDeclarationExpressionOperation)context.Operation), OperationKind.DeclarationExpression);
context.RegisterOperationAction(context => coll.HandleReturn((IReturnOperation)context.Operation), OperationKind.Return);

context.RegisterSymbolEndAction(context =>
{
Report(context, coll);
Collector.ReturnInstance(coll, context.CancellationToken);
});
}, SymbolKind.NamedType);
});
}

/// <summary>
Expand Down

0 comments on commit 6e15806

Please sign in to comment.