コード例 #1
0
ファイル: AstAnalysisWalker.cs プロジェクト: jsschultz/PTVS
        internal LocationInfo GetLoc(Node node) {
            if (node == null || node.StartIndex >= node.EndIndex) {
                return null;
            }

            var start = node.GetStart(_ast);
            var end = node.GetEnd(_ast);
            return new LocationInfo(_filePath, start.Line, start.Column, end.Line, end.Column);
        }
コード例 #2
0
ファイル: CoverageMapper.cs プロジェクト: jsschultz/PTVS
        private bool UpdateLineInfo(Node node, bool inheritCoverage = false) {
            if (node == null) {
                return false;
            }

            var start = node.GetStart(_ast);
            var end = node.GetEnd(_ast);
            bool covered;
            bool multiline = false;
            if (start.Line != end.Line) {
                multiline = true;
                // multi line statement, just figure out if we hit anywhere in it,
                // and if so update our coverage state.  We'll continue to descend
                // and mark the individual items that make up the multiple lines.
                bool isCovered = false;
                for (int i = start.Line; i <= end.Line; i++) {
                    isCovered |= IsCovered(i);
                }

                covered = isCovered;
            } else {
                // single line statement
                covered = MarkCoverage(inheritCoverage, start, end, IsCovered(start.Line));
            }

            if (_blockCovered == null) {
                _blockCovered = covered;
                if (covered) {
                    ReportCovered();
                } else {
                    ReportNotCovered();
                }
            }

            return multiline;
        }