@@ -112,44 +112,24 @@ private bool SearchSingleType(AggregateType typeCur, out bool pfHideByName)
112112
113113 // Loop through symbols.
114114 Symbol symCur ;
115- for ( symCur = GetSymbolLoader ( ) . LookupAggMember ( _name , typeCur . OwningAggregate , symbmask_t . MASK_ALL ) ;
115+ for ( symCur = GetSymbolLoader ( ) . LookupAggMember ( _name , typeCur . OwningAggregate , symbmask_t . MASK_Member ) ;
116116 symCur != null ;
117- symCur = SymbolLoader . LookupNextSym ( symCur , typeCur . OwningAggregate , symbmask_t . MASK_ALL ) )
117+ symCur = SymbolLoader . LookupNextSym ( symCur , typeCur . OwningAggregate , symbmask_t . MASK_Member ) )
118118 {
119+ Debug . Assert ( ! ( symCur is AggregateSymbol ) ) ;
119120 // Check for arity.
120- switch ( symCur . getKind ( ) )
121+ // For non-zero arity, only methods of the correct arity are considered.
122+ // For zero arity, don't filter out any methods since we do type argument
123+ // inferencing.
124+ // All others are only considered when arity is zero.
125+ if ( _arity > 0 && ( ! ( symCur is MethodSymbol curMeth ) || curMeth . typeVars . Count != _arity ) )
121126 {
122- case SYMKIND . SK_MethodSymbol :
123- // For non-zero arity, only methods of the correct arity are considered.
124- // For zero arity, don't filter out any methods since we do type argument
125- // inferencing.
126- if ( _arity > 0 && ( ( MethodSymbol ) symCur ) . typeVars . Count != _arity )
127- {
128- if ( ! _swtBadArity )
129- _swtBadArity . Set ( symCur , typeCur ) ;
130- continue ;
131- }
132- break ;
133-
134- case SYMKIND . SK_AggregateSymbol :
135- // For types, always filter on arity.
136- if ( ( ( AggregateSymbol ) symCur ) . GetTypeVars ( ) . Count != _arity )
137- {
138- if ( ! _swtBadArity )
139- _swtBadArity . Set ( symCur , typeCur ) ;
140- continue ;
141- }
142- break ;
127+ if ( ! _swtBadArity )
128+ {
129+ _swtBadArity . Set ( symCur , typeCur ) ;
130+ }
143131
144- default :
145- // All others are only considered when arity is zero.
146- if ( _arity > 0 )
147- {
148- if ( ! _swtBadArity )
149- _swtBadArity . Set ( symCur , typeCur ) ;
150- continue ;
151- }
152- break ;
132+ continue ;
153133 }
154134
155135 // Check for user callability.
@@ -672,23 +652,15 @@ public Exception ReportErrors()
672652
673653 if ( _swtBadArity )
674654 {
675- int cvar ;
676-
677- switch ( _swtBadArity . Sym . getKind ( ) )
655+ Debug . Assert ( _arity != 0 ) ;
656+ Debug . Assert ( ! ( _swtBadArity . Sym is AggregateSymbol ) ) ;
657+ if ( _swtBadArity . Sym is MethodSymbol badMeth )
678658 {
679- case SYMKIND . SK_MethodSymbol :
680- Debug . Assert ( _arity != 0 ) ;
681- cvar = ( ( MethodSymbol ) _swtBadArity . Sym ) . typeVars . Count ;
682- return GetErrorContext ( ) . Error ( cvar > 0 ? ErrorCode . ERR_BadArity : ErrorCode . ERR_HasNoTypeVars , _swtBadArity , new ErrArgSymKind ( _swtBadArity . Sym ) , cvar ) ;
683-
684- case SYMKIND . SK_AggregateSymbol :
685- cvar = ( ( AggregateSymbol ) _swtBadArity . Sym ) . GetTypeVars ( ) . Count ;
686- return GetErrorContext ( ) . Error ( cvar > 0 ? ErrorCode . ERR_BadArity : ErrorCode . ERR_HasNoTypeVars , _swtBadArity , new ErrArgSymKind ( _swtBadArity . Sym ) , cvar ) ;
687-
688- default :
689- Debug . Assert ( _arity != 0 ) ;
690- return GetErrorContext ( ) . Error ( ErrorCode . ERR_TypeArgsNotAllowed , _swtBadArity , new ErrArgSymKind ( _swtBadArity . Sym ) ) ;
659+ int cvar = badMeth . typeVars . Count ;
660+ return GetErrorContext ( ) . Error ( cvar > 0 ? ErrorCode . ERR_BadArity : ErrorCode . ERR_HasNoTypeVars , _swtBadArity , new ErrArgSymKind ( _swtBadArity . Sym ) , cvar ) ;
691661 }
662+
663+ return GetErrorContext ( ) . Error ( ErrorCode . ERR_TypeArgsNotAllowed , _swtBadArity , new ErrArgSymKind ( _swtBadArity . Sym ) ) ;
692664 }
693665
694666 return GetErrorContext ( ) . Error ( ErrorCode . ERR_NoSuchMember , _typeSrc , _name ) ;
0 commit comments