From 8e4c8eb25209501bbd60428cae5aa067d4e7dcad Mon Sep 17 00:00:00 2001 From: gpetrou Date: Mon, 5 Feb 2018 21:20:39 +0000 Subject: [PATCH] Replace is operator with switch pattern matching (#98) * Replace is operator with switch pattern matching and as operator * Switch back to is operator --- .../Actions/Calls/DefaultOverloadResolver.cs | 8 ++-- Src/Microsoft.Dynamic/ComInterop/ComBinder.cs | 4 +- .../Runtime/CodeDomCodeGen.cs | 41 +++++++++++-------- Src/Microsoft.Dynamic/Utils/WeakDictionary.cs | 18 ++++---- .../Runtime/StringDictionaryExpando.cs | 4 +- 5 files changed, 42 insertions(+), 33 deletions(-) diff --git a/Src/Microsoft.Dynamic/Actions/Calls/DefaultOverloadResolver.cs b/Src/Microsoft.Dynamic/Actions/Calls/DefaultOverloadResolver.cs index 2cbd8ddb..e5616de7 100644 --- a/Src/Microsoft.Dynamic/Actions/Calls/DefaultOverloadResolver.cs +++ b/Src/Microsoft.Dynamic/Actions/Calls/DefaultOverloadResolver.cs @@ -220,16 +220,16 @@ private void SplatDictionaryArgument(IList splattedNames, IList kv in _dict) { - if (kv.Value is WeakObject) { - object target = ((WeakObject)kv.Value).Target; - if (target != null && target.Equals(value)) - return kv.Key; - } else if (kv.Value is T) { - object target = (T)(kv.Value); - if (target.Equals(value)) - return kv.Key; + switch (kv.Value) { + case WeakObject weakObject: + object target = weakObject.Target; + if (target != null && target.Equals(value)) + return kv.Key; + break; + case T t: + if (t.Equals(value)) + return kv.Key; + break; } } } diff --git a/Src/Microsoft.Scripting/Runtime/StringDictionaryExpando.cs b/Src/Microsoft.Scripting/Runtime/StringDictionaryExpando.cs index 6d088874..d059a99f 100644 --- a/Src/Microsoft.Scripting/Runtime/StringDictionaryExpando.cs +++ b/Src/Microsoft.Scripting/Runtime/StringDictionaryExpando.cs @@ -158,8 +158,8 @@ public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { public override IEnumerable GetDynamicMemberNames() { foreach (object o in _keys) { - if (o is string) { - yield return (string)o; + if (o is string s) { + yield return s; } } }