@@ -35,17 +35,15 @@ public OverloadResult(ParameterResult[] parameters, string name, string document
3535 }
3636
3737 public string Name { get ; }
38- public virtual IReadOnlyList < string > ReturnType { get { return _returnType ; } }
38+ public virtual IReadOnlyList < string > ReturnType => _returnType ;
3939 public virtual string Documentation { get ; }
40- public virtual ParameterResult [ ] Parameters { get { return _parameters ; } }
40+ public virtual ParameterResult [ ] Parameters => _parameters ;
4141
42- internal virtual OverloadResult WithNewParameters ( ParameterResult [ ] newParameters ) {
43- return new OverloadResult ( newParameters , Name , Documentation , ReturnType ) ;
44- }
42+ internal virtual OverloadResult WithNewParameters ( ParameterResult [ ] newParameters )
43+ => new OverloadResult ( newParameters , Name , Documentation , _returnType ) ;
4544
46- internal virtual OverloadResult WithoutLeadingParameters ( int skipCount = 1 ) {
47- return new OverloadResult ( _parameters . Skip ( skipCount ) . ToArray ( ) , Name , Documentation , _returnType ) ;
48- }
45+ internal virtual OverloadResult WithoutLeadingParameters ( int skipCount = 1 )
46+ => new OverloadResult ( _parameters . Skip ( skipCount ) . ToArray ( ) , Name , Documentation , _returnType ) ;
4947
5048 private static string Longest ( string x , string y ) {
5149 if ( x == null ) {
@@ -63,7 +61,7 @@ private static IEnumerable<string> CommaSplit(string x) {
6361 }
6462
6563 var sb = new StringBuilder ( ) ;
66- int nestCount = 0 ;
64+ var nestCount = 0 ;
6765 foreach ( var c in x ) {
6866 if ( c == ',' && nestCount == 0 ) {
6967 yield return sb . ToString ( ) . Trim ( ) ;
@@ -84,11 +82,8 @@ private static IEnumerable<string> CommaSplit(string x) {
8482 }
8583 }
8684
87- private static string Merge ( string x , string y ) {
88- return string . Join ( ", " ,
89- CommaSplit ( x ) . Concat ( CommaSplit ( y ) ) . OrderBy ( n => n ) . Distinct ( )
90- ) ;
91- }
85+ private static string Merge ( string x , string y )
86+ => string . Join ( ", " , CommaSplit ( x ) . Concat ( CommaSplit ( y ) ) . OrderBy ( n => n ) . Distinct ( ) ) ;
9287
9388 public static OverloadResult Merge ( IEnumerable < OverloadResult > overloads ) {
9489 overloads = overloads . ToArray ( ) ;
@@ -98,7 +93,7 @@ public static OverloadResult Merge(IEnumerable<OverloadResult> overloads) {
9893 var parameters = overloads . Select ( o => o . Parameters ) . Aggregate ( Array . Empty < ParameterResult > ( ) , ( all , pms ) => {
9994 var res = all . Concat ( pms . Skip ( all . Length ) ) . ToArray ( ) ;
10095
101- for ( int i = 0 ; i < res . Length ; ++ i ) {
96+ for ( var i = 0 ; i < res . Length ; ++ i ) {
10297 if ( res [ i ] == null ) {
10398 res [ i ] = pms [ i ] ;
10499 } else {
@@ -117,44 +112,54 @@ public static OverloadResult Merge(IEnumerable<OverloadResult> overloads) {
117112
118113 return res ;
119114 } ) ;
120- var returnType = overloads . SelectMany ( o => o . ReturnType ) . Distinct ( ) ;
121115
116+ var returnType = overloads . SelectMany ( o => o . ReturnType ) . Distinct ( ) ;
122117 return new OverloadResult ( parameters , name , doc , returnType ) ;
123118 }
124119
125120 public override string ToString ( ) {
126- return "{0}({1})->[{2}]{3}" . FormatInvariant (
127- Name ,
128- string . Join ( "," , Parameters . Select ( p => "{0}{1}:{2}={3}" . FormatInvariant ( p . Name , p . IsOptional ? "?" : "" , p . Type ?? "" , p . DefaultValue ?? "" ) ) ) ,
129- string . Join ( "," , ReturnType . OrderBy ( k => k ) ) ,
130- string . IsNullOrEmpty ( Documentation ) ? "" : ( "'''{0}'''" . FormatInvariant ( Documentation ) )
121+ var parameters = string . Join ( ", " ,
122+ Parameters . Select ( p => "{0}{1}:{2}{3}{4}"
123+ . FormatInvariant ( p . Name ,
124+ p . IsOptional ? "?" : string . Empty ,
125+ p . Type ?? string . Empty ,
126+ p . DefaultValue != null ? "=" : string . Empty ,
127+ p . DefaultValue ?? string . Empty ) )
128+ ) . TrimEnd ( ) ;
129+
130+ var returnType = "{0}{1}{2}" . FormatInvariant (
131+ ReturnType . Count > 1 ? "[" : string . Empty ,
132+ ReturnType . Count > 0 ? string . Join ( ", " , ReturnType . OrderBy ( k => k ) ) : "None" ,
133+ ReturnType . Count > 1 ? "]" : string . Empty
131134 ) ;
135+
136+ var doc = string . IsNullOrEmpty ( Documentation ) ? "" : "'''{0}'''" . FormatInvariant ( Documentation ) ;
137+ return "{0}({1}) -> {2}{3}" . FormatInvariant ( Name , parameters , returnType , doc ) ;
132138 }
133139 }
134140
135141 class AccumulatedOverloadResult {
136142 private string _name ;
137143 private string _doc ;
138144 private string [ ] _pnames ;
139- private IAnalysisSet [ ] _ptypes ;
145+ private string [ ] _ptypes ;
140146 private string [ ] _pdefaults ;
141147 private readonly HashSet < string > _rtypes ;
142148
143149 public AccumulatedOverloadResult ( string name , string documentation , int parameters ) {
144150 _name = name ;
145151 _doc = documentation ;
146152 _pnames = new string [ parameters ] ;
147- _ptypes = new IAnalysisSet [ parameters ] ;
153+ _ptypes = new string [ parameters ] ;
148154 _pdefaults = new string [ parameters ] ;
149155 ParameterCount = parameters ;
150156 _rtypes = new HashSet < string > ( ) ;
151157 }
152158
153159 public int ParameterCount { get ; }
154160
155- private bool AreNullOrEqual ( string x , string y ) {
156- return string . IsNullOrEmpty ( x ) || string . IsNullOrEmpty ( y ) || string . Equals ( x , y , StringComparison . Ordinal ) ;
157- }
161+ private bool AreNullOrEqual ( string x , string y ) =>
162+ string . IsNullOrEmpty ( x ) || string . IsNullOrEmpty ( y ) || string . Equals ( x , y , StringComparison . Ordinal ) ;
158163
159164 private bool AreNullOrEqual ( IAnalysisSet x , IAnalysisSet y ) {
160165 return x == null || x . IsObjectOrUnknown ( ) ||
@@ -172,17 +177,7 @@ private string ChooseBest(string x, string y) {
172177 return x . Length >= y . Length ? x : y ;
173178 }
174179
175- private IAnalysisSet ChooseBest ( IAnalysisSet x , IAnalysisSet y ) {
176- if ( x == null || x . IsObjectOrUnknown ( ) ) {
177- return ( y == null || y . IsObjectOrUnknown ( ) ) ? AnalysisSet . Empty : y ;
178- }
179- if ( y == null || y . IsObjectOrUnknown ( ) ) {
180- return AnalysisSet . Empty ;
181- }
182- return x . Union ( y ) ;
183- }
184-
185- public bool TryAddOverload ( string name , string documentation , string [ ] names , IAnalysisSet [ ] types , string [ ] defaults , IEnumerable < string > returnTypes ) {
180+ public bool TryAddOverload ( string name , string documentation , string [ ] names , string [ ] types , string [ ] defaults , IEnumerable < string > returnTypes ) {
186181 if ( names . Length != _pnames . Length || types . Length != _ptypes . Length ) {
187182 return false ;
188183 }
@@ -196,7 +191,7 @@ public bool TryAddOverload(string name, string documentation, string[] names, IA
196191 return false ;
197192 }
198193
199- for ( int i = 0 ; i < _pnames . Length ; ++ i ) {
194+ for ( var i = 0 ; i < _pnames . Length ; ++ i ) {
200195 _pnames [ i ] = ChooseBest ( _pnames [ i ] , names [ i ] ) ;
201196 _ptypes [ i ] = ChooseBest ( _ptypes [ i ] , types [ i ] ) ;
202197 _pdefaults [ i ] = ChooseBest ( _pdefaults [ i ] , defaults [ i ] ) ;
@@ -218,15 +213,15 @@ public bool TryAddOverload(string name, string documentation, string[] names, IA
218213
219214 public OverloadResult ToOverloadResult ( ) {
220215 var parameters = new ParameterResult [ _pnames . Length ] ;
221- for ( int i = 0 ; i < parameters . Length ; ++ i ) {
216+ for ( var i = 0 ; i < parameters . Length ; ++ i ) {
222217 if ( string . IsNullOrEmpty ( _pnames [ i ] ) ) {
223218 return null ;
224219 }
225220
226221 parameters [ i ] = new ParameterResult (
227222 _pnames [ i ] ,
228223 null ,
229- ( _ptypes [ i ] == null || _ptypes [ i ] . IsObjectOrUnknown ( ) ) ? null : string . Join ( ", " , _ptypes [ i ] . GetShortDescriptions ( ) ) ,
224+ _ptypes [ i ] ,
230225 false ,
231226 null ,
232227 _pdefaults [ i ]
@@ -245,7 +240,6 @@ class BuiltinFunctionOverloadResult : OverloadResult {
245240 private readonly Func < string > _fallbackDoc ;
246241 private string _doc ;
247242 private IReadOnlyList < string > _returnTypes ;
248- private static readonly string _calculating = "Documentation is still being calculated, please try again soon." ;
249243
250244 // Used by ToString to ensure docs have completed
251245 private Task _docTask ;
@@ -306,7 +300,7 @@ public override string Documentation {
306300
307301 private void Calculate ( ) {
308302 // initially fill in w/ a string saying we don't yet have the documentation
309- _doc = _calculating ;
303+ _doc = Resources . CalculatingDocumentation ;
310304 _docTask = Task . Factory . StartNew ( DocCalculator ) ;
311305 }
312306
@@ -322,15 +316,15 @@ private void DocCalculator() {
322316 }
323317
324318 foreach ( var param in _overload . GetParameters ( ) ) {
325- if ( ! String . IsNullOrEmpty ( param . Documentation ) ) {
319+ if ( ! string . IsNullOrEmpty ( param . Documentation ) ) {
326320 doc . AppendLine ( ) ;
327321 doc . Append ( param . Name ) ;
328322 doc . Append ( ": " ) ;
329323 doc . Append ( param . Documentation ) ;
330324 }
331325 }
332326
333- if ( ! String . IsNullOrEmpty ( _overload . ReturnDocumentation ) ) {
327+ if ( ! string . IsNullOrEmpty ( _overload . ReturnDocumentation ) ) {
334328 doc . AppendLine ( ) ;
335329 doc . AppendLine ( ) ;
336330 doc . Append ( "Returns: " ) ;
@@ -353,7 +347,7 @@ public override ParameterResult[] Parameters {
353347
354348 var pinfo = _overload . GetParameters ( ) ;
355349 var result = new List < ParameterResult > ( pinfo . Length + _extraParameters . Length ) ;
356- int ignored = 0 ;
350+ var ignored = 0 ;
357351 ParameterResult kwDict = null ;
358352 foreach ( var param in pinfo ) {
359353 if ( ignored < _removedParams ) {
@@ -386,7 +380,7 @@ public override ParameterResult[] Parameters {
386380 }
387381
388382 internal ParameterResult GetParameterResultFromParameterInfo ( IParameterInfo param ) {
389- string name = param . Name ;
383+ var name = param . Name ;
390384
391385 string typeName ;
392386 if ( param . ParameterTypes != null ) {
@@ -396,8 +390,7 @@ internal ParameterResult GetParameterResultFromParameterInfo(IParameterInfo para
396390 }
397391 if ( param . IsParamArray ) {
398392 name = "*" + name ;
399- var advType = param . ParameterTypes as IAdvancedPythonType ;
400- if ( advType != null && advType . IsArray ) {
393+ if ( param . ParameterTypes is IAdvancedPythonType advType && advType . IsArray ) {
401394 var elemType = advType . GetElementType ( ) ;
402395 if ( elemType == _projectState . Types [ BuiltinTypeId . Object ] ) {
403396 typeName = "sequence" ;
@@ -410,8 +403,8 @@ internal ParameterResult GetParameterResultFromParameterInfo(IParameterInfo para
410403 typeName = "object" ;
411404 }
412405
413- bool isOptional = false ;
414- string defaultValue = param . DefaultValue ;
406+ var isOptional = false ;
407+ var defaultValue = param . DefaultValue ;
415408 if ( defaultValue != null && defaultValue . Length == 0 ) {
416409 isOptional = true ;
417410 defaultValue = null ;
@@ -450,7 +443,7 @@ public override bool Equals(OverloadResult x, OverloadResult y) {
450443 return false ;
451444 }
452445
453- for ( int i = 0 ; i < x . Parameters . Length ; ++ i ) {
446+ for ( var i = 0 ; i < x . Parameters . Length ; ++ i ) {
454447 if ( _weak ) {
455448 if ( ! x . Parameters [ i ] . Name . Equals ( y . Parameters [ i ] . Name ) ) {
456449 return false ;
@@ -468,7 +461,7 @@ public override bool Equals(OverloadResult x, OverloadResult y) {
468461 public override int GetHashCode ( OverloadResult obj ) {
469462 // Don't use Documentation for hash code, since it changes over time
470463 // in some implementations of IOverloadResult.
471- int hc = 552127 ^ obj . Name . GetHashCode ( ) ;
464+ var hc = 552127 ^ obj . Name . GetHashCode ( ) ;
472465 if ( obj . Parameters != null ) {
473466 foreach ( var p in obj . Parameters ) {
474467 hc ^= _weak ? p . Name . GetHashCode ( ) : p . GetHashCode ( ) ;
0 commit comments