Rust: Make AnyTraitFn abstract

This commit is contained in:
Simon Friis Vindum
2026-01-20 08:49:27 +01:00
parent 78b88d3a44
commit 75cab960e2

View File

@@ -144,17 +144,19 @@ class FutureTrait extends Trait {
}
/** A function trait `FnOnce`, `FnMut`, or `Fn`. */
class AnyFnTrait extends Trait {
abstract private class AnyFnTraitImpl extends Trait {
/** Gets the `Args` type parameter of this trait. */
TypeParam getTypeParam() { result = this.getGenericParamList().getGenericParam(0) }
}
final class AnyFnTrait = AnyFnTraitImpl;
/**
* The [`FnOnce` trait][1].
*
* [1]: https://doc.rust-lang.org/std/ops/trait.FnOnce.html
*/
class FnOnceTrait extends AnyFnTrait {
class FnOnceTrait extends AnyFnTraitImpl {
pragma[nomagic]
FnOnceTrait() { this.getCanonicalPath() = "core::ops::function::FnOnce" }
@@ -168,7 +170,7 @@ class FnOnceTrait extends AnyFnTrait {
*
* [1]: https://doc.rust-lang.org/std/ops/trait.FnMut.html
*/
class FnMutTrait extends AnyFnTrait {
class FnMutTrait extends AnyFnTraitImpl {
pragma[nomagic]
FnMutTrait() { this.getCanonicalPath() = "core::ops::function::FnMut" }
}
@@ -178,7 +180,7 @@ class FnMutTrait extends AnyFnTrait {
*
* [1]: https://doc.rust-lang.org/std/ops/trait.Fn.html
*/
class FnTrait extends AnyFnTrait {
class FnTrait extends AnyFnTraitImpl {
pragma[nomagic]
FnTrait() { this.getCanonicalPath() = "core::ops::function::Fn" }
}