Skip to content

Commit 72560e1

Browse files
committed
parser: show a helpful note on unexpected inner comment
Fixes: #30318.
1 parent 3157691 commit 72560e1

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/libsyntax/parse/attr.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ impl<'a> Parser<'a> {
3535
self.span.hi
3636
);
3737
if attr.node.style != ast::AttrStyle::Outer {
38-
return Err(self.fatal("expected outer comment"));
38+
let mut err = self.fatal("expected outer doc comment");
39+
err.note("inner doc comments like this (starting with \
40+
`//!` or `/*!`) can only appear before items");
41+
return Err(err);
3942
}
4043
attrs.push(attr);
4144
self.bump();

src/test/parse-fail/issue-30318.rs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// compile-flags: -Z parse-only
12+
13+
fn foo() { }
14+
15+
//! Misplaced comment...
16+
//~^ ERROR expected outer doc comment
17+
//~| NOTE inner doc comments like this (starting with `//!` or `/*!`) can only appear before items
18+
19+
fn main() { }

0 commit comments

Comments
 (0)