Skip to content
Permalink
Browse files

tidy: Fix false positives from long URLs

  • Loading branch information...
petrochenkov committed Apr 27, 2019
1 parent d4a32d5 commit 2ae7b0c8983b377d1c11ab63f13acc9df0d8e745
@@ -1,5 +1,3 @@
# ignore-tidy-linelength

set -ex

curl -fo /usr/local/bin/sccache \
@@ -1,4 +1,3 @@
// ignore-tidy-linelength
#![allow(non_snake_case)]

// Error messages for EXXXX errors.
@@ -1,4 +1,3 @@
// ignore-tidy-linelength
// ignore-tidy-filelength

#![allow(non_snake_case)]
@@ -38,7 +38,7 @@ when executed when assertions are disabled.
Use llvm::report_fatal_error for increased robustness.";

/// Parser states for `line_is_url`.
#[derive(PartialEq)]
#[derive(Clone, Copy, PartialEq)]
#[allow(non_camel_case_types)]
enum LIUState {
EXP_COMMENT_START,
@@ -56,26 +56,31 @@ enum LIUState {
fn line_is_url(line: &str) -> bool {
use self::LIUState::*;
let mut state: LIUState = EXP_COMMENT_START;
let is_url = |w: &str| w.starts_with("http://") || w.starts_with("https://");

for tok in line.split_whitespace() {
match (state, tok) {
(EXP_COMMENT_START, "//") => state = EXP_LINK_LABEL_OR_URL,
(EXP_COMMENT_START, "///") => state = EXP_LINK_LABEL_OR_URL,
(EXP_COMMENT_START, "//") |
(EXP_COMMENT_START, "///") |
(EXP_COMMENT_START, "//!") => state = EXP_LINK_LABEL_OR_URL,

(EXP_LINK_LABEL_OR_URL, w)
if w.len() >= 4 && w.starts_with('[') && w.ends_with("]:")
=> state = EXP_URL,

(EXP_LINK_LABEL_OR_URL, w)
if w.starts_with("http://") || w.starts_with("https://")
if is_url(w)
=> state = EXP_END,

(EXP_URL, w)
if w.starts_with("http://") || w.starts_with("https://") || w.starts_with("../")
if is_url(w) || w.starts_with("../")
=> state = EXP_END,

(_, _) => return false,
(_, w)
if w.len() > COLS && is_url(w)
=> state = EXP_END,

(_, _) => {}
}
}

0 comments on commit 2ae7b0c

Please sign in to comment.
You can’t perform that action at this time.