Files
codeql/ruby/ql/test/library-tests/ast/params/params.ql
2021-10-15 11:47:28 +02:00

49 lines
1.8 KiB
Plaintext

import ruby
////////////////////////////////////////////////////////////////////////////////
// Query predicates for various types of parameter
query predicate idParams(NamedParameter np, string name) { name = np.getName() }
query predicate blockParams(BlockParameter bp, string name) { name = bp.getName() }
query predicate patternParams(TuplePatternParameter tpp, Pattern child, int childIndex) {
tpp.getElement(childIndex) = child
}
query predicate splatParams(SplatParameter sp, string name) { name = sp.getName() }
query predicate hashSplatParams(HashSplatParameter hsp, string name) { name = hsp.getName() }
query predicate keywordParams(KeywordParameter kp, string name, string defaultValueStr) {
name = kp.getName() and
if kp.isOptional()
then defaultValueStr = kp.getDefaultValue().toString()
else defaultValueStr = "(none)"
}
query predicate optionalParams(OptionalParameter op, string name, AstNode defaultValue) {
name = op.getName() and
defaultValue = op.getDefaultValue()
}
////////////////////////////////////////////////////////////////////////////////
// Query predicates for various contexts of parameters
query predicate paramsInMethods(Method m, int i, Parameter p, string pClass) {
p = m.getParameter(i) and pClass = p.getAPrimaryQlClass()
}
query predicate paramsInBlocks(Block b, int i, Parameter p, string pClass) {
p = b.getParameter(i) and pClass = p.getAPrimaryQlClass()
}
query predicate paramsInLambdas(Lambda l, int i, Parameter p, string pClass) {
p = l.getParameter(i) and pClass = p.getAPrimaryQlClass()
}
////////////////////////////////////////////////////////////////////////////////
// General query selecting all parameters
query predicate params(Parameter p, int i, string pClass) {
i = p.getPosition() and
pClass = p.getAPrimaryQlClass()
}