diff --git a/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll b/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll index 82bda033bc6..bd293eed6b3 100644 --- a/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll +++ b/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll @@ -334,7 +334,7 @@ private module TrackLambda { ) } - private module TtInput implements TypeTrackingInput { + private module TtInput implements TypeTrackingInput { import TypeTrackingSteps predicate callStep(Node n1, LocalSourceNode n2) { argParamCand(n1, n2) } @@ -348,7 +348,7 @@ private module TrackLambda { } } - private import TypeTracking::TypeTrack::Graph + private import TypeTracking::TypeTrack::Graph private predicate edgePlus(PathNode n1, PathNode n2) = fastTC(edges/2)(n1, n2) diff --git a/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll b/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll index 8d1c691915b..9d21be852fd 100644 --- a/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll +++ b/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll @@ -4,7 +4,8 @@ */ private import internal.TypeTrackingImpl as Impl -import Impl::Shared::TypeTracking +private import semmle.python.Files +import Impl::Shared::TypeTracking private import semmle.python.dataflow.new.internal.DataFlowPublic as DataFlowPublic /** diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll index 415028ad827..09d50253e05 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll @@ -106,7 +106,7 @@ private module SummaryTypeTrackerInput implements SummaryTypeTracker::Input { private module TypeTrackerSummaryFlow = SummaryTypeTracker::SummaryFlow; -module TypeTrackingInput implements Shared::TypeTrackingInput { +module TypeTrackingInput implements Shared::TypeTrackingInput { class Node = DataFlowPublic::Node; class LocalSourceNode = DataFlowPublic::LocalSourceNode; @@ -323,4 +323,4 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { predicate nonStandardFlowsTo(LocalSourceNode localSource, Node dst) { localSource.flowsTo(dst) } } -import SharedImpl::TypeTracking +import SharedImpl::TypeTracking diff --git a/ruby/ql/lib/codeql/ruby/typetracking/TypeTracking.qll b/ruby/ql/lib/codeql/ruby/typetracking/TypeTracking.qll index 67f09a45a37..5f2e6564f2c 100644 --- a/ruby/ql/lib/codeql/ruby/typetracking/TypeTracking.qll +++ b/ruby/ql/lib/codeql/ruby/typetracking/TypeTracking.qll @@ -3,5 +3,6 @@ * for tracking types. */ +private import codeql.ruby.AST private import codeql.ruby.typetracking.internal.TypeTrackingImpl as Impl -import Impl::Shared::TypeTracking +import Impl::Shared::TypeTracking diff --git a/ruby/ql/lib/codeql/ruby/typetracking/internal/TypeTrackingImpl.qll b/ruby/ql/lib/codeql/ruby/typetracking/internal/TypeTrackingImpl.qll index 4ad1723249b..cd556a67f4f 100644 --- a/ruby/ql/lib/codeql/ruby/typetracking/internal/TypeTrackingImpl.qll +++ b/ruby/ql/lib/codeql/ruby/typetracking/internal/TypeTrackingImpl.qll @@ -265,7 +265,7 @@ private module TypeTrackerSummaryFlow = SummaryTypeTracker::SummaryFlow { class Node = DataFlowPublic::Node; class LocalSourceNode = DataFlowPublic::LocalSourceNode; @@ -467,4 +467,4 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { predicate hasFeatureBacktrackStoreTarget() { none() } } -import SharedImpl::TypeTracking +import SharedImpl::TypeTracking diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index f48a4864d5b..debaa1fa524 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -80,7 +80,7 @@ module MakeImplCommon Lang> { } } - private module TypeTrackingInput implements Tt::TypeTrackingInput { + private module TypeTrackingInput implements Tt::TypeTrackingInput { final class Node = Lang::Node; class LocalSourceNode extends Node { @@ -145,7 +145,7 @@ module MakeImplCommon Lang> { predicate hasFeatureBacktrackStoreTarget() { none() } } - private module TypeTracking = Tt::TypeTracking; + private module TypeTracking = Tt::TypeTracking; /** * The cost limits for the `AccessPathFront` to `AccessPathApprox` expansion. diff --git a/shared/typetracking/codeql/typetracking/TypeTracking.qll b/shared/typetracking/codeql/typetracking/TypeTracking.qll index 044b672fe85..691480072d4 100644 --- a/shared/typetracking/codeql/typetracking/TypeTracking.qll +++ b/shared/typetracking/codeql/typetracking/TypeTracking.qll @@ -3,14 +3,19 @@ * for tracking types. */ +private import codeql.util.Location + /** * The step relations for type tracking. */ -signature module TypeTrackingInput { +signature module TypeTrackingInput { /** A node that is used by the type-trackers. */ class Node { /** Gets a textual representation of this node. */ string toString(); + + /** Gets the source location of this node. */ + Location getLocation(); } /** @@ -127,8 +132,8 @@ private import internal.TypeTrackingImpl as Impl * Given a set of step relations, this module provides classes and predicates * for simple data-flow reachability suitable for tracking types. */ -module TypeTracking { - private module MkImpl = Impl::TypeTracking; +module TypeTracking I> { + private module MkImpl = Impl::TypeTracking; private module ConsistencyChecksInput implements MkImpl::ConsistencyChecksInputSig { } diff --git a/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll b/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll index f5efc6c6b56..5487561439e 100644 --- a/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll +++ b/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll @@ -6,6 +6,7 @@ private import codeql.util.Boolean private import codeql.util.Option private import codeql.typetracking.TypeTracking +private import codeql.util.Location /** * Given a set of step relations, this module provides classes and predicates @@ -14,7 +15,7 @@ private import codeql.typetracking.TypeTracking * The constructed module contains both public and internal logic; the public * interface is exposed via `codeql.typetracking.TypeTracking`. */ -module TypeTracking { +module TypeTracking I> { private import I signature module ConsistencyChecksInputSig {