@@ -233,18 +233,23 @@ private module Internal {
233233 }
234234
235235 pragma [ noinline]
236- private predicate hasOverrider ( OverridableCallable oc , Gvn:: GvnType t ) {
236+ private predicate hasOverrider ( Gvn:: GvnType t , OverridableCallable oc ) {
237237 exists ( oc .getAnOverrider ( any ( ValueOrRefType t0 | Gvn:: getGlobalValueNumber ( t0 ) = t ) ) )
238238 }
239239
240240 pragma [ noinline]
241- private predicate hasCallable ( OverridableCallable source , Gvn:: GvnType t , OverridableCallable c ) {
241+ private predicate hasCallable0 ( Gvn:: GvnType t , OverridableCallable c , OverridableCallable source ) {
242242 c .getUnboundDeclaration ( ) = source and
243243 any ( ValueOrRefType t0 | Gvn:: getGlobalValueNumber ( t0 ) = t ) .hasCallable ( c ) and
244- hasOverrider ( c , t ) and
245244 source = any ( DispatchMethodOrAccessorCall call ) .getAStaticTargetExt ( )
246245 }
247246
247+ pragma [ noinline]
248+ private predicate hasCallable ( Gvn:: GvnType t , OverridableCallable c , OverridableCallable source ) {
249+ hasCallable0 ( t , c , source ) and
250+ hasOverrider ( t , c )
251+ }
252+
248253 abstract private class DispatchMethodOrAccessorCall extends DispatchCallImpl {
249254 pragma [ noinline]
250255 OverridableCallable getAStaticTargetExt ( ) {
@@ -260,7 +265,7 @@ private module Internal {
260265
261266 pragma [ noinline]
262267 private predicate hasSubsumedQualifierType ( Gvn:: GvnType t ) {
263- hasOverrider ( _ , t ) and
268+ hasOverrider ( t , _ ) and
264269 exists ( Type t0 |
265270 t0 = getAPossibleType ( this .getQualifier ( ) , false ) and
266271 not t0 instanceof TypeParameter
@@ -287,7 +292,7 @@ private module Internal {
287292 pragma [ nomagic]
288293 predicate hasSubsumedQualifierTypeOverridden ( Gvn:: GvnType t , OverridableCallable c ) {
289294 this .hasSubsumedQualifierType ( t ) and
290- hasCallable ( any ( OverridableCallable oc | oc = this .getAStaticTargetExt ( ) ) , t , c )
295+ hasCallable ( t , c , any ( OverridableCallable oc | oc = this .getAStaticTargetExt ( ) ) )
291296 }
292297
293298 /**
@@ -553,7 +558,7 @@ private module Internal {
553558
554559 pragma [ nomagic]
555560 private predicate contextArgHasSubsumedType ( DispatchCall ctx , Gvn:: GvnType t ) {
556- hasOverrider ( _ , t ) and
561+ hasOverrider ( t , _ ) and
557562 exists ( Gvn:: GvnType t0 | this .contextArgHasNonTypeParameterType ( ctx , t0 ) |
558563 t = t0
559564 or
0 commit comments