@@ -2334,16 +2334,25 @@ static public void HandleAllClassesCompletion(ScintillaControl Sci, string tail,
2334
2334
2335
2335
if ( ASContext . Context . Features . hasDelegates && ! ASContext . Context . CurrentClass . IsVoid ( ) )
2336
2336
{
2337
+ MemberList delegates = new MemberList ( ) ;
2338
+
2337
2339
foreach ( MemberModel field in ASContext . Context . CurrentClass . Members )
2338
2340
if ( ( field . Flags & FlagType . Delegate ) > 0 )
2339
- known . Add ( field ) ;
2341
+ delegates . Add ( field ) ;
2342
+
2343
+ if ( delegates . Count > 0 )
2344
+ {
2345
+ delegates . Sort ( ) ;
2346
+ delegates . Merge ( known ) ;
2347
+ known = delegates ;
2348
+ }
2340
2349
}
2341
2350
2342
2351
if ( ASContext . Context . Features . hasGenerics && ! ASContext . Context . CurrentClass . IsVoid ( ) )
2343
2352
{
2344
2353
var typeParams = GetVisibleTypeParameters ( ) ;
2345
2354
2346
- if ( typeParams . Items . Count > 0 )
2355
+ if ( typeParams != null && typeParams . Items . Count > 0 )
2347
2356
{
2348
2357
typeParams . Add ( known ) ;
2349
2358
typeParams . Sort ( ) ;
@@ -3819,8 +3828,8 @@ static public ASResult GetExpressionType(ScintillaControl sci, int position, boo
3819
3828
3820
3829
static private MemberList GetTypeParameters ( MemberModel model )
3821
3830
{
3822
- var retVal = new MemberList ( ) ;
3823
- var template = model . Template ;
3831
+ MemberList retVal = null ;
3832
+ string template = model . Template ;
3824
3833
if ( template != null && template . StartsWith ( "<" ) )
3825
3834
{
3826
3835
var sb = new StringBuilder ( ) ;
@@ -3839,6 +3848,7 @@ static private MemberList GetTypeParameters(MemberModel model)
3839
3848
genType . Type = sb . ToString ( ) ;
3840
3849
genType . Flags = FlagType . TypeDef ;
3841
3850
inConstraint = c == ':' ;
3851
+ if ( retVal == null ) retVal = new MemberList ( ) ;
3842
3852
retVal . Add ( genType ) ;
3843
3853
sb . Length = 0 ;
3844
3854
@@ -3869,6 +3879,7 @@ static private MemberList GetTypeParameters(MemberModel model)
3869
3879
}
3870
3880
if ( sb . Length > 0 )
3871
3881
{
3882
+ if ( retVal == null ) retVal = new MemberList ( ) ;
3872
3883
if ( ! inConstraint )
3873
3884
retVal . Add ( new MemberModel { Name = sb . ToString ( ) , Type = sb . ToString ( ) , Flags = FlagType . TypeDef } ) ;
3874
3885
else
@@ -3882,7 +3893,7 @@ static private MemberList GetTypeParameters(MemberModel model)
3882
3893
static private MemberList GetVisibleElements ( )
3883
3894
{
3884
3895
MemberList known = new MemberList ( ) ;
3885
- known . Merge ( ASContext . Context . GetVisibleExternalElements ( ) ) ;
3896
+ known . Add ( ASContext . Context . GetVisibleExternalElements ( ) ) ;
3886
3897
3887
3898
if ( ASContext . Context . Features . hasGenerics && ! ASContext . Context . CurrentClass . IsVoid ( ) )
3888
3899
{
@@ -3899,7 +3910,11 @@ static private MemberList GetVisibleTypeParameters()
3899
3910
var curMember = ASContext . Context . CurrentMember ;
3900
3911
if ( curMember != null && ( curMember . Flags & FlagType . Function ) > 0 )
3901
3912
{
3902
- typeParams . Add ( GetTypeParameters ( curMember ) ) ;
3913
+ var memberTypeParams = GetTypeParameters ( curMember ) ;
3914
+ if ( typeParams != null && memberTypeParams != null )
3915
+ typeParams . Add ( memberTypeParams ) ;
3916
+ else if ( typeParams == null )
3917
+ typeParams = memberTypeParams ;
3903
3918
}
3904
3919
3905
3920
return typeParams ;
0 commit comments