From 96eacd0ea68c40701f6318120489a213f9c8cda5 Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen Date: Thu, 16 Jun 2022 23:10:09 +0200 Subject: [PATCH] disable consistency checks in QL tests that does not hold with the current parameterized modules implementation --- ql/ql/src/codeql_ql/ast/internal/Module.qll | 13 +++++---- .../src/codeql_ql/ast/internal/Predicate.qll | 27 ++++++++++--------- ql/ql/src/codeql_ql/ast/internal/Type.qll | 13 +++++---- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/ql/ql/src/codeql_ql/ast/internal/Module.qll b/ql/ql/src/codeql_ql/ast/internal/Module.qll index 835d5ff21f9..1097bbe711c 100644 --- a/ql/ql/src/codeql_ql/ast/internal/Module.qll +++ b/ql/ql/src/codeql_ql/ast/internal/Module.qll @@ -326,11 +326,14 @@ module ModConsistency { .regexpMatch(".*/(test|examples|ql-training|recorded-call-graph-metrics)/.*") } - query predicate multipleResolveModuleRef(ModuleExpr me, int c, ContainerOrModule m) { - c = strictcount(ContainerOrModule m0 | resolveModuleRef(me, m0)) and - c > 1 and - resolveModuleRef(me, m) - } + // This can happen with parameterized modules. + /* + * query predicate multipleResolveModuleRef(ModuleExpr me, int c, ContainerOrModule m) { + * c = strictcount(ContainerOrModule m0 | resolveModuleRef(me, m0)) and + * c > 1 and + * resolveModuleRef(me, m) + * } + */ query predicate noName(Module mod) { not exists(mod.getName()) } diff --git a/ql/ql/src/codeql_ql/ast/internal/Predicate.qll b/ql/ql/src/codeql_ql/ast/internal/Predicate.qll index 2b45ef9e0d8..0b6451ea74e 100644 --- a/ql/ql/src/codeql_ql/ast/internal/Predicate.qll +++ b/ql/ql/src/codeql_ql/ast/internal/Predicate.qll @@ -174,17 +174,20 @@ module PredConsistency { c > 1 and resolvePredicateExpr(pe, p) } + // This can happen with parametarized modules + /* + * query predicate multipleResolveCall(Call call, int c, PredicateOrBuiltin p) { + * c = + * strictcount(PredicateOrBuiltin p0 | + * resolveCall(call, p0) and + * // aliases are expected to resolve to multiple. + * not exists(p0.(ClasslessPredicate).getAlias()) and + * // overridden predicates may have multiple targets + * not p0.(ClassPredicate).isOverride() + * ) and + * c > 1 and + * resolveCall(call, p) + * } + */ - query predicate multipleResolveCall(Call call, int c, PredicateOrBuiltin p) { - c = - strictcount(PredicateOrBuiltin p0 | - resolveCall(call, p0) and - // aliases are expected to resolve to multiple. - not exists(p0.(ClasslessPredicate).getAlias()) and - // overridden predicates may have multiple targets - not p0.(ClassPredicate).isOverride() - ) and - c > 1 and - resolveCall(call, p) } -} diff --git a/ql/ql/src/codeql_ql/ast/internal/Type.qll b/ql/ql/src/codeql_ql/ast/internal/Type.qll index a4284ec2021..1720388da55 100644 --- a/ql/ql/src/codeql_ql/ast/internal/Type.qll +++ b/ql/ql/src/codeql_ql/ast/internal/Type.qll @@ -355,11 +355,14 @@ module TyConsistency { ) } - query predicate multipleResolve(TypeExpr te, int c, Type t) { - c = strictcount(Type t0 | resolveTypeExpr(te, t0)) and - c > 1 and - resolveTypeExpr(te, t) - } + // This can happen with parameterized modules. + /* + * query predicate multipleResolve(TypeExpr te, int c, Type t) { + * c = strictcount(Type t0 | resolveTypeExpr(te, t0)) and + * c > 1 and + * resolveTypeExpr(te, t) + * } + */ query predicate multiplePrimitives(TypeExpr te, int c, PrimitiveType t) { c = strictcount(PrimitiveType t0 | resolveTypeExpr(te, t0)) and