Skip to content

Commit 3fcc99e

Browse files
committed
C++: Remove omittable exists variables
1 parent 16cd148 commit 3fcc99e

File tree

62 files changed

+484
-579
lines changed

Some content is hidden

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

62 files changed

+484
-579
lines changed

cpp/ql/lib/definitions.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,9 @@ Top definitionOf(Top e, string kind) {
159159
// Multiple type mentions can be generated when a typedef is used, and
160160
// in such cases we want to exclude all but the originating typedef.
161161
not exists(Type secondary |
162-
exists(TypeMention tm, File f, int startline, int startcol |
162+
exists(File f, int startline, int startcol |
163163
typeMentionStartLoc(e, result, f, startline, startcol) and
164-
typeMentionStartLoc(tm, secondary, f, startline, startcol) and
164+
typeMentionStartLoc(_, secondary, f, startline, startcol) and
165165
(
166166
result = secondary.(TypedefType).getBaseType() or
167167
result = secondary.(TypedefType).getBaseType().(SpecifiedType).getBaseType()

cpp/ql/lib/experimental/semmle/code/cpp/ir/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
/**

cpp/ql/lib/experimental/semmle/code/cpp/ir/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
/**

cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.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)