private static bool Notifies(AccessorDeclarationSyntax setter, SemanticModel semanticModel, CancellationToken cancellationToken) { using (var pooled = InvocationWalker.Create(setter)) { foreach (var invocation in pooled.Item.Invocations) { if (PropertyChanged.IsNotifyPropertyChanged(invocation, semanticModel, cancellationToken)) { return(true); } } } return(false); }
private static bool IsFirstNotifyPropertyChange(InvocationExpressionSyntax invocation, SemanticModel semanticModel, CancellationToken cancellationToken) { if (!PropertyChanged.IsNotifyPropertyChanged(invocation, semanticModel, cancellationToken)) { return(false); } var statement = invocation.FirstAncestorOrSelf <ExpressionStatementSyntax>(); var block = statement?.FirstAncestorOrSelf <BlockSyntax>(); if (block == null) { return(false); } var index = block.Statements.IndexOf(statement); if (index <= 0) { return(false); } return(!PropertyChanged.IsNotifyPropertyChanged(block.Statements[index - 1], semanticModel, cancellationToken)); }