diff options
author | Stephen Toub <stoub@microsoft.com> | 2017-04-24 14:17:02 +0300 |
---|---|---|
committer | Stephen Toub <stoub@microsoft.com> | 2017-04-24 14:17:02 +0300 |
commit | 2f9b3f40c651bc47c9cf3f588caacf50bc16c109 (patch) | |
tree | 4ca1914dc25d7e669605d158e17fc7abe4f3c0ee /src/Microsoft.VisualBasic | |
parent | 98e39c8ac06fbb110cba8163247b279a65b47bc0 (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')
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); + } + } +} |