diff options
| author | Rune Tynan <runetynan@gmail.com> | 2021-01-23 20:37:56 -0500 |
|---|---|---|
| committer | Rune Tynan <runetynan@gmail.com> | 2021-01-28 23:24:12 -0500 |
| commit | a2f5c72a2d5e27a617e4d2dcca1053b0c34b36ed (patch) | |
| tree | ebbf9897cf593d0def9ba53693bac330a30241c8 | |
| parent | 74500b99783d126e330184f0392a78f8b93b73ef (diff) | |
| download | rust-a2f5c72a2d5e27a617e4d2dcca1053b0c34b36ed.tar.gz rust-a2f5c72a2d5e27a617e4d2dcca1053b0c34b36ed.zip | |
Fix has_body for trait methods
| -rw-r--r-- | src/librustdoc/json/conversions.rs | 20 | ||||
| -rw-r--r-- | src/test/rustdoc-json/traits/has_body.rs | 22 |
2 files changed, 31 insertions, 11 deletions
diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index b2e5c8834b8..438a8d57cc2 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -162,8 +162,8 @@ impl From<clean::ItemKind> for ItemEnum { ForeignFunctionItem(f) => ItemEnum::FunctionItem(f.into()), TraitItem(t) => ItemEnum::TraitItem(t.into()), TraitAliasItem(t) => ItemEnum::TraitAliasItem(t.into()), - MethodItem(m, _) => ItemEnum::MethodItem(m.into()), - TyMethodItem(m) => ItemEnum::MethodItem(m.into()), + MethodItem(m, _) => ItemEnum::MethodItem(from_function_method(m, true)), + TyMethodItem(m) => ItemEnum::MethodItem(from_function_method(m, false)), ImplItem(i) => ItemEnum::ImplItem(i.into()), StaticItem(s) => ItemEnum::StaticItem(s.into()), ForeignStaticItem(s) => ItemEnum::StaticItem(s.into()), @@ -435,15 +435,13 @@ impl From<clean::Impl> for Impl { } } -impl From<clean::Function> for Method { - fn from(function: clean::Function) -> Self { - let clean::Function { header, decl, generics, all_types: _, ret_types: _ } = function; - Method { - decl: decl.into(), - generics: generics.into(), - header: stringify_header(&header), - has_body: true, - } +crate fn from_function_method(function: clean::Function, has_body: bool) -> Method { + let clean::Function { header, decl, generics, all_types: _, ret_types: _ } = function; + Method { + decl: decl.into(), + generics: generics.into(), + header: stringify_header(&header), + has_body, } } diff --git a/src/test/rustdoc-json/traits/has_body.rs b/src/test/rustdoc-json/traits/has_body.rs new file mode 100644 index 00000000000..853be19a387 --- /dev/null +++ b/src/test/rustdoc-json/traits/has_body.rs @@ -0,0 +1,22 @@ + +// @has has_body.json "$.index[*][?(@.name=='Foo')]" +pub trait Foo { + // @has - "$.index[*][?(@.name=='no_self')].inner.has_body" false + fn no_self(); + // @has - "$.index[*][?(@.name=='move_self')].inner.has_body" false + fn move_self(self); + // @has - "$.index[*][?(@.name=='ref_self')].inner.has_body" false + fn ref_self(&self); + + // @has - "$.index[*][?(@.name=='no_self_def')].inner.has_body" true + fn no_self_def() {} + // @has - "$.index[*][?(@.name=='move_self_def')].inner.has_body" true + fn move_self_def(self) {} + // @has - "$.index[*][?(@.name=='ref_self_def')].inner.has_body" true + fn ref_self_def(&self) {} +} + +pub trait Bar: Clone { + // @has - "$.index[*][?(@.name=='method')].inner.has_body" false + fn method(&self, param: usize); +} |
