C#: Replace Ssa::ImplicitParameterDefinition with SsaParameterInit.

This commit is contained in:
Anders Schack-Mulligen
2026-04-27 14:59:22 +02:00
parent 31e06bc0a9
commit 6ecdf3fe32
6 changed files with 11 additions and 18 deletions

View File

@@ -126,7 +126,7 @@ private predicate nonNullDef(SsaExplicitWrite def) {
*/
private predicate dereferenceAt(SsaDefinition def, Dereference d) { d = def.getARead() }
private predicate isMaybeNullArgument(Ssa::ParameterDefinition def, MaybeNullExpr arg) {
private predicate isMaybeNullArgument(SsaParameterInit def, MaybeNullExpr arg) {
exists(AssignableDefinitions::ImplicitParameterDefinition pdef, Parameter p |
p = def.getParameter()
|
@@ -320,9 +320,7 @@ class Dereference extends G::DereferenceableExpr {
not p.getAnnotatedType().isNullableRefType()
or
p.fromSource() and
exists(
Ssa::ParameterDefinition def, AssignableDefinitions::ImplicitParameterDefinition pdef
|
exists(SsaParameterInit def, AssignableDefinitions::ImplicitParameterDefinition pdef |
p = def.getParameter()
|
p.getUnboundDeclaration() = pdef.getParameter() and

View File

@@ -553,6 +553,9 @@ module Ssa {
}
}
/**
* DEPRECATED: Use `SsaParameterInit` instead.
*/
deprecated class ImplicitParameterDefinition = ParameterDefinition;
final class ParameterDefinition = SsaImpl::ParameterDefinitionImpl;

View File

@@ -1302,12 +1302,6 @@ private module NearestLocationInputParamAfterCallable implements NearestLocation
}
private module ParameterNodes {
pragma[nomagic]
private predicate ssaParamDef(Ssa::ParameterDefinition ssaDef, Parameter p, Location l) {
p = ssaDef.getParameter() and
l = ssaDef.getLocation()
}
private module NearestLocationInputParamBeforeCallable implements NearestLocationInputSig {
class C = Parameter;
@@ -1358,11 +1352,9 @@ private module ParameterNodes {
}
/** Gets the SSA definition corresponding to this parameter, if any. */
Ssa::ParameterDefinition getSsaDefinition() {
exists(Parameter p, Location l |
l = this.getParameterLocation(p) and
ssaParamDef(result, p, l)
)
SsaParameterInit getSsaDefinition() {
result.getParameter() = parameter and
result.getBasicBlock() = callable.getABasicBlock()
}
override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) {

View File

@@ -1017,7 +1017,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
predicate ssaDefHasSource(WriteDefinition def) {
// exclude flow directly from RHS to SSA definition, as we instead want to
// go from RHS to matching assignable definition, and from there to SSA definition
def instanceof Ssa::ParameterDefinition
def instanceof SsaParameterInit
}
/**

View File

@@ -24,7 +24,7 @@ private LocalScopeVariableRead getAReachableUncertainRead(
AssignableDefinitions::ImplicitParameterDefinition p
) {
exists(SsaDefinition ssaDef |
p.getParameter() = ssaDef.getAnUltimateDefinition().(Ssa::ParameterDefinition).getParameter()
p.getParameter() = ssaDef.getAnUltimateDefinition().(SsaParameterInit).getParameter()
|
result = ssaDef.getARead()
)

View File

@@ -1,5 +1,5 @@
import csharp
from Ssa::SourceVariable v, Ssa::ParameterDefinition def
from Ssa::SourceVariable v, SsaParameterInit def
where v = def.getSourceVariable()
select v, def, def.getParameter()