From 69a2ea52a729f86d6e03124ec834c561e3356c10 Mon Sep 17 00:00:00 2001 From: donmai-me <71143298+donmai-me@users.noreply.github.com> Date: Wed, 9 Oct 2024 15:41:16 +0800 Subject: [PATCH] feat: Distinguish between methods and functions in error messages (#344) --- CONTRIBUTORS.md | 1 + libs/pavexc/src/rustdoc/queries.rs | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d59f4ef73..5203af6fc 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -14,3 +14,4 @@ We contributors to Pavex: * Jan Ehrhardt (@jehrhardt) * Lukas Slanius (@bosukas) * Ben Wishovich (@benwis) +* Donmai (@donmai-me) diff --git a/libs/pavexc/src/rustdoc/queries.rs b/libs/pavexc/src/rustdoc/queries.rs index 29d8ebcdb..37ae0080e 100644 --- a/libs/pavexc/src/rustdoc/queries.rs +++ b/libs/pavexc/src/rustdoc/queries.rs @@ -1114,8 +1114,16 @@ impl RustdocKindExt for ItemEnum { ItemEnum::StructField(_) => "a struct field", ItemEnum::Enum(_) => "an enum", ItemEnum::Variant(_) => "an enum variant", - // TODO: this could also be a method! How do we find out? - ItemEnum::Function(_) => "a function", + ItemEnum::Function(func) => { + let mut func_kind = "a function"; + if let Some((param, _)) = func.decl.inputs.first() { + if param == "self" { + func_kind = "a method"; + } + } + + func_kind + } ItemEnum::Trait(_) => "a trait", ItemEnum::TraitAlias(_) => "a trait alias", ItemEnum::Impl(_) => "an impl block",