diff options
| author | bors <bors@rust-lang.org> | 2015-02-27 02:58:15 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-02-27 02:58:15 +0000 |
| commit | e5cd6534c1775531b4cfe374a5c81a5a2dd899b0 (patch) | |
| tree | 5a1e1c7d6bd9fdf271573a7c7413391c75b8647f | |
| parent | b47aebe3fc2da06c760fd8ea19f84cbc41d34831 (diff) | |
| parent | 695846331b1f0f39ce2fc6dff90edce03c958d12 (diff) | |
| download | rust-e5cd6534c1775531b4cfe374a5c81a5a2dd899b0.tar.gz rust-e5cd6534c1775531b4cfe374a5c81a5a2dd899b0.zip | |
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.
| -rw-r--r-- | src/etc/htmldocck.py | 15 | ||||
| -rw-r--r-- | src/librustdoc/clean/inline.rs | 3 | ||||
| -rw-r--r-- | src/test/run-make/rustdoc-extern-default-method/Makefile | 6 | ||||
| -rw-r--r-- | src/test/run-make/rustdoc-extern-default-method/ext.rs | 21 | ||||
| -rw-r--r-- | src/test/run-make/rustdoc-extern-default-method/lib.rs | 14 |
5 files changed, 59 insertions, 0 deletions
diff --git a/src/etc/htmldocck.py b/src/etc/htmldocck.py index 22792ff7635..a212e3a0435 100644 --- a/src/etc/htmldocck.py +++ b/src/etc/htmldocck.py @@ -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)) diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index 24b9d03400c..2bb4424822a 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -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 { diff --git a/src/test/run-make/rustdoc-extern-default-method/Makefile b/src/test/run-make/rustdoc-extern-default-method/Makefile new file mode 100644 index 00000000000..ffc4a08f801 --- /dev/null +++ b/src/test/run-make/rustdoc-extern-default-method/Makefile @@ -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 diff --git a/src/test/run-make/rustdoc-extern-default-method/ext.rs b/src/test/run-make/rustdoc-extern-default-method/ext.rs new file mode 100644 index 00000000000..861562753f9 --- /dev/null +++ b/src/test/run-make/rustdoc-extern-default-method/ext.rs @@ -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) {} +} diff --git a/src/test/run-make/rustdoc-extern-default-method/lib.rs b/src/test/run-make/rustdoc-extern-default-method/lib.rs new file mode 100644 index 00000000000..df92764dc9a --- /dev/null +++ b/src/test/run-make/rustdoc-extern-default-method/lib.rs @@ -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; |
