From 6e4fedfe9c555bc5a1021060d14ffc461db80e6f Mon Sep 17 00:00:00 2001 From: Tomas Matousek Date: Tue, 9 Feb 2016 16:18:43 -0800 Subject: [PATCH] Adjust the Portable PDB validation code to account for missing VB fake locals --- .../Test/Emit/PDB/PDBAsyncTests.vb | 8 ++++---- .../Test/Emit/PDB/PDBIteratorTests.vb | 8 ++++---- .../VisualBasic/Test/Emit/PDB/PDBTests.vb | 4 ++-- .../Utilities/Shared/Pdb/PdbValidation.cs | 19 +++++++++++++------ 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/Compilers/VisualBasic/Test/Emit/PDB/PDBAsyncTests.vb b/src/Compilers/VisualBasic/Test/Emit/PDB/PDBAsyncTests.vb index fff29329dde..3f59b3ea3cd 100644 --- a/src/Compilers/VisualBasic/Test/Emit/PDB/PDBAsyncTests.vb +++ b/src/Compilers/VisualBasic/Test/Emit/PDB/PDBAsyncTests.vb @@ -370,7 +370,7 @@ End Module ) End Sub - + Public Sub LocalCapturedInBetweenSuspensionPoints_Debug() Dim source = @@ -444,7 +444,7 @@ End Class ) End Sub - + Public Sub LocalCapturedInBetweenSuspensionPoints_Release() Dim source = @@ -506,7 +506,7 @@ End Class ) End Sub - + Public Sub LocalNotCapturedInBetweenSuspensionPoints_Debug() Dim source = @@ -578,7 +578,7 @@ End Class ) End Sub - + Public Sub LocalNotCapturedInBetweenSuspensionPoints_Release() Dim source = diff --git a/src/Compilers/VisualBasic/Test/Emit/PDB/PDBIteratorTests.vb b/src/Compilers/VisualBasic/Test/Emit/PDB/PDBIteratorTests.vb index 30816bb718e..0f4753e04fb 100644 --- a/src/Compilers/VisualBasic/Test/Emit/PDB/PDBIteratorTests.vb +++ b/src/Compilers/VisualBasic/Test/Emit/PDB/PDBIteratorTests.vb @@ -126,7 +126,7 @@ End Module ) End Sub - + Public Sub IteratorWithLiftedMultipleSameNameLocals() Dim source = @@ -219,7 +219,7 @@ End Module ) End Sub - + Public Sub LocalCapturedAndHoisted() Dim source = @@ -273,7 +273,7 @@ End Class ) End Sub - + Public Sub LocalCapturedAndNotHoisted() Dim source = @@ -322,7 +322,7 @@ End Class ) End Sub - + Public Sub LocalHoistedAndNotCapture() Dim source = diff --git a/src/Compilers/VisualBasic/Test/Emit/PDB/PDBTests.vb b/src/Compilers/VisualBasic/Test/Emit/PDB/PDBTests.vb index 823be4c88e7..312a0cc322e 100644 --- a/src/Compilers/VisualBasic/Test/Emit/PDB/PDBTests.vb +++ b/src/Compilers/VisualBasic/Test/Emit/PDB/PDBTests.vb @@ -4349,7 +4349,7 @@ End Class ) End Sub - + Public Sub ImportsInAsync() Dim source = "Imports System.Linq @@ -4394,7 +4394,7 @@ End Class" ) End Sub - + Public Sub ImportsInAsyncLambda() Dim source = "Imports System.Linq diff --git a/src/Test/Utilities/Shared/Pdb/PdbValidation.cs b/src/Test/Utilities/Shared/Pdb/PdbValidation.cs index 19f16f46885..e43c1be5d41 100644 --- a/src/Test/Utilities/Shared/Pdb/PdbValidation.cs +++ b/src/Test/Utilities/Shared/Pdb/PdbValidation.cs @@ -143,14 +143,20 @@ public static class PdbValidation private static void RemoveEmptyScopes(XElement pdb) { - var emptyScopes = from e in pdb.DescendantsAndSelf() - where e.Name == "scope" && !e.HasElements - select e; + XElement[] emptyScopes; - foreach (var e in emptyScopes.ToArray()) + do { - e.Remove(); + emptyScopes = (from e in pdb.DescendantsAndSelf() + where e.Name == "scope" && !e.HasElements + select e).ToArray(); + + foreach (var e in emptyScopes) + { + e.Remove(); + } } + while (emptyScopes.Any()); } private static void RemoveEmptySequencePoints(XElement pdb) @@ -190,7 +196,8 @@ private static void RemoveNonPortablePdb(XElement expectedNativePdb) e.Name == "type" || e.Name == "defunct" || e.Name == "extern" || - e.Name == "externinfo" + e.Name == "externinfo" || + e.Name == "local" && e.Attributes().Any(a => a.Name.LocalName == "name" && a.Value.StartsWith("$VB$ResumableLocal_")) select e; foreach (var e in nonPortableElements.ToArray()) -- GitLab