// TODO: Implement proper exception handling private async Task <GeneratedGraphs> GenerateGraphsImpl(MethodLocation location, FlowGraphId graphId) { var declarationLocation = location.Method.Locations.FirstOrDefault(); Contract.Assert(declarationLocation != null); Contract.Assert(declarationLocation.IsInSource); var root = declarationLocation.SourceTree.GetRoot(); var methodSyntax = root.FindNode(declarationLocation.SourceSpan) as BaseMethodDeclarationSyntax; Contract.Assert(methodSyntax != null); // TODO: Handle the continuation in a logic way var document = this.Solution.GetDocument(root.SyntaxTree); var semanticModel = document.GetSemanticModelAsync().Result; var builder = new CSharpGraphBuilder( this.ModelManager, document.Id, semanticModel, methodSyntax); var buildGraph = await builder.BuildAsync(); var flowGraphTranslator = new FlowGraphTranslator(buildGraph, builder.DisplayGraph, graphId); var result = flowGraphTranslator.Translate(); result.Location = location; return(result); }
public BuilderModellingContext(CSharpGraphBuilder owner, BuildNode node) { Contract.Requires(owner != null); Contract.Requires(node != null); this.owner = owner; this.node = node; }
public BuildingContext(CSharpGraphBuilder builder, BuildGraph graph) { Contract.Requires(builder != null); Contract.Requires(graph != null); this.builder = builder; this.Graph = graph; }