mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 10:13:54 +00:00
Auto merge of #22765 - sanxiyn:dedup-rustdoc, r=alexcrichton
rustdoc impl item did not include default methods for local crates, but did include them for external crates. This resulted in duplicate methods. Fix so that impl item does not include default methods for external crates. Fix #22595.
This commit is contained in:
commit
e5cd6534c1
@ -96,6 +96,9 @@ There are a number of supported commands:
|
||||
highlights for example. If you want to simply check the presence of
|
||||
given node or attribute, use an empty string (`""`) as a `PATTERN`.
|
||||
|
||||
* `@count PATH XPATH COUNT' checks for the occurrence of given XPath
|
||||
in the given file. The number of occurrences must match the given count.
|
||||
|
||||
All conditions can be negated with `!`. `@!has foo/type.NoSuch.html`
|
||||
checks if the given file does not exist, for example.
|
||||
|
||||
@ -333,6 +336,11 @@ def check_tree_text(tree, path, pat, regexp):
|
||||
return ret
|
||||
|
||||
|
||||
def check_tree_count(tree, path, count):
|
||||
path = normalize_xpath(path)
|
||||
return len(tree.findall(path)) == count
|
||||
|
||||
|
||||
def check(target, commands):
|
||||
cache = CachedFiles(target)
|
||||
for c in commands:
|
||||
@ -360,6 +368,13 @@ def check(target, commands):
|
||||
raise RuntimeError('Invalid number of @{} arguments \
|
||||
at line {}'.format(c.cmd, c.lineno))
|
||||
|
||||
elif c.cmd == 'count': # count test
|
||||
if len(c.args) == 3: # @count <path> <pat> <count> = count test
|
||||
ret = check_tree_count(cache.get_tree(c.args[0]), c.args[1], int(c.args[2]))
|
||||
else:
|
||||
raise RuntimeError('Invalid number of @{} arguments \
|
||||
at line {}'.format(c.cmd, c.lineno))
|
||||
|
||||
elif c.cmd == 'valid-html':
|
||||
raise RuntimeError('Unimplemented @valid-html at line {}'.format(c.lineno))
|
||||
|
||||
|
@ -308,6 +308,9 @@ fn build_impl(cx: &DocContext, tcx: &ty::ctxt,
|
||||
if method.vis != ast::Public && associated_trait.is_none() {
|
||||
return None
|
||||
}
|
||||
if method.provided_source.is_some() {
|
||||
return None
|
||||
}
|
||||
let mut item = method.clean(cx);
|
||||
item.inner = match item.inner.clone() {
|
||||
clean::TyMethodItem(clean::TyMethod {
|
||||
|
6
src/test/run-make/rustdoc-extern-default-method/Makefile
Normal file
6
src/test/run-make/rustdoc-extern-default-method/Makefile
Normal file
@ -0,0 +1,6 @@
|
||||
-include ../tools.mk
|
||||
|
||||
all: lib.rs ext.rs
|
||||
$(HOST_RPATH_ENV) $(RUSTC) ext.rs
|
||||
$(HOST_RPATH_ENV) $(RUSTDOC) -L $(TMPDIR) -w html -o $(TMPDIR)/doc lib.rs
|
||||
$(HTMLDOCCK) $(TMPDIR)/doc lib.rs
|
21
src/test/run-make/rustdoc-extern-default-method/ext.rs
Normal file
21
src/test/run-make/rustdoc-extern-default-method/ext.rs
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![crate_type="lib"]
|
||||
|
||||
pub trait Trait {
|
||||
fn provided(&self) {}
|
||||
}
|
||||
|
||||
pub struct Struct;
|
||||
|
||||
impl Trait for Struct {
|
||||
fn provided(&self) {}
|
||||
}
|
14
src/test/run-make/rustdoc-extern-default-method/lib.rs
Normal file
14
src/test/run-make/rustdoc-extern-default-method/lib.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
extern crate ext;
|
||||
|
||||
// @count lib/struct.Struct.html '//*[@id="method.provided"]' 1
|
||||
pub use ext::Struct;
|
Loading…
Reference in New Issue
Block a user