diff --git a/src/Workspaces/CSharp/Portable/Execution/CSharpOptionsSerializationService.cs b/src/Workspaces/CSharp/Portable/Execution/CSharpOptionsSerializationService.cs index 1ea3ed32f7dbe0c3f441a95f99ef6de04eea42d9..28a4cdd3b113669ba5b397729bb99e54cc43fef3 100644 --- a/src/Workspaces/CSharp/Portable/Execution/CSharpOptionsSerializationService.cs +++ b/src/Workspaces/CSharp/Portable/Execution/CSharpOptionsSerializationService.cs @@ -17,11 +17,6 @@ namespace Microsoft.CodeAnalysis.CSharp.Execution [ExportLanguageService(typeof(IOptionsSerializationService), LanguageNames.CSharp), Shared] internal class CSharpOptionsSerializationService : AbstractOptionsSerializationService { - public override bool CanSerialize(object value) - { - return value is CSharpCompilationOptions || value is CSharpParseOptions; - } - public override void WriteTo(CompilationOptions options, ObjectWriter writer, CancellationToken cancellationToken) { WriteCompilationOptionsTo(options, writer, cancellationToken); diff --git a/src/Workspaces/Core/Portable/Execution/AbstractOptionsSerializationService.cs b/src/Workspaces/Core/Portable/Execution/AbstractOptionsSerializationService.cs index 090ecd09f01c1bb30281372d8f87f2d9ede91b36..69e6ba4ec579f369763d158a6e4f5652dcacd991 100644 --- a/src/Workspaces/Core/Portable/Execution/AbstractOptionsSerializationService.cs +++ b/src/Workspaces/Core/Portable/Execution/AbstractOptionsSerializationService.cs @@ -14,8 +14,6 @@ namespace Microsoft.CodeAnalysis.Execution { internal abstract class AbstractOptionsSerializationService : IOptionsSerializationService { - public abstract bool CanSerialize(object value); - public abstract void WriteTo(CompilationOptions options, ObjectWriter writer, CancellationToken cancellationToken); public abstract void WriteTo(ParseOptions options, ObjectWriter writer, CancellationToken cancellationToken); public abstract void WriteTo(OptionSet options, ObjectWriter writer, CancellationToken cancellationToken); diff --git a/src/Workspaces/Core/Portable/Execution/IOptionsSerializationService.cs b/src/Workspaces/Core/Portable/Execution/IOptionsSerializationService.cs index c260ff27b3b6b0d82e7a4d57dbbbad8c5a3787e1..d21e8c5d16679122080174395d6cc2a6184040b7 100644 --- a/src/Workspaces/Core/Portable/Execution/IOptionsSerializationService.cs +++ b/src/Workspaces/Core/Portable/Execution/IOptionsSerializationService.cs @@ -12,8 +12,6 @@ namespace Microsoft.CodeAnalysis.Execution /// internal interface IOptionsSerializationService : ILanguageService { - bool CanSerialize(object value); - void WriteTo(CompilationOptions options, ObjectWriter writer, CancellationToken cancellationToken); void WriteTo(ParseOptions options, ObjectWriter writer, CancellationToken cancellationToken); void WriteTo(OptionSet options, ObjectWriter writer, CancellationToken cancellationToken); diff --git a/src/Workspaces/Core/Portable/Execution/Serializer.cs b/src/Workspaces/Core/Portable/Execution/Serializer.cs index 8ad328d2d116714907d9cc892f7ec84cb785f646..d80478bb5741657ccf8496a1155f367e70638804 100644 --- a/src/Workspaces/Core/Portable/Execution/Serializer.cs +++ b/src/Workspaces/Core/Portable/Execution/Serializer.cs @@ -190,49 +190,6 @@ public T Deserialize(string kind, ObjectReader reader, CancellationToken canc } } - private string GetLanguageName(object value) - { - // for given object, we need to figure out which language the object belong to. - // we can't blindly get language service since that will bring in language specific dlls. - foreach (var languageName in _workspaceServices.SupportedLanguages) - { - IOptionsSerializationService service; - if (_lazyLanguageSerializationService.TryGetValue(languageName, out service)) - { - if (service.CanSerialize(value)) - { - return languageName; - } - - continue; - } - - // this should be only reached once per language value actually belong to - var mefWorkspaceServices = _workspaceServices as MefWorkspaceServices; - if (mefWorkspaceServices != null) - { - MefLanguageServices languageServices; - if (!mefWorkspaceServices.TryGetLanguageServices(languageName, out languageServices)) - { - // this is a bit fragile since it depends on implementation detail but there is no other way - // to figure out which language a type belong to without loading other languages - // - // if a language's language services is not created yet, then it means that language is not loaded - continue; - } - } - - service = GetOptionsSerializationService(languageName); - if (service.CanSerialize(value)) - { - return languageName; - } - } - - // shouldn't reach here - throw ExceptionUtilities.UnexpectedValue(value); - } - private IOptionsSerializationService GetOptionsSerializationService(string languageName) { return _lazyLanguageSerializationService.GetOrAdd(languageName, n => _workspaceServices.GetLanguageServices(n).GetService()); diff --git a/src/Workspaces/Core/Portable/Execution/Serializer_Asset.cs b/src/Workspaces/Core/Portable/Execution/Serializer_Asset.cs index 9140716686257c5d7867cfbfc1e76120be7b6c86..3f5659d36cd01c9e0f9ccbbcfe53894c27d1669d 100644 --- a/src/Workspaces/Core/Portable/Execution/Serializer_Asset.cs +++ b/src/Workspaces/Core/Portable/Execution/Serializer_Asset.cs @@ -159,9 +159,9 @@ public void SerializeCompilationOptions(CompilationOptions options, ObjectWriter { cancellationToken.ThrowIfCancellationRequested(); - // TODO: once compiler team adds ability to serialize compilation options to ObjectWriter directly, we won't need this. - var language = GetLanguageName(options); + var language = options.Language; + // TODO: once compiler team adds ability to serialize compilation options to ObjectWriter directly, we won't need this. writer.WriteString(language); var service = GetOptionsSerializationService(language); @@ -182,7 +182,7 @@ public void SerializeParseOptions(ParseOptions options, ObjectWriter writer, Can { cancellationToken.ThrowIfCancellationRequested(); - var language = GetLanguageName(options); + var language = options.Language; // TODO: once compiler team adds ability to serialize parse options to ObjectWriter directly, we won't need this. writer.WriteString(language); diff --git a/src/Workspaces/VisualBasic/Portable/Execution/VisualBasicOptionsSerializationService.vb b/src/Workspaces/VisualBasic/Portable/Execution/VisualBasicOptionsSerializationService.vb index 695a8928c5f9e66c1d5c197f260f6d80b25560dc..5c46f22b1a096df68cab86ad06bed3b17e9c8f29 100644 --- a/src/Workspaces/VisualBasic/Portable/Execution/VisualBasicOptionsSerializationService.vb +++ b/src/Workspaces/VisualBasic/Portable/Execution/VisualBasicOptionsSerializationService.vb @@ -12,10 +12,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Execution Friend Class VisualBasicOptionsSerializationService Inherits AbstractOptionsSerializationService - Public Overrides Function CanSerialize(value As Object) As Boolean - Return (TypeOf value Is VisualBasicCompilationOptions) OrElse (TypeOf value Is VisualBasicParseOptions) - End Function - Public Overrides Sub WriteTo(options As CompilationOptions, writer As ObjectWriter, cancellationToken As CancellationToken) WriteCompilationOptionsTo(options, writer, cancellationToken)