Skip to content

Commit 37f32f4

Browse files
committed
C#: Improve join-order in DefaultToString.qll
1 parent 0f5f0ed commit 37f32f4

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)