6565
6666private import codeql.util.Location
6767
68- signature module Semantic {
68+ signature module Semantic< LocationSig Location > {
6969 class Expr {
7070 string toString ( ) ;
7171
7272 BasicBlock getBasicBlock ( ) ;
73+
74+ Location getLocation ( ) ;
7375 }
7476
7577 class ConstantIntegerExpr extends Expr {
@@ -294,7 +296,7 @@ signature module Semantic {
294296 predicate conversionCannotOverflow ( Type fromType , Type toType ) ;
295297}
296298
297- signature module SignAnalysisSig< Semantic Sem> {
299+ signature module SignAnalysisSig< LocationSig Location , Semantic< Location > Sem> {
298300 /** Holds if `e` can be positive and cannot be negative. */
299301 predicate semPositive ( Sem:: Expr e ) ;
300302
@@ -320,7 +322,7 @@ signature module SignAnalysisSig<Semantic Sem> {
320322 predicate semMayBeNegative ( Sem:: Expr e ) ;
321323}
322324
323- signature module ModulusAnalysisSig< Semantic Sem> {
325+ signature module ModulusAnalysisSig< LocationSig Location , Semantic< Location > Sem> {
324326 class ModBound ;
325327
326328 predicate exprModulus ( Sem:: Expr e , ModBound b , int val , int mod ) ;
@@ -346,7 +348,7 @@ signature module DeltaSig {
346348 Delta fromFloat ( float f ) ;
347349}
348350
349- signature module LangSig< Semantic Sem, DeltaSig D> {
351+ signature module LangSig< LocationSig Location , Semantic< Location > Sem, DeltaSig D> {
350352 /**
351353 * Holds if `e >= bound` (if `upper = false`) or `e <= bound` (if `upper = true`).
352354 */
@@ -372,7 +374,7 @@ signature module LangSig<Semantic Sem, DeltaSig D> {
372374 default predicate includeRelativeBounds ( ) { any ( ) }
373375}
374376
375- signature module BoundSig< LocationSig Location, Semantic Sem, DeltaSig D> {
377+ signature module BoundSig< LocationSig Location, Semantic< Location > Sem, DeltaSig D> {
376378 /**
377379 * A bound that the range analysis can infer for a variable. This includes
378380 * constant bounds represented by the abstract value zero, SSA bounds for when
@@ -409,22 +411,23 @@ signature module BoundSig<LocationSig Location, Semantic Sem, DeltaSig D> {
409411 }
410412}
411413
412- signature module OverflowSig< Semantic Sem, DeltaSig D> {
414+ signature module OverflowSig< LocationSig Location , Semantic< Location > Sem, DeltaSig D> {
413415 predicate semExprDoesNotOverflow ( boolean positively , Sem:: Expr expr ) ;
414416}
415417
416418module RangeStage<
417- LocationSig Location, Semantic Sem, DeltaSig D, BoundSig< Location , Sem , D > Bounds,
418- OverflowSig< Sem , D > OverflowParam, LangSig< Sem , D > LangParam, SignAnalysisSig< Sem > SignAnalysis,
419- ModulusAnalysisSig< Sem > ModulusAnalysisParam>
419+ LocationSig Location, Semantic< Location > Sem, DeltaSig D, BoundSig< Location , Sem , D > Bounds,
420+ OverflowSig< Location , Sem , D > OverflowParam, LangSig< Location , Sem , D > LangParam,
421+ SignAnalysisSig< Location , Sem > SignAnalysis,
422+ ModulusAnalysisSig< Location , Sem > ModulusAnalysisParam>
420423{
421424 private import Bounds
422425 private import LangParam
423426 private import D
424427 private import OverflowParam
425428 private import SignAnalysis
426429 private import ModulusAnalysisParam
427- private import internal.RangeUtils:: MakeUtils< Sem , D >
430+ private import internal.RangeUtils:: MakeUtils< Location , Sem , D >
428431
429432 /**
430433 * An expression that does conversion, boxing, or unboxing
0 commit comments