add a isSignature() predicate to ClasslessPredicate

This commit is contained in:
erik-krogh
2022-08-29 09:16:48 +02:00
parent c225605ed7
commit dda16a0a30
2 changed files with 5 additions and 2 deletions

View File

@@ -521,6 +521,9 @@ class ClasslessPredicate extends TClasslessPredicate, Predicate, ModuleDeclarati
}
override predicate isPrivate() { Predicate.super.isPrivate() }
/** Holds if this classless predicate is a signature predicate with no body. */
predicate isSignature() { not exists(this.getBody()) }
}
/**

View File

@@ -211,7 +211,7 @@ module PredConsistency {
c > 1 and
resolvePredicateExpr(pe, p) and
// parameterized modules are expected to resolve to multiple.
not exists(Predicate sig | not exists(sig.getBody()) and resolvePredicateExpr(pe, sig))
not exists(ClasslessPredicate sig | not sig.isSignature() and resolvePredicateExpr(pe, sig))
}
query predicate multipleResolveCall(Call call, int c, PredicateOrBuiltin p) {
@@ -227,6 +227,6 @@ module PredConsistency {
c > 1 and
resolveCall(call, p) and
// parameterized modules are expected to resolve to multiple.
not exists(Predicate sig | not exists(sig.getBody()) and resolveCall(call, sig))
not exists(ClasslessPredicate sig | not sig.isSignature() and resolveCall(call, sig))
}
}