1+ #nullable disable
2+ 
13#if DEBUG 
24// #define DEBUG_INTERNALS 
35#endif
79using  System . Collections ; 
810using  System . Collections . Generic ; 
911using  System . Diagnostics ; 
12+ using  System . Globalization ; 
1013using  System . Reflection ; 
1114using  System . Reflection . Emit ; 
1215using  System . Text ; 
@@ -22,8 +25,6 @@ namespace FastExpressionCompiler.LightExpression.ILDecoder;
2225namespace  FastExpressionCompiler . ILDecoder ; 
2326#endif
2427
25- #pragma warning disable CS1591  // Missing XML comment for publicly visible type or member 
26- 
2728[ UnconditionalSuppressMessage ( "Trimming" ,  "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code" ,  Justification  =  "Uses reflection on internal types and is not trim-compatible." ) ] 
2829public  static   class  ILReaderFactory 
2930{ 
@@ -109,7 +110,11 @@ public static StringBuilder ToILString(this IEnumerable<ILInstruction> ilInstruc
109110                    case  OperandType . InlineMethod : 
110111                        var  m  =  ( InlineMethodInstruction ) il ; 
111112                        var  sig  =  m . Method . ToString ( ) ; 
113+ #if NET 
114+                         var  paramStart  =  sig . IndexOf ( '(' ,  StringComparison . Ordinal ) ; 
115+ #else
112116                        var  paramStart  =  sig . IndexOf ( '(' ) ; 
117+ #endif
113118                        var  paramList  =  paramStart  ==  - 1  ?  "()"  :  sig . Substring ( paramStart ) ; 
114119
115120                        if  ( m . Method  is  MethodInfo  met ) 
@@ -556,8 +561,12 @@ public class MethodBaseILProvider : IILProvider
556561
557562    public  MethodBaseILProvider ( MethodBase  method ) 
558563    { 
564+ #if NET 
565+         ArgumentNullException . ThrowIfNull ( method ) ; 
566+ #else
559567        if  ( method  ==  null ) 
560568            throw  new  ArgumentNullException ( nameof ( method ) ) ; 
569+ #endif
561570
562571        var  methodType  =  method . GetType ( ) ; 
563572        if  ( methodType  !=  _runtimeMethodInfoType  &  methodType  !=  _runtimeConstructorInfoType ) 
@@ -613,21 +622,21 @@ public DynamicMethodILProvider(DynamicMethod method)
613622
614623public  static   class  ILFormatter 
615624{ 
616-     public  static   StringBuilder  Int32ToHex ( StringBuilder  sb ,  int  int32 )  =>  sb . Append ( int32 . ToString ( "X8" ) ) ; 
617-     public  static   StringBuilder  Int16ToHex ( StringBuilder  sb ,  int  int16 )  =>  sb . Append ( int16 . ToString ( "X4" ) ) ; 
618-     public  static   StringBuilder  Int8ToHex ( StringBuilder  sb ,  int  int8 )  =>  sb . Append ( int8 . ToString ( "X2" ) ) ; 
619-     public  static   StringBuilder  Argument ( StringBuilder  sb ,  int  ordinal )  =>  sb . Append ( $ "V_{ ordinal } " ) ; 
620-     public  static   StringBuilder  Label ( StringBuilder  sb ,  int  offset )  =>  sb . Append ( $ "IL_{ offset : D4} ") ; 
625+     public  static   StringBuilder  Int32ToHex ( StringBuilder  sb ,  int  int32 )  =>  sb . Append ( int32 . ToString ( "X8" ,   CultureInfo . InvariantCulture ) ) ; 
626+     public  static   StringBuilder  Int16ToHex ( StringBuilder  sb ,  int  int16 )  =>  sb . Append ( int16 . ToString ( "X4" ,   CultureInfo . InvariantCulture ) ) ; 
627+     public  static   StringBuilder  Int8ToHex ( StringBuilder  sb ,  int  int8 )  =>  sb . Append ( int8 . ToString ( "X2" ,   CultureInfo . InvariantCulture ) ) ; 
628+     public  static   StringBuilder  Argument ( StringBuilder  sb ,  int  ordinal )  =>  sb . AppendFormat ( CultureInfo . InvariantCulture ,   "V_{0}"  ,   ordinal ) ; 
629+     public  static   StringBuilder  Label ( StringBuilder  sb ,  int  offset )  =>  sb . AppendFormat ( CultureInfo . InvariantCulture ,   "IL_{0 :D4}" ,   offset ) ; 
621630
622631    public  static   StringBuilder  MultipleLabels ( StringBuilder  sb ,  int [ ]  offsets ) 
623632    { 
624633        var  length  =  offsets . Length ; 
625634        for  ( var  i  =  0 ;  i  <  length ;  i ++ ) 
626635        { 
627-             sb . AppendFormat ( i  ==  0  ?  "("  :  ", " ) ; 
636+             sb . Append ( i  ==  0  ?  "("  :  ", " ) ; 
628637            sb . Append ( Label ( sb ,  offsets [ i ] ) ) ; 
629638        } 
630-         sb . AppendFormat ( ")" ) ; 
639+         sb . Append ( ')' ) ; 
631640        return  sb ; 
632641    } 
633642
@@ -648,9 +657,9 @@ public static StringBuilder EscapedString(StringBuilder sb, string str)
648657            else  if  ( ch  ==  '\" ' ) 
649658                sb . Append ( "\\ \" " ) ; 
650659            else  if  ( ch  ==  '\\ ' ) 
651-                 sb . Append ( " \\ " ) ; 
660+                 sb . Append ( ' \\ ' ) ; 
652661            else  if  ( ch  <  0x20  ||  ch  >=  0x7f ) 
653-                 sb . AppendFormat ( "\\ u{0:x4}" ,  ( int ) ch ) ; 
662+                 sb . AppendFormat ( CultureInfo . InvariantCulture ,   "\\ u{0:x4}" ,  ( int ) ch ) ; 
654663            else 
655664                sb . Append ( ch ) ; 
656665        } 
@@ -663,10 +672,10 @@ public static StringBuilder SigByteArrayToString(StringBuilder sb, byte[] sig)
663672        var  length  =  sig . Length ; 
664673        for  ( var  i  =  0 ;  i  <  length ;  i ++ ) 
665674        { 
666-             sb . AppendFormat ( i  ==  0  ?  "SIG ["  :  " " ) ; 
675+             sb . Append ( i  ==  0  ?  "SIG ["  :  " " ) ; 
667676            sb . Append ( Int8ToHex ( sb ,  sig [ i ] ) ) ; 
668677        } 
669-         sb . AppendFormat ( "]" ) ; 
678+         sb . Append ( ']' ) ; 
670679        return  sb ; 
671680    } 
672681} 
@@ -820,5 +829,3 @@ public MemberInfo AsMember(int token)
820829
821830    public  byte [ ]  AsSignature ( int  token )  =>  this [ token ]  as  byte [ ] ; 
822831} 
823- 
824- #pragma warning restore CS1591 
0 commit comments