diff options
| author | Chris Morgan <me@chrismorgan.info> | 2014-02-27 12:16:18 +1100 |
|---|---|---|
| committer | Chris Morgan <me@chrismorgan.info> | 2014-02-27 12:16:18 +1100 |
| commit | e6b032a9efa4df2932bd6999c4c9dc7a74a12e24 (patch) | |
| tree | 1c6233cfca75c3d2866a549862b12601785aa0b6 | |
| parent | b4d923852e959e1bb79ebfa12e5951caee1a95b2 (diff) | |
| download | rust-e6b032a9efa4df2932bd6999c4c9dc7a74a12e24.tar.gz rust-e6b032a9efa4df2932bd6999c4c9dc7a74a12e24.zip | |
Fix a pretty printer crash on `/***`.
The pretty printer was treating block comments with more than two asterisks after the first slash (e.g. `/***`) as doc comments (which are attributes), whereas in actual fact they are just regular comments.
| -rw-r--r-- | src/libsyntax/parse/comments.rs | 2 | ||||
| -rw-r--r-- | src/test/pretty/block-comment-multiple-asterisks.rs | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/libsyntax/parse/comments.rs b/src/libsyntax/parse/comments.rs index e0ae9ce2812..bd1c4f9babb 100644 --- a/src/libsyntax/parse/comments.rs +++ b/src/libsyntax/parse/comments.rs @@ -260,7 +260,7 @@ fn read_block_comment(rdr: &StringReader, let mut curr_line = ~"/*"; // doc-comments are not really comments, they are attributes - if rdr.curr_is('*') || rdr.curr_is('!') { + if (rdr.curr_is('*') && !nextch_is(rdr, '*')) || rdr.curr_is('!') { while !(rdr.curr_is('*') && nextch_is(rdr, '/')) && !is_eof(rdr) { curr_line.push_char(rdr.curr.get().unwrap()); bump(rdr); diff --git a/src/test/pretty/block-comment-multiple-asterisks.rs b/src/test/pretty/block-comment-multiple-asterisks.rs new file mode 100644 index 00000000000..f9f657fa8e2 --- /dev/null +++ b/src/test/pretty/block-comment-multiple-asterisks.rs @@ -0,0 +1,14 @@ +// Copyright 2014 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. + +// pp-exact +/*** +More than two asterisks means that it isn't a doc comment. +*/ |
