Skip to content

Commit f8ad2ec

Browse files
authored
Merge pull request #4777 from hvitved/csharp/default-to-string-join
C#: Improve join-order in `DefaultToString.qll`
2 parents 8129d0c + 37f32f4 commit f8ad2ec

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

csharp/ql/src/Useless code/DefaultToString.qll

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,15 @@ predicate invokesToString(Expr e, ValueOrRefType t) {
2020
// Implicit invocation via forwarder method
2121
t = e.stripCasts().getType() and
2222
not t instanceof StringType and
23-
exists(AssignableDefinitions::ImplicitParameterDefinition def, Parameter p, ParameterRead pr |
23+
exists(Parameter p |
24+
alwaysInvokesToStringOnParameter(p) and
2425
e = p.getAnAssignedArgument()
25-
|
26+
)
27+
}
28+
29+
pragma[noinline]
30+
private predicate alwaysInvokesToStringOnParameter(Parameter p) {
31+
exists(AssignableDefinitions::ImplicitParameterDefinition def, ParameterRead pr |
2632
def.getParameter() = p and
2733
pr = def.getAReachableRead() and
2834
pr.getAControlFlowNode().postDominates(p.getCallable().getEntryPoint()) and

0 commit comments

Comments
 (0)