@@ -19,12 +19,31 @@ private predicate getAnOverridingParameter(
1919 parameter = pred .getParameter ( index )
2020}
2121
22- from ClassPredicate pred , ClassPredicate sup , VarDecl parameter , int index
23- where
22+ pragma [ noinline]
23+ private predicate getAnOverridingParameterWithDifferentNames (
24+ ClassPredicate pred , ClassPredicate sup , VarDecl parameter , int index
25+ ) {
2426 getAnOverridingParameter ( pred , sup , parameter , index ) and
25- sup .getParameter ( index ) .getName ( ) != pred .getParameter ( index ) .getName ( ) and
2627 exists ( int other | other != index |
2728 sup .getParameter ( other ) .getName ( ) = pred .getParameter ( index ) .getName ( )
2829 )
29- select parameter , pred .getParameter ( index ) .getName ( ) + " was $@ in the super class." ,
30- sup .getParameter ( index ) , "named " + sup .getParameter ( index ) .getName ( )
30+ }
31+
32+ pragma [ noinline]
33+ private predicate getAnOverridingParameterWithDifferentNames2 (
34+ ClassPredicate pred , ClassPredicate sup , VarDecl parameter , int index , string supName ,
35+ string predName
36+ ) {
37+ getAnOverridingParameterWithDifferentNames ( pred , sup , parameter , index ) and
38+ supName = pragma [ only_bind_out ] ( pragma [ only_bind_out ] ( sup ) .getParameter ( index ) ) .getName ( ) and
39+ predName = pragma [ only_bind_out ] ( pragma [ only_bind_out ] ( pred ) .getParameter ( index ) ) .getName ( )
40+ }
41+
42+ from
43+ ClassPredicate pred , ClassPredicate sup , VarDecl parameter , int index , string supName ,
44+ string predName
45+ where
46+ getAnOverridingParameterWithDifferentNames2 ( pred , sup , parameter , index , supName , predName ) and
47+ supName != predName
48+ select parameter , predName + " was $@ in the super class." , sup .getParameter ( index ) ,
49+ "named " + supName
0 commit comments