Skip to content

Commit 32471d3

Browse files
committed
Java: Remove omittable exists variables
1 parent 7a92970 commit 32471d3

File tree

63 files changed

+319
-418
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+319
-418
lines changed

java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class InlineFlowTest extends InlineExpectationsTest {
2626

2727
override predicate hasActualResult(Location location, string element, string tag, string value) {
2828
tag = "flow" and
29-
exists(DataFlow::Node src, DataFlow::Node sink, Config c | c.hasFlow(src, sink) |
29+
exists(DataFlow::Node sink, Config c | c.hasFlowTo(sink) |
3030
sink.getLocation() = location and
3131
element = sink.toString() and
3232
value = ""

java/ql/lib/definitions.qll

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,7 @@ private class LocationOverridingFieldAccess extends FieldAccess {
127127
*/
128128
private class LocationOverridingImportType extends ImportType {
129129
override predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) {
130-
exists(int slSuper, int scSuper, int elSuper, int ecSuper |
131-
super.hasLocationInfo(path, slSuper, scSuper, elSuper, ecSuper)
132-
|
130+
exists(int elSuper, int ecSuper | super.hasLocationInfo(path, _, _, elSuper, ecSuper) |
133131
el = elSuper and
134132
ec = ecSuper - 1 and
135133
sl = el and
@@ -144,9 +142,7 @@ private class LocationOverridingImportType extends ImportType {
144142
*/
145143
private class LocationOverridingImportStaticTypeMember extends ImportStaticTypeMember {
146144
override predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) {
147-
exists(int slSuper, int scSuper, int elSuper, int ecSuper |
148-
super.hasLocationInfo(path, slSuper, scSuper, elSuper, ecSuper)
149-
|
145+
exists(int elSuper, int ecSuper | super.hasLocationInfo(path, _, _, elSuper, ecSuper) |
150146
el = elSuper and
151147
ec = ecSuper - 1 and
152148
sl = el and

java/ql/lib/semmle/code/java/Member.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ class Method extends Callable, @method {
533533
string getKotlinName() {
534534
ktFunctionOriginalNames(this, result)
535535
or
536-
not exists(string n | ktFunctionOriginalNames(this, n)) and
536+
not ktFunctionOriginalNames(this, _) and
537537
result = this.getName()
538538
}
539539

java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -707,9 +707,7 @@ private predicate boundedPhiCand(
707707
SsaPhiNode phi, boolean upper, Bound b, int delta, boolean fromBackEdge, int origdelta,
708708
Reason reason
709709
) {
710-
exists(SsaVariable inp, SsaReadPositionPhiInputEdge edge |
711-
boundedPhiInp(phi, inp, edge, b, delta, upper, fromBackEdge, origdelta, reason)
712-
)
710+
boundedPhiInp(phi, _, _, b, delta, upper, fromBackEdge, origdelta, reason)
713711
}
714712

715713
/**

java/ql/lib/semmle/code/java/dataflow/SSA.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class SsaSourceField extends SsaSourceVariable {
149149
if f.isStatic() then result = f.getDeclaringType().getQualifiedName() else result = "this"
150150
)
151151
or
152-
exists(Field f, RefType t | this = TEnclosingField(_, f, t) | result = t.toString() + ".this")
152+
exists(RefType t | this = TEnclosingField(_, _, t) | result = t.toString() + ".this")
153153
or
154154
exists(SsaSourceVariable q | this = TQualifiedField(_, q, _) | result = q.toString())
155155
}

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -876,9 +876,9 @@ private module Stage1 implements StageSig {
876876

877877
pragma[nomagic]
878878
private predicate revFlowOut(ReturnPosition pos, Configuration config) {
879-
exists(DataFlowCall call, NodeEx out |
879+
exists(NodeEx out |
880880
revFlow(out, _, config) and
881-
viableReturnPosOutNodeCandFwd1(call, pos, out, config)
881+
viableReturnPosOutNodeCandFwd1(_, pos, out, config)
882882
)
883883
}
884884

@@ -1731,8 +1731,8 @@ private module MkStage<StageSig PrevStage> {
17311731
)
17321732
or
17331733
// flow through a callable
1734-
exists(DataFlowCall call, ParamNodeEx p, ReturnPosition pos, Ap innerReturnAp |
1735-
revFlowThrough(call, returnCtx, p, state, pos, returnAp, ap, innerReturnAp, config) and
1734+
exists(DataFlowCall call, ParamNodeEx p, Ap innerReturnAp |
1735+
revFlowThrough(call, returnCtx, p, state, _, returnAp, ap, innerReturnAp, config) and
17361736
flowThroughIntoCall(call, node, p, _, ap, innerReturnAp, config)
17371737
)
17381738
or
@@ -1901,8 +1901,8 @@ private module MkStage<StageSig PrevStage> {
19011901

19021902
pragma[nomagic]
19031903
predicate parameterMayFlowThrough(ParamNodeEx p, Ap ap, Configuration config) {
1904-
exists(RetNodeEx ret, ReturnPosition pos |
1905-
returnFlowsThrough(ret, pos, _, _, p, ap, _, config) and
1904+
exists(ReturnPosition pos |
1905+
returnFlowsThrough(_, pos, _, _, p, ap, _, config) and
19061906
parameterFlowsThroughRev(p, ap, pos, _, config)
19071907
)
19081908
}
@@ -1923,8 +1923,8 @@ private module MkStage<StageSig PrevStage> {
19231923
DataFlowCall call, ArgNodeEx arg, FlowState state, ReturnCtx returnCtx, ApOption returnAp,
19241924
Ap ap, Configuration config
19251925
) {
1926-
exists(ParamNodeEx p, ReturnPosition pos, Ap innerReturnAp |
1927-
revFlowThrough(call, returnCtx, p, state, pos, returnAp, ap, innerReturnAp, config) and
1926+
exists(ParamNodeEx p, Ap innerReturnAp |
1927+
revFlowThrough(call, returnCtx, p, state, _, returnAp, ap, innerReturnAp, config) and
19281928
flowThroughIntoCall(call, arg, p, _, ap, innerReturnAp, config)
19291929
)
19301930
}
@@ -3749,8 +3749,8 @@ private predicate paramFlowsThrough(
37493749
ReturnKindExt kind, FlowState state, CallContextCall cc, SummaryCtxSome sc, AccessPath ap,
37503750
AccessPathApprox apa, Configuration config
37513751
) {
3752-
exists(PathNodeMid mid, RetNodeEx ret |
3753-
pathNode(mid, ret, state, cc, sc, ap, config, _) and
3752+
exists(RetNodeEx ret |
3753+
pathNode(_, ret, state, cc, sc, ap, config, _) and
37543754
kind = ret.getKind() and
37553755
apa = ap.getApprox() and
37563756
parameterFlowThroughAllowed(sc.getParamNode(), kind)
@@ -4212,37 +4212,33 @@ private module FlowExploration {
42124212
ap = TRevPartialNil() and
42134213
exists(config.explorationLimit())
42144214
or
4215-
exists(PartialPathNodeRev mid |
4216-
revPartialPathStep(mid, node, state, sc1, sc2, sc3, ap, config) and
4217-
not clearsContentEx(node, ap.getHead()) and
4218-
(
4219-
notExpectsContent(node) or
4220-
expectsContentEx(node, ap.getHead())
4221-
) and
4222-
not fullBarrier(node, config) and
4223-
not stateBarrier(node, state, config) and
4224-
distSink(node.getEnclosingCallable(), config) <= config.explorationLimit()
4225-
)
4215+
revPartialPathStep(_, node, state, sc1, sc2, sc3, ap, config) and
4216+
not clearsContentEx(node, ap.getHead()) and
4217+
(
4218+
notExpectsContent(node) or
4219+
expectsContentEx(node, ap.getHead())
4220+
) and
4221+
not fullBarrier(node, config) and
4222+
not stateBarrier(node, state, config) and
4223+
distSink(node.getEnclosingCallable(), config) <= config.explorationLimit()
42264224
}
42274225

42284226
pragma[nomagic]
42294227
private predicate partialPathNodeMk0(
42304228
NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2,
42314229
TSummaryCtx3 sc3, PartialAccessPath ap, Configuration config
42324230
) {
4233-
exists(PartialPathNodeFwd mid |
4234-
partialPathStep(mid, node, state, cc, sc1, sc2, sc3, ap, config) and
4235-
not fullBarrier(node, config) and
4236-
not stateBarrier(node, state, config) and
4237-
not clearsContentEx(node, ap.getHead().getContent()) and
4238-
(
4239-
notExpectsContent(node) or
4240-
expectsContentEx(node, ap.getHead().getContent())
4241-
) and
4242-
if node.asNode() instanceof CastingNode
4243-
then compatibleTypes(node.getDataFlowType(), ap.getType())
4244-
else any()
4245-
)
4231+
partialPathStep(_, node, state, cc, sc1, sc2, sc3, ap, config) and
4232+
not fullBarrier(node, config) and
4233+
not stateBarrier(node, state, config) and
4234+
not clearsContentEx(node, ap.getHead().getContent()) and
4235+
(
4236+
notExpectsContent(node) or
4237+
expectsContentEx(node, ap.getHead().getContent())
4238+
) and
4239+
if node.asNode() instanceof CastingNode
4240+
then compatibleTypes(node.getDataFlowType(), ap.getType())
4241+
else any()
42464242
}
42474243

42484244
/**

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -876,9 +876,9 @@ private module Stage1 implements StageSig {
876876

877877
pragma[nomagic]
878878
private predicate revFlowOut(ReturnPosition pos, Configuration config) {
879-
exists(DataFlowCall call, NodeEx out |
879+
exists(NodeEx out |
880880
revFlow(out, _, config) and
881-
viableReturnPosOutNodeCandFwd1(call, pos, out, config)
881+
viableReturnPosOutNodeCandFwd1(_, pos, out, config)
882882
)
883883
}
884884

@@ -1731,8 +1731,8 @@ private module MkStage<StageSig PrevStage> {
17311731
)
17321732
or
17331733
// flow through a callable
1734-
exists(DataFlowCall call, ParamNodeEx p, ReturnPosition pos, Ap innerReturnAp |
1735-
revFlowThrough(call, returnCtx, p, state, pos, returnAp, ap, innerReturnAp, config) and
1734+
exists(DataFlowCall call, ParamNodeEx p, Ap innerReturnAp |
1735+
revFlowThrough(call, returnCtx, p, state, _, returnAp, ap, innerReturnAp, config) and
17361736
flowThroughIntoCall(call, node, p, _, ap, innerReturnAp, config)
17371737
)
17381738
or
@@ -1901,8 +1901,8 @@ private module MkStage<StageSig PrevStage> {
19011901

19021902
pragma[nomagic]
19031903
predicate parameterMayFlowThrough(ParamNodeEx p, Ap ap, Configuration config) {
1904-
exists(RetNodeEx ret, ReturnPosition pos |
1905-
returnFlowsThrough(ret, pos, _, _, p, ap, _, config) and
1904+
exists(ReturnPosition pos |
1905+
returnFlowsThrough(_, pos, _, _, p, ap, _, config) and
19061906
parameterFlowsThroughRev(p, ap, pos, _, config)
19071907
)
19081908
}
@@ -1923,8 +1923,8 @@ private module MkStage<StageSig PrevStage> {
19231923
DataFlowCall call, ArgNodeEx arg, FlowState state, ReturnCtx returnCtx, ApOption returnAp,
19241924
Ap ap, Configuration config
19251925
) {
1926-
exists(ParamNodeEx p, ReturnPosition pos, Ap innerReturnAp |
1927-
revFlowThrough(call, returnCtx, p, state, pos, returnAp, ap, innerReturnAp, config) and
1926+
exists(ParamNodeEx p, Ap innerReturnAp |
1927+
revFlowThrough(call, returnCtx, p, state, _, returnAp, ap, innerReturnAp, config) and
19281928
flowThroughIntoCall(call, arg, p, _, ap, innerReturnAp, config)
19291929
)
19301930
}
@@ -3749,8 +3749,8 @@ private predicate paramFlowsThrough(
37493749
ReturnKindExt kind, FlowState state, CallContextCall cc, SummaryCtxSome sc, AccessPath ap,
37503750
AccessPathApprox apa, Configuration config
37513751
) {
3752-
exists(PathNodeMid mid, RetNodeEx ret |
3753-
pathNode(mid, ret, state, cc, sc, ap, config, _) and
3752+
exists(RetNodeEx ret |
3753+
pathNode(_, ret, state, cc, sc, ap, config, _) and
37543754
kind = ret.getKind() and
37553755
apa = ap.getApprox() and
37563756
parameterFlowThroughAllowed(sc.getParamNode(), kind)
@@ -4212,37 +4212,33 @@ private module FlowExploration {
42124212
ap = TRevPartialNil() and
42134213
exists(config.explorationLimit())
42144214
or
4215-
exists(PartialPathNodeRev mid |
4216-
revPartialPathStep(mid, node, state, sc1, sc2, sc3, ap, config) and
4217-
not clearsContentEx(node, ap.getHead()) and
4218-
(
4219-
notExpectsContent(node) or
4220-
expectsContentEx(node, ap.getHead())
4221-
) and
4222-
not fullBarrier(node, config) and
4223-
not stateBarrier(node, state, config) and
4224-
distSink(node.getEnclosingCallable(), config) <= config.explorationLimit()
4225-
)
4215+
revPartialPathStep(_, node, state, sc1, sc2, sc3, ap, config) and
4216+
not clearsContentEx(node, ap.getHead()) and
4217+
(
4218+
notExpectsContent(node) or
4219+
expectsContentEx(node, ap.getHead())
4220+
) and
4221+
not fullBarrier(node, config) and
4222+
not stateBarrier(node, state, config) and
4223+
distSink(node.getEnclosingCallable(), config) <= config.explorationLimit()
42264224
}
42274225

42284226
pragma[nomagic]
42294227
private predicate partialPathNodeMk0(
42304228
NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2,
42314229
TSummaryCtx3 sc3, PartialAccessPath ap, Configuration config
42324230
) {
4233-
exists(PartialPathNodeFwd mid |
4234-
partialPathStep(mid, node, state, cc, sc1, sc2, sc3, ap, config) and
4235-
not fullBarrier(node, config) and
4236-
not stateBarrier(node, state, config) and
4237-
not clearsContentEx(node, ap.getHead().getContent()) and
4238-
(
4239-
notExpectsContent(node) or
4240-
expectsContentEx(node, ap.getHead().getContent())
4241-
) and
4242-
if node.asNode() instanceof CastingNode
4243-
then compatibleTypes(node.getDataFlowType(), ap.getType())
4244-
else any()
4245-
)
4231+
partialPathStep(_, node, state, cc, sc1, sc2, sc3, ap, config) and
4232+
not fullBarrier(node, config) and
4233+
not stateBarrier(node, state, config) and
4234+
not clearsContentEx(node, ap.getHead().getContent()) and
4235+
(
4236+
notExpectsContent(node) or
4237+
expectsContentEx(node, ap.getHead().getContent())
4238+
) and
4239+
if node.asNode() instanceof CastingNode
4240+
then compatibleTypes(node.getDataFlowType(), ap.getType())
4241+
else any()
42464242
}
42474243

42484244
/**

0 commit comments

Comments
 (0)