@@ -19,12 +19,31 @@ private predicate getAnOverridingParameter(
19
19
parameter = pred .getParameter ( index )
20
20
}
21
21
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
+ ) {
24
26
getAnOverridingParameter ( pred , sup , parameter , index ) and
25
- sup .getParameter ( index ) .getName ( ) != pred .getParameter ( index ) .getName ( ) and
26
27
exists ( int other | other != index |
27
28
sup .getParameter ( other ) .getName ( ) = pred .getParameter ( index ) .getName ( )
28
29
)
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