From 6b3d863f700fde77f777cc68e21b0626a5f3f8ce Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 16 Jan 2026 11:11:50 +0100 Subject: [PATCH] Rust: Remove trait parameter from `canonicalDynTraitTypeAbstraction` --- .../rust/internal/typeinference/TypeAbstraction.qll | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/TypeAbstraction.qll b/rust/ql/lib/codeql/rust/internal/typeinference/TypeAbstraction.qll index 1f9dd0b44b0..d5163be1b6e 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/TypeAbstraction.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/TypeAbstraction.qll @@ -33,8 +33,10 @@ private int idOfDynTraitTypeRepr(DynTraitTypeRepr node) { } /** Holds if `dt` is the (arbitrarily chosen) canonical dyn trait type abstraction for `trait`. */ -private predicate canonicalDynTraitTypeAbstraction(DynTraitTypeRepr dt, Trait trait) { - dt = min(DynTraitTypeRepr d | d.getTrait() = trait | d order by idOfDynTraitTypeRepr(d)) +private predicate canonicalDynTraitTypeAbstraction(DynTraitTypeRepr dt) { + exists(Trait trait | + dt = min(DynTraitTypeRepr d | d.getTrait() = trait | d order by idOfDynTraitTypeRepr(d)) + ) } final class DynTypeAbstraction extends TypeAbstraction, DynTraitTypeRepr { @@ -42,7 +44,7 @@ final class DynTypeAbstraction extends TypeAbstraction, DynTraitTypeRepr { // We pick a "canonical" `dyn Trait` in order to avoid including multiple // entries in `conditionSatisfiesConstraint` with the exact same effect when // `dyn Trait` occurs multiple times for the same trait. - canonicalDynTraitTypeAbstraction(this, this.getTrait()) + canonicalDynTraitTypeAbstraction(this) } override TypeParameter getATypeParameter() {