diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 662cd5a5d18..3fc4f05a278 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -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 diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll index 39cbf602650..384e327ff7e 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll @@ -553,6 +553,9 @@ module Ssa { } } + /** + * DEPRECATED: Use `SsaParameterInit` instead. + */ deprecated class ImplicitParameterDefinition = ParameterDefinition; final class ParameterDefinition = SsaImpl::ParameterDefinitionImpl; diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index b55b0cbd934..f581628a79c 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -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) { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll index 89c7276a1a2..715fe486759 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll @@ -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 } /** diff --git a/csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql b/csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql index 10b916ab3f4..fdb1a6e8995 100644 --- a/csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql +++ b/csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql @@ -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() ) diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.ql b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.ql index 253fdea1ffa..b1c28f020d1 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.ql @@ -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()