// Copyright 2017 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.

#![deny(unused_doc_comments)]

fn foo() {
    /// a //~ ERROR doc comment not used by rustdoc
    let x = 12;

    /// b //~ doc comment not used by rustdoc
    match x {
        /// c //~ ERROR doc comment not used by rustdoc
        1 => {},
        _ => {}
    }

    /// foo //~ ERROR doc comment not used by rustdoc
    unsafe {}
}

fn main() {
    foo();
}
