khulnasoft's picture
Upload 26 files
ebd078b verified
raw
history blame
5.26 kB
======
module
======
module foo {
module bar {
import woo
predicate baz();
}
}
---
(ql (moduleMember
(module (moduleName (simpleId)) (moduleMember
(module (moduleName (simpleId))
(moduleMember (importDirective (importModuleExpr (moduleExpr (simpleId)))))
(moduleMember (classlessPredicate (predicate) (predicateName) (empty))))))))
============
module alias
============
module foo = bar::baz;
---
(ql (moduleMember (module (moduleName (simpleId)) (moduleAliasBody (moduleExpr (moduleExpr (simpleId)) (simpleId))))))
==============================
parameterised module signature
==============================
signature int supplyInt();
signature module SupplyInt {
int get();
class C extends Foo, Bar;
predicate baz(C c);
}
---
(ql
(moduleMember
(annotation
(annotName))
(classlessPredicate
(typeExpr
(primitiveType))
(predicateName)
(empty)))
(moduleMember
(annotation
(annotName))
(module
(moduleName
(simpleId))
(moduleMember
(classlessPredicate
(typeExpr
(primitiveType))
(predicateName)
(empty)))
(moduleMember
(dataclass
(className)
(typeExpr
(className))
(typeExpr
(className))))
(moduleMember
(classlessPredicate
(predicate)
(predicateName)
(varDecl
(typeExpr
(className))
(varName
(simpleId)))
(empty))))))
================================
parameterised module declaration
================================
module PModule<supplyInt/0 s1, SupplyInt S2> {
int foo() { result = s1() + S2::get() }
}
---
(ql
(moduleMember
(module
(moduleName
(simpleId))
(moduleParam
(signatureExpr
(predicateExpr
(aritylessPredicateExpr
(literalId))
(integer)))
(simpleId))
(moduleParam
(signatureExpr
(typeExpr
(className)))
(simpleId))
(moduleMember
(classlessPredicate
(typeExpr
(primitiveType))
(predicateName)
(body
(comp_term
(variable
(result))
(compop)
(add_expr
(call_or_unqual_agg_expr
(aritylessPredicateExpr
(literalId))
(call_body))
(addop)
(call_or_unqual_agg_expr
(aritylessPredicateExpr
(moduleExpr
(simpleId))
(literalId))
(call_body))))))))))
===============================
parameterised module implements
===============================
module Supply11 implements SupplyInt {
int get() { result = 11 }
}
---
(ql
(moduleMember
(module
(moduleName
(simpleId))
(signatureExpr
(typeExpr
(className)))
(moduleMember
(classlessPredicate
(typeExpr
(primitiveType))
(predicateName)
(body
(comp_term
(variable
(result))
(compop)
(literal
(integer)))))))))
================================
parameterised module application
================================
select PModule<supply6/0, supply10/0, Supply11, Supply15>::foo()
---
(ql
(moduleMember
(select
(asExprs
(asExpr
(call_or_unqual_agg_expr
(aritylessPredicateExpr
(moduleExpr
(moduleInstantiation
(moduleName
(simpleId))
(signatureExpr
(predicateExpr
(aritylessPredicateExpr
(literalId))
(integer)))
(signatureExpr
(predicateExpr
(aritylessPredicateExpr
(literalId))
(integer)))
(signatureExpr
(typeExpr
(className)))
(signatureExpr
(typeExpr
(className)))))
(literalId))
(call_body)))))))
==================
second application
==================
where node = DataFlow::BarrierGuard<containsDotDotSanitizer/3>::getABarrierNode()
select 1
---
(ql
(moduleMember
(select
(comp_term
(variable
(varName
(simpleId)))
(compop)
(call_or_unqual_agg_expr
(aritylessPredicateExpr
(moduleExpr
(moduleExpr
(simpleId))
(moduleInstantiation
(moduleName
(simpleId))
(signatureExpr
(predicateExpr
(aritylessPredicateExpr
(literalId))
(integer)))))
(literalId))
(call_body)))
(asExprs
(asExpr
(literal
(integer)))))))