Auto merge of #39204 - ollie27:linkchecker_fragment, r=alexcrichton
linkchecker: Fix checking links which are just fragments
Also fix a typo which linkchecker should have caught.
It was broken by 31a8638e5e
.
r? @alexcrichton
This commit is contained in:
commit
c2a0d1ba11
2 changed files with 14 additions and 15 deletions
|
@ -650,15 +650,15 @@ Rust syntax is restricted in two ways:
|
||||||
|
|
||||||
[RFC 550]: https://github.com/rust-lang/rfcs/blob/master/text/0550-macro-future-proofing.md
|
[RFC 550]: https://github.com/rust-lang/rfcs/blob/master/text/0550-macro-future-proofing.md
|
||||||
|
|
||||||
## Procedrual Macros
|
## Procedural Macros
|
||||||
|
|
||||||
"Procedrual macros" are the second way to implement a macro. For now, the only
|
"Procedural macros" are the second way to implement a macro. For now, the only
|
||||||
thing they can be used for is to implement derive on your own types. See
|
thing they can be used for is to implement derive on your own types. See
|
||||||
[the book][procedural macros] for a tutorial.
|
[the book][procedural macros] for a tutorial.
|
||||||
|
|
||||||
Procedural macros involve a few different parts of the language and its
|
Procedural macros involve a few different parts of the language and its
|
||||||
standard libraries. First is the `proc_macro` crate, included with Rust,
|
standard libraries. First is the `proc_macro` crate, included with Rust,
|
||||||
that defines an interface for building a procedrual macro. The
|
that defines an interface for building a procedural macro. The
|
||||||
`#[proc_macro_derive(Foo)]` attribute is used to mark the the deriving
|
`#[proc_macro_derive(Foo)]` attribute is used to mark the the deriving
|
||||||
function. This function must have the type signature:
|
function. This function must have the type signature:
|
||||||
|
|
||||||
|
|
|
@ -151,9 +151,6 @@ fn check(cache: &mut Cache,
|
||||||
}
|
}
|
||||||
let mut parts = url.splitn(2, "#");
|
let mut parts = url.splitn(2, "#");
|
||||||
let url = parts.next().unwrap();
|
let url = parts.next().unwrap();
|
||||||
if url.is_empty() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
let fragment = parts.next();
|
let fragment = parts.next();
|
||||||
let mut parts = url.splitn(2, "?");
|
let mut parts = url.splitn(2, "?");
|
||||||
let url = parts.next().unwrap();
|
let url = parts.next().unwrap();
|
||||||
|
@ -161,6 +158,7 @@ fn check(cache: &mut Cache,
|
||||||
// Once we've plucked out the URL, parse it using our base url and
|
// Once we've plucked out the URL, parse it using our base url and
|
||||||
// then try to extract a file path.
|
// then try to extract a file path.
|
||||||
let mut path = file.to_path_buf();
|
let mut path = file.to_path_buf();
|
||||||
|
if !url.is_empty() {
|
||||||
path.pop();
|
path.pop();
|
||||||
for part in Path::new(url).components() {
|
for part in Path::new(url).components() {
|
||||||
match part {
|
match part {
|
||||||
|
@ -171,6 +169,7 @@ fn check(cache: &mut Cache,
|
||||||
Component::Normal(s) => { path.push(s); }
|
Component::Normal(s) => { path.push(s); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Alright, if we've found a file name then this file had better
|
// Alright, if we've found a file name then this file had better
|
||||||
// exist! If it doesn't then we register and print an error.
|
// exist! If it doesn't then we register and print an error.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue