From d0266a1f1e948851692759144d9d4770d0807a63 Mon Sep 17 00:00:00 2001 From: Dragan Date: Tue, 28 Jan 2014 19:25:55 +0100 Subject: [PATCH] CodeCoverage: Fix previous commit missing lines add only first (duplicate) occurence do not break on finalSP, else will miss Contract.Ensures lines --- .../Project/Src/CodeCoverageMethodElement.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageMethodElement.cs b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageMethodElement.cs index b696d1a88e..0c646b400f 100644 --- a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageMethodElement.cs +++ b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageMethodElement.cs @@ -136,6 +136,7 @@ namespace ICSharpCode.CodeCoverage CodeCoverageSequencePoint finalSP = getBodyFinalSP(sps); if (Object.ReferenceEquals(null, finalSP)) { return sps; } + bool foundFinalSP = false; List selected = new List(); foreach (var point in sps) { if ( @@ -147,13 +148,15 @@ namespace ICSharpCode.CodeCoverage // After ccrewrite ContractClass/ContractClassFor // duplicate method end-sequence-point (}) is added // - // Add(point) and Break on first (duplicate) finalSP + // Add (point) on first finalSP (duplicate) // Note: IL.Offset of second duplicate finalSP will // extend branch coverage outside method-end "}", - // and that can lead to wrong branch coverage report! - if (point.Line == finalSP.Line && point.Column == finalSP.Column) { - selected.Add (point); - break; + // and that can lead to wrong branch coverage report! + if (!foundFinalSP) { + if (point.Line == finalSP.Line && point.Column == finalSP.Column) { + selected.Add (point); + foundFinalSP = true; + } } }