From a709e029df959efa9c0aa73f42cbe972fc26c5b6 Mon Sep 17 00:00:00 2001 From: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> Date: Thu, 6 Jun 2024 17:35:40 -0400 Subject: Update capability-generator-main.cpp (#4295) fixes: #4293 Currently the code does: ``` void inclusiveJoinConjunction(CapabilitySharedContext& context, CapabilityConjunction& c, List& toAddAfter) { if (c.isImpossible()) return; for (auto& conjunction : conjunctions) { if (c.implies(conjunction)) return; } ``` This is incorrect because it means that "if the set we are going to add is a super set of an element, don't add it". This does not make sense since inclusive join is meant to be 'additive' of super sets. Correct behavior code: ``` void inclusiveJoinConjunction(CapabilitySharedContext& context, CapabilityConjunction& c, List& toAddAfter) { if (c.isImpossible()) return; for (auto& conjunction : conjunctions) { if (conjunction.implies(c)) return; } ``` This is correct behavior because it means that: "if the set we are going to add is a sub set of an element, ignore it". This makes sense since inclusive join can then add super sets in-place of subsets --- tools/slang-capability-generator/capability-generator-main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/slang-capability-generator/capability-generator-main.cpp b/tools/slang-capability-generator/capability-generator-main.cpp index 6a299d91f..e31822e05 100644 --- a/tools/slang-capability-generator/capability-generator-main.cpp +++ b/tools/slang-capability-generator/capability-generator-main.cpp @@ -517,7 +517,7 @@ struct CapabilityDisjunction return; for (auto& conjunction : conjunctions) { - if (c.implies(conjunction)) + if (conjunction.implies(c)) return; } for (Index i = 0; i < conjunctions.getCount();) -- cgit v1.2.3