//! This file tests for the `DOC_MARKDOWN` lint, specifically cases
//! where ticks are unbalanced (see issue #6753).
//@no-rustfix
#![allow(dead_code)]
#![warn(clippy::doc_markdown)]

/// This is a doc comment with `unbalanced_tick marks and several words that
//~^ ERROR: backticks are unbalanced
/// should be `encompassed_by` tick marks because they `contain_underscores`.
/// Because of the initial `unbalanced_tick` pair, the error message is
/// very `confusing_and_misleading`.
fn main() {}

/// This paragraph has `unbalanced_tick marks and should stop_linting.
//~^ ERROR: backticks are unbalanced
///
/// This paragraph is fine and should_be linted normally.
//~^ ERROR: item in documentation is missing backticks
///
/// Double unbalanced backtick from ``here to here` should lint.
//~^ ERROR: backticks are unbalanced
///
/// Double balanced back ticks ``start end`` is fine.
fn multiple_paragraphs() {}

/// ```
/// // Unbalanced tick mark in code block shouldn't warn:
/// `
/// ```
fn in_code_block() {}

/// # `Fine`
///
/// ## not_fine
//~^ ERROR: item in documentation is missing backticks
///
/// ### `unbalanced
//~^ ERROR: backticks are unbalanced
///
/// - This `item has unbalanced tick marks
//~^ ERROR: backticks are unbalanced
/// - This item needs backticks_here
//~^ ERROR: item in documentation is missing backticks
fn other_markdown() {}

#[rustfmt::skip]
/// - ```rust
///   /// `lol`
///   pub struct Struct;
///   ```
fn issue_7421() {}

/// `
//~^ ERROR: backticks are unbalanced
fn escape_0() {}

/// Escaped \` backticks don't count.
fn escape_1() {}

/// Escaped \` \` backticks don't count.
fn escape_2() {}

/// Escaped \` ` backticks don't count, but unescaped backticks do.
//~^ ERROR: backticks are unbalanced
fn escape_3() {}

/// Backslashes ` \` within code blocks don't count.
fn escape_4() {}
