|
9 | 9 | * readability |
10 | 10 | * external/jsf |
11 | 11 | */ |
| 12 | + |
12 | 13 | import cpp |
13 | 14 |
|
14 | | -predicate memberParameterWithDefault(MemberFunction f, int ix, Parameter p, Expr initExpr, string initValue) { |
| 15 | +predicate memberParameterWithDefault( |
| 16 | + MemberFunction f, int ix, Parameter p, Expr initExpr, string initValue |
| 17 | +) { |
15 | 18 | f.getParameter(ix) = p and |
16 | 19 | initExpr = p.getInitializer().getExpr() and |
17 | 20 | initValue = initExpr.getValue() |
18 | 21 | } |
19 | 22 |
|
20 | | -from Parameter p, Parameter superP, MemberFunction subF, MemberFunction superF, int i, Expr subExpr, string subValue, string superValue |
21 | | -where memberParameterWithDefault(subF, i, p, subExpr, subValue) |
22 | | - and subF.overrides(superF) |
23 | | - and memberParameterWithDefault(superF, i, superP, _, superValue) |
24 | | - and subValue != superValue |
| 23 | +from |
| 24 | + Parameter p, Parameter superP, MemberFunction subF, MemberFunction superF, int i, Expr subExpr, |
| 25 | + string subValue, string superValue |
| 26 | +where |
| 27 | + memberParameterWithDefault(subF, i, p, subExpr, subValue) and |
| 28 | + subF.overrides(superF) and |
| 29 | + memberParameterWithDefault(superF, i, superP, _, superValue) and |
| 30 | + subValue != superValue |
25 | 31 | select subExpr, |
26 | | - "Parameter " + p.getName() + |
27 | | - " redefines its default value to " + subValue + |
28 | | - " from the inherited default value " + superValue + |
29 | | - " (in " + superF.getDeclaringType().getName() + |
30 | | - ").\nThe default value will be resolved statically, not by dispatch, so this can cause confusion." |
| 32 | + "Parameter " + p.getName() + " redefines its default value to " + subValue + |
| 33 | + " from the inherited default value " + superValue + " (in " + |
| 34 | + superF.getDeclaringType().getName() + |
| 35 | + ").\nThe default value will be resolved statically, not by dispatch, so this can cause confusion." |
0 commit comments