Exemplo n.º 1
0
        internal ControlFlowGraphVertex(AnalysisEngine engine, SourceRoutineSymbol routine, BoundBlock block)
        {
            this.Engine      = engine;
            this.routine     = routine;
            this.block       = block;
            this.File        = routine.ContainingFile.SyntaxTree.FilePath;
            this.Vid         = this.block.Ordinal + this.File.GetHashCode();
            this.BlockName   = this.block.DebugDisplay;
            this.Kind        = this.block.Kind.ToString();
            this.RoutineName = this.routine.Name;
            this.Statements  = this.block.Statements != null ? block.Statements.Count : 0;
            LangElement l = PhylDiagnosingVisitor.PickFirstSyntaxNode(this.block);

            if (l != null)
            {
                Tuple <int, int> pos = engine.GetLineFromTokenPosition(l.Span.Start, this.File);
                this.Line   = pos.Item1;
                this.Column = pos.Item2;
            }
        }