Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corefx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Toub <stoub@microsoft.com>2017-04-24 14:17:02 +0300
committerStephen Toub <stoub@microsoft.com>2017-04-24 14:17:02 +0300
commit2f9b3f40c651bc47c9cf3f588caacf50bc16c109 (patch)
tree4ca1914dc25d7e669605d158e17fc7abe4f3c0ee /src/Microsoft.VisualBasic
parent98e39c8ac06fbb110cba8163247b279a65b47bc0 (diff)
Ensure several VB types are annotated as Serializable
To match desktop. Our tools for ensuring we'd ported all necessary serialization to corefx only looked at .cs files, hence these were missed.
Diffstat (limited to 'src/Microsoft.VisualBasic')
-rw-r--r--src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/ExceptionUtils.vb6
-rw-r--r--src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/IncompleteInitialization.vb9
-rw-r--r--src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/StaticLocalInitFlag.vb1
-rw-r--r--src/Microsoft.VisualBasic/tests/Microsoft.VisualBasic.Tests.csproj4
-rw-r--r--src/Microsoft.VisualBasic/tests/SerializationTests.cs23
5 files changed, 43 insertions, 0 deletions
diff --git a/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/ExceptionUtils.vb b/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/ExceptionUtils.vb
index bc1f3923cf..54c4ec9a81 100644
--- a/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/ExceptionUtils.vb
+++ b/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/ExceptionUtils.vb
@@ -58,6 +58,7 @@ Namespace Microsoft.VisualBasic.CompilerServices
End Class
+ <Serializable()>
Public NotInheritable Class InternalErrorException
Inherits System.Exception
@@ -73,6 +74,11 @@ Namespace Microsoft.VisualBasic.CompilerServices
Public Sub New()
MyBase.New(GetResourceString(SR.InternalError))
End Sub
+
+ Private Sub New(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext)
+ MyBase.New(info, context)
+ End Sub
+
End Class
End Namespace
diff --git a/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/IncompleteInitialization.vb b/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/IncompleteInitialization.vb
index d540f489ea..416358d810 100644
--- a/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/IncompleteInitialization.vb
+++ b/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/IncompleteInitialization.vb
@@ -5,10 +5,19 @@
Namespace Global.Microsoft.VisualBasic.CompilerServices
<Global.System.Diagnostics.DebuggerNonUserCode()>
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)>
+ <Global.System.Serializable>
Public Class IncompleteInitialization
Inherits Global.System.Exception
Public Sub New()
MyBase.New()
End Sub
+
+#Disable Warning CA2229 ' Rule wants ctor to be protected, but private to match desktop
+ <Global.System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>
+ Private Sub New(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext)
+ MyBase.New(info, context)
+ End Sub
+#Enable Warning CA2229 ' Implement Serialization constructor
+
End Class
End Namespace
diff --git a/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/StaticLocalInitFlag.vb b/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/StaticLocalInitFlag.vb
index 4805db4aa2..0749b44928 100644
--- a/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/StaticLocalInitFlag.vb
+++ b/src/Microsoft.VisualBasic/src/Microsoft/VisualBasic/CompilerServices/StaticLocalInitFlag.vb
@@ -5,6 +5,7 @@
Namespace Global.Microsoft.VisualBasic.CompilerServices
<Global.System.Diagnostics.DebuggerNonUserCode()>
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)>
+ <Global.System.Serializable()>
Public Class StaticLocalInitFlag
Public State As Short
End Class
diff --git a/src/Microsoft.VisualBasic/tests/Microsoft.VisualBasic.Tests.csproj b/src/Microsoft.VisualBasic/tests/Microsoft.VisualBasic.Tests.csproj
index 6345809277..46af850b44 100644
--- a/src/Microsoft.VisualBasic/tests/Microsoft.VisualBasic.Tests.csproj
+++ b/src/Microsoft.VisualBasic/tests/Microsoft.VisualBasic.Tests.csproj
@@ -7,7 +7,11 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Release|AnyCPU'" />
<ItemGroup>
+ <Compile Include="SerializationTests.cs" />
<Compile Include="StringsTests.cs" />
+ <Compile Include="$(CommonTestPath)\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs">
+ <Link>Common\System\Runtime\Serialization\Formatters\BinaryFormatterHelpers.cs</Link>
+ </Compile>
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project> \ No newline at end of file
diff --git a/src/Microsoft.VisualBasic/tests/SerializationTests.cs b/src/Microsoft.VisualBasic/tests/SerializationTests.cs
new file mode 100644
index 0000000000..c7b974ee78
--- /dev/null
+++ b/src/Microsoft.VisualBasic/tests/SerializationTests.cs
@@ -0,0 +1,23 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Runtime.Serialization.Formatters.Tests;
+using Microsoft.VisualBasic.CompilerServices;
+using Xunit;
+
+namespace Microsoft.VisualBasic.Tests
+{
+ public class SerializationTests
+ {
+ [Fact]
+ public void SerializeDeserialize_Roundtrip_Success()
+ {
+ BinaryFormatterHelpers.AssertRoundtrips(new IncompleteInitialization());
+
+ var initFlag = new StaticLocalInitFlag { State = 42 };
+ var clonedInitFlag = BinaryFormatterHelpers.Clone(initFlag);
+ Assert.Equal(42, clonedInitFlag.State);
+ }
+ }
+}