diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2018-03-31 14:49:56 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2018-04-16 23:33:43 +0200 |
| commit | 035ec5bbb62c2cef64840389508707da5febeb8b (patch) | |
| tree | 20f6c104ea30733a26fc3b37b80dd633dcca06c6 | |
| parent | 49317cd511fbb60178bd5122e484609568938468 (diff) | |
| download | rust-035ec5bbb62c2cef64840389508707da5febeb8b.tar.gz rust-035ec5bbb62c2cef64840389508707da5febeb8b.zip | |
Add warning if a resolution failed
| -rw-r--r-- | src/bootstrap/test.rs | 35 | ||||
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 8 |
2 files changed, 43 insertions, 0 deletions
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index 29c8cd1568a..e7610976f8e 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -514,6 +514,41 @@ impl Step for RustdocJS { } } +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct RustdocUi { + pub host: Interned<String>, + pub target: Interned<String>, + pub compiler: Compiler, +} + +impl Step for RustdocUi { + type Output = (); + const DEFAULT: bool = true; + const ONLY_HOSTS: bool = true; + + fn should_run(run: ShouldRun) -> ShouldRun { + run.path("src/test/rustdoc-ui") + } + + fn make_run(run: RunConfig) { + let compiler = run.builder.compiler(run.builder.top_stage, run.host); + run.builder.ensure(RustdocUi { + host: run.host, + target: run.target, + compiler, + }); + } + + fn run(self, builder: &Builder) { + builder.ensure(Compiletest { + compiler: self.compiler, + target: self.target, + mode: "ui", + suite: "rustdoc-ui", + }) + } +} + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub struct Tidy; diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index da8085d84c3..443caa7618d 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1178,6 +1178,10 @@ enum PathKind { Type, } +fn resolution_failure(cx: &DocContext, path_str: &str) { + cx.sess().warn(&format!("[{}] cannot be resolved, ignoring it...", path_str)); +} + impl Clean<Attributes> for [ast::Attribute] { fn clean(&self, cx: &DocContext) -> Attributes { let mut attrs = Attributes::from_ast(cx.sess().diagnostic(), self); @@ -1228,6 +1232,7 @@ impl Clean<Attributes> for [ast::Attribute] { if let Ok(def) = resolve(cx, path_str, true) { def } else { + resolution_failure(cx, path_str); // this could just be a normal link or a broken link // we could potentially check if something is // "intra-doc-link-like" and warn in that case @@ -1238,6 +1243,7 @@ impl Clean<Attributes> for [ast::Attribute] { if let Ok(def) = resolve(cx, path_str, false) { def } else { + resolution_failure(cx, path_str); // this could just be a normal link continue; } @@ -1282,6 +1288,7 @@ impl Clean<Attributes> for [ast::Attribute] { } else if let Ok(value_def) = resolve(cx, path_str, true) { value_def } else { + resolution_failure(cx, path_str); // this could just be a normal link continue; } @@ -1290,6 +1297,7 @@ impl Clean<Attributes> for [ast::Attribute] { if let Some(def) = macro_resolve(cx, path_str) { (def, None) } else { + resolution_failure(cx, path_str); continue } } |
