Exemplo n.º 1
0
        // 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);
        }
Exemplo n.º 2
0
            public BuilderModellingContext(CSharpGraphBuilder owner, BuildNode node)
            {
                Contract.Requires(owner != null);
                Contract.Requires(node != null);

                this.owner = owner;
                this.node  = node;
            }
Exemplo n.º 3
0
            public BuildingContext(CSharpGraphBuilder builder, BuildGraph graph)
            {
                Contract.Requires(builder != null);
                Contract.Requires(graph != null);

                this.builder = builder;
                this.Graph   = graph;
            }