@@ -326,6 +326,19 @@ private string[] QuoteSplit(string text)
326326}" ) ;
327327 }
328328
329+ [ Fact ]
330+ public async Task TestSingleCharacterStringLiteralBecomesChar_WhenExplictCastAsync ( )
331+ {
332+ await TestConversionVisualBasicToCSharpAsync (
333+ @"Class ExplicitCastClass
334+ Dim wordArray As String() = 1.ToString().Split(CChar("",""))
335+ End Class" , @"
336+ internal partial class ExplicitCastClass
337+ {
338+ private string[] wordArray = 1.ToString().Split(',');
339+ }" ) ;
340+ }
341+
329342 [ Fact ]
330343 public async Task TestCastHasBracketsWhenElementAccessAsync ( )
331344 {
@@ -342,6 +355,52 @@ private int Casting(object sender)
342355 {
343356 return Conversions.ToInteger(((object[])sender)[0]);
344357 }
358+ }" ) ;
359+ }
360+
361+ [ Fact ]
362+ public async Task MultipleNestedCastsAsync ( )
363+ {
364+ await TestConversionVisualBasicToCSharpAsync (
365+ @"Public Class MultipleCasts
366+ Public Shared Function ToGenericParameter(Of T)(Value As Object) As T
367+ If Value Is Nothing Then
368+ Return Nothing
369+ End If
370+ Dim reflectedType As Global.System.Type = GetType(T)
371+ If Global.System.Type.Equals(reflectedType, GetType(Global.System.Int16)) Then
372+ Return DirectCast(CObj(CShort(Value)), T)
373+ ElseIf Global.System.Type.Equals(reflectedType, GetType(Global.System.UInt64)) Then
374+ Return DirectCast(CObj(CULng(Value)), T)
375+ Else
376+ Return DirectCast(Value, T)
377+ End If
378+ End Function
379+ End Class" , @"using Microsoft.VisualBasic.CompilerServices;
380+
381+ public partial class MultipleCasts
382+ {
383+ public static T ToGenericParameter<T>(object Value)
384+ {
385+ if (Value is null)
386+ {
387+ return default;
388+ }
389+
390+ var reflectedType = typeof(T);
391+ if (Equals(reflectedType, typeof(short)))
392+ {
393+ return (T)(object)Conversions.ToShort(Value);
394+ }
395+ else if (Equals(reflectedType, typeof(ulong)))
396+ {
397+ return (T)(object)Conversions.ToULong(Value);
398+ }
399+ else
400+ {
401+ return (T)Value;
402+ }
403+ }
345404}" ) ;
346405 }
347406 }
0 commit comments