public IEnumerable <MethodModification> GetDifferences(Analysis.DocumentInfo oldDocumentInfo, Analysis.DocumentInfo newDocumentInfo) { var oldDeclaredMethods = GetDeclaredMethodsAsync(oldDocumentInfo); var newDeclaredMethods = GetDeclaredMethodsAsync(newDocumentInfo); //// More async version //var oldDeclaredMethodsTask = GetDeclaredMethodsAsync(this.oldDocument, cancellationTokenSource.Token); //var newDeclaredMethodsTask = GetDeclaredMethodsAsync(this.newDocument, cancellationTokenSource.Token); //await Task.WhenAll(oldDeclaredMethodsTask, newDeclaredMethodsTask); //var oldDeclaredMethods = oldDeclaredMethodsTask.Result; //var newDeclaredMethods = newDeclaredMethodsTask.Result; return(this.GetDifferences(oldDeclaredMethods, newDeclaredMethods)); }
private static IEnumerable <MethodParserInfo> GetDeclaredMethodsAsync(Analysis.DocumentInfo documentInfo) { IEnumerable <MethodParserInfo> result; if (documentInfo == null) { result = new List <MethodParserInfo>(); } else { var root = documentInfo.SyntaxTreeRoot; var semanticModel = documentInfo.SemanticModel; var visitor = new MethodFinder(semanticModel); visitor.Visit(root); result = visitor.DeclaredMethods.Values; } return(result); }