Skip to content

Commit ad03b58

Browse files
committed
C#: Replace Ssa::ImplicitParameterDefinition with SsaParameterInit.
1 parent 79bb39d commit ad03b58

6 files changed

Lines changed: 12 additions & 22 deletions

File tree

csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ private predicate nonNullDef(SsaExplicitWrite def) {
126126
*/
127127
private predicate dereferenceAt(SsaDefinition def, Dereference d) { d = def.getARead() }
128128

129-
private predicate isMaybeNullArgument(Ssa::ImplicitParameterDefinition def, MaybeNullExpr arg) {
129+
private predicate isMaybeNullArgument(SsaParameterInit def, MaybeNullExpr arg) {
130130
exists(AssignableDefinitions::ImplicitParameterDefinition pdef, Parameter p |
131131
p = def.getParameter()
132132
|
@@ -177,7 +177,7 @@ private predicate hasMultipleParamsArguments(Call c) {
177177
)
178178
}
179179

180-
private predicate isNullDefaultArgument(Ssa::ImplicitParameterDefinition def, AlwaysNullExpr arg) {
180+
private predicate isNullDefaultArgument(SsaParameterInit def, AlwaysNullExpr arg) {
181181
exists(AssignableDefinitions::ImplicitParameterDefinition pdef, Parameter p |
182182
p = def.getParameter()
183183
|
@@ -334,10 +334,7 @@ class Dereference extends G::DereferenceableExpr {
334334
not p.getAnnotatedType().isNullableRefType()
335335
or
336336
p.fromSource() and
337-
exists(
338-
Ssa::ImplicitParameterDefinition def,
339-
AssignableDefinitions::ImplicitParameterDefinition pdef
340-
|
337+
exists(SsaParameterInit def, AssignableDefinitions::ImplicitParameterDefinition pdef |
341338
p = def.getParameter()
342339
|
343340
p.getUnboundDeclaration() = pdef.getParameter() and

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,10 +570,12 @@ module Ssa {
570570
}
571571

572572
/**
573+
* DEPRECATED: Use `SsaParameterInit` instead.
574+
*
573575
* An SSA definition representing the implicit initialization of a parameter
574576
* at the beginning of a callable.
575577
*/
576-
class ImplicitParameterDefinition extends ImplicitEntryDefinition {
578+
deprecated class ImplicitParameterDefinition extends ImplicitEntryDefinition {
577579
private Parameter p;
578580

579581
ImplicitParameterDefinition() {

csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,12 +1287,6 @@ private module NearestLocationInputParamAfterCallable implements NearestLocation
12871287
}
12881288

12891289
private module ParameterNodes {
1290-
pragma[nomagic]
1291-
private predicate ssaParamDef(Ssa::ImplicitParameterDefinition ssaDef, Parameter p, Location l) {
1292-
p = ssaDef.getParameter() and
1293-
l = ssaDef.getLocation()
1294-
}
1295-
12961290
private module NearestLocationInputParamBeforeCallable implements NearestLocationInputSig {
12971291
class C = Parameter;
12981292

@@ -1343,11 +1337,9 @@ private module ParameterNodes {
13431337
}
13441338

13451339
/** Gets the SSA definition corresponding to this parameter, if any. */
1346-
Ssa::ImplicitParameterDefinition getSsaDefinition() {
1347-
exists(Parameter p, Location l |
1348-
l = this.getParameterLocation(p) and
1349-
ssaParamDef(result, p, l)
1350-
)
1340+
SsaParameterInit getSsaDefinition() {
1341+
result.getParameter() = parameter and
1342+
result.getBasicBlock() = callable.getABasicBlock()
13511343
}
13521344

13531345
override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) {

csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1002,7 +1002,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
10021002
predicate ssaDefHasSource(WriteDefinition def) {
10031003
// exclude flow directly from RHS to SSA definition, as we instead want to
10041004
// go from RHS to matching assignable definition, and from there to SSA definition
1005-
def instanceof Ssa::ImplicitParameterDefinition
1005+
def instanceof SsaParameterInit
10061006
}
10071007

10081008
/**

csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ private LocalScopeVariableRead getAReachableUncertainRead(
2424
AssignableDefinitions::ImplicitParameterDefinition p
2525
) {
2626
exists(SsaDefinition ssaDef |
27-
p.getParameter() =
28-
ssaDef.getAnUltimateDefinition().(Ssa::ImplicitParameterDefinition).getParameter()
27+
p.getParameter() = ssaDef.getAnUltimateDefinition().(SsaParameterInit).getParameter()
2928
|
3029
result = ssaDef.getARead()
3130
)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import csharp
22

3-
from Ssa::SourceVariable v, Ssa::ImplicitParameterDefinition def
3+
from Ssa::SourceVariable v, SsaParameterInit def
44
where v = def.getSourceVariable()
55
select v, def, def.getParameter()

0 commit comments

Comments
 (0)