private async Task <Solution> FixEFModelAsync(Project project, Compilation compilation, IEnumerable <IClassAssumption> classAssumptions, IEnumerable <IPropertyAssumption> propertyAssumptions, ObjectTheoremResult objectTheoremResult, CancellationToken cancellationToken) { Trace.WriteLine("FixEFModelAsync"); try { var newSolution = project.Solution; foreach (var syntaxTree in compilation.SyntaxTrees) { cancellationToken.ThrowIfCancellationRequested(); var syntaxRoot = await syntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false); var semanticModel = compilation.GetSemanticModel(syntaxTree); var rewriter = new AttributeAssumptionsRewriter(semanticModel, classAssumptions, propertyAssumptions, objectTheoremResult, cancellationToken); var newSyntaxRoot = rewriter.Visit(syntaxRoot); cancellationToken.ThrowIfCancellationRequested(); var documentId = newSolution.GetDocumentId(syntaxTree); newSolution = newSolution.WithDocumentSyntaxRoot(documentId, newSyntaxRoot); } return(newSolution); } catch (Exception ex) { Trace.WriteLine(ex.ToString()); throw; } }
private async Task<Solution> FixEFModelAsync(Project project, Compilation compilation, IEnumerable<IClassAssumption> classAssumptions, IEnumerable<IPropertyAssumption> propertyAssumptions, ObjectTheoremResult objectTheoremResult, CancellationToken cancellationToken) { Trace.WriteLine("FixEFModelAsync"); try { var newSolution = project.Solution; foreach (var syntaxTree in compilation.SyntaxTrees) { cancellationToken.ThrowIfCancellationRequested(); var syntaxRoot = await syntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false); var semanticModel = compilation.GetSemanticModel(syntaxTree); var rewriter = new AttributeAssumptionsRewriter(semanticModel, classAssumptions, propertyAssumptions, objectTheoremResult, cancellationToken); var newSyntaxRoot = rewriter.Visit(syntaxRoot); cancellationToken.ThrowIfCancellationRequested(); var documentId = newSolution.GetDocumentId(syntaxTree); newSolution = newSolution.WithDocumentSyntaxRoot(documentId, newSyntaxRoot); } return newSolution; } catch (Exception ex) { Trace.WriteLine(ex.ToString()); throw; } }