@@ -965,25 +965,20 @@ private module Cached {
965
965
966
966
/** Holds if a method for `type` with the name `name` and the arity `arity` exists in `impl`. */
967
967
pragma [ nomagic]
968
- private predicate methodCandidate ( Type type , string name , Impl impl , Function f ) {
968
+ private predicate methodCandidate ( Type type , string name , int arity , Impl impl ) {
969
969
type = impl .( ImplTypeAbstraction ) .getSelfTy ( ) .( TypeReprMention ) .resolveType ( ) and
970
- f = impl .( ImplItemNode ) .getASuccessor ( name )
970
+ exists ( Function f |
971
+ f = impl .( ImplItemNode ) .getASuccessor ( name ) and
972
+ f .getParamList ( ) .hasSelfParam ( ) and
973
+ arity = f .getParamList ( ) .getNumberOfParams ( )
974
+ )
971
975
}
972
976
973
977
private module IsInstantiationOfInput implements IsInstantiationOfSig< ReceiverExpr > {
974
978
predicate potentialInstantiationOf ( ReceiverExpr receiver , TypeAbstraction impl , TypeMention sub ) {
975
- exists ( Function method |
976
- methodCandidate ( receiver .resolveTypeAt ( TypePath:: nil ( ) ) , receiver .getField ( ) , impl , method ) and
977
- (
978
- method .getParamList ( ) .getNumberOfParams ( ) = receiver .getNumberOfArgs ( ) and
979
- method .getParamList ( ) .hasSelfParam ( )
980
- or
981
- // TODO: Once parameter lists for functions in dependencies are
982
- // extracted correctly we should check arity for those as well.
983
- not method .fromSource ( )
984
- ) and
985
- sub = impl .( ImplTypeAbstraction ) .getSelfTy ( )
986
- )
979
+ methodCandidate ( receiver .resolveTypeAt ( TypePath:: nil ( ) ) , receiver .getField ( ) ,
980
+ receiver .getNumberOfArgs ( ) , impl ) and
981
+ sub = impl .( ImplTypeAbstraction ) .getSelfTy ( )
987
982
}
988
983
}
989
984
0 commit comments