public GetResolverStateBefore ( AstNode node ) : |
||
node | AstNode | |
Résultat |
void FindIssuesInNode(AstNode anchor, AstNode node, string accessorName = "setter") { if (node == null || node.IsNull) { return; } var localResolveResult = context.GetResolverStateBefore(node) .LookupSimpleNameOrTypeName("value", new List <IType>(), NameLookupMode.Expression) as LocalResolveResult; if (localResolveResult == null) { return; } var variable = localResolveResult.Variable; bool referenceFound = false; var findRef = new FindReferences(); var syntaxTree = (SyntaxTree)context.RootNode; findRef.FindLocalReferences(variable, context.UnresolvedFile, syntaxTree, context.Compilation, (n, entity) => { if (n.StartLocation >= node.StartLocation && n.EndLocation <= node.EndLocation) { referenceFound = true; } }, CancellationToken.None); if (!referenceFound) { AddIssue(anchor, context.TranslateString("The " + accessorName + " does not use the 'value' parameter")); } }
public static bool TypeChangeResolvesCorrectly(BaseRefactoringContext ctx, ParameterDeclaration parameter, AstNode rootNode, IType type) { var resolver = ctx.GetResolverStateBefore(rootNode); resolver = resolver.AddVariable(new DefaultParameter(type, parameter.Name)); var astResolver = new CSharpAstResolver(resolver, rootNode, ctx.UnresolvedFile); var validator = new TypeChangeValidationNavigator(); astResolver.ApplyNavigator(validator, ctx.CancellationToken); return(!validator.FoundErrors); }