Skip to content

Commit 27c85c3

Browse files
author
Jakub Wieczorek
committed
---
yaml --- r: 134331 b: refs/heads/auto c: 3514737 h: refs/heads/master i: 134329: 3c799fa 134327: 1bc0da4 v: v3
1 parent 2722484 commit 27c85c3

File tree

11 files changed

+27
-118
lines changed

11 files changed

+27
-118
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1313
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1414
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1515
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
16-
refs/heads/auto: 9c39b6c564745d4e316c16b6b8bf04675520253b
16+
refs/heads/auto: 3514737b4cf1d91dc8c7b61c95f2f20d3b386d1c
1717
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1818
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1919
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/src/libsyntax/parse/parser.rs

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3480,32 +3480,22 @@ impl<'a> Parser<'a> {
34803480
})
34813481
}
34823482

3483-
/// Get an expected item after attributes error message.
3484-
fn expected_item_err(attrs: &[Attribute]) -> &'static str {
3485-
match attrs.last() {
3486-
Some(&Attribute { node: ast::Attribute_ { is_sugared_doc: true, .. }, .. }) => {
3487-
"expected item after doc comment"
3488-
}
3489-
_ => "expected item after attributes",
3490-
}
3491-
}
3492-
34933483
/// Parse a statement. may include decl.
34943484
/// Precondition: any attributes are parsed already
34953485
pub fn parse_stmt(&mut self, item_attrs: Vec<Attribute>) -> P<Stmt> {
34963486
maybe_whole!(self, NtStmt);
34973487

3498-
fn check_expected_item(p: &mut Parser, attrs: &[Attribute]) {
3488+
fn check_expected_item(p: &mut Parser, found_attrs: bool) {
34993489
// If we have attributes then we should have an item
3500-
if !attrs.is_empty() {
3490+
if found_attrs {
35013491
let last_span = p.last_span;
3502-
p.span_err(last_span, Parser::expected_item_err(attrs));
3492+
p.span_err(last_span, "expected item after attributes");
35033493
}
35043494
}
35053495

35063496
let lo = self.span.lo;
35073497
if self.is_keyword(keywords::Let) {
3508-
check_expected_item(self, item_attrs.as_slice());
3498+
check_expected_item(self, !item_attrs.is_empty());
35093499
self.expect_keyword(keywords::Let);
35103500
let decl = self.parse_let();
35113501
P(spanned(lo, decl.span.hi, StmtDecl(decl, ast::DUMMY_NODE_ID)))
@@ -3514,7 +3504,7 @@ impl<'a> Parser<'a> {
35143504
&& self.look_ahead(1, |t| *t == token::NOT) {
35153505
// it's a macro invocation:
35163506

3517-
check_expected_item(self, item_attrs.as_slice());
3507+
check_expected_item(self, !item_attrs.is_empty());
35183508

35193509
// Potential trouble: if we allow macros with paths instead of
35203510
// idents, we'd need to look ahead past the whole path here...
@@ -3571,7 +3561,6 @@ impl<'a> Parser<'a> {
35713561

35723562
} else {
35733563
let found_attrs = !item_attrs.is_empty();
3574-
let item_err = Parser::expected_item_err(item_attrs.as_slice());
35753564
match self.parse_item_or_view_item(item_attrs, false) {
35763565
IoviItem(i) => {
35773566
let hi = i.span.hi;
@@ -3586,10 +3575,7 @@ impl<'a> Parser<'a> {
35863575
self.fatal("foreign items are not allowed here");
35873576
}
35883577
IoviNone(_) => {
3589-
if found_attrs {
3590-
let last_span = self.last_span;
3591-
self.span_err(last_span, item_err);
3592-
}
3578+
check_expected_item(self, found_attrs);
35933579

35943580
// Remainder are line-expr stmts.
35953581
let e = self.parse_expr_res(RestrictionStmtExpr);
@@ -3667,8 +3653,7 @@ impl<'a> Parser<'a> {
36673653
token::SEMI => {
36683654
if !attributes_box.is_empty() {
36693655
let last_span = self.last_span;
3670-
self.span_err(last_span,
3671-
Parser::expected_item_err(attributes_box.as_slice()));
3656+
self.span_err(last_span, "expected item after attributes");
36723657
attributes_box = Vec::new();
36733658
}
36743659
self.bump(); // empty
@@ -3754,8 +3739,7 @@ impl<'a> Parser<'a> {
37543739

37553740
if !attributes_box.is_empty() {
37563741
let last_span = self.last_span;
3757-
self.span_err(last_span,
3758-
Parser::expected_item_err(attributes_box.as_slice()));
3742+
self.span_err(last_span, "expected item after attributes");
37593743
}
37603744

37613745
let hi = self.span.hi;
@@ -4701,8 +4685,7 @@ impl<'a> Parser<'a> {
47014685
if first && attrs_remaining_len > 0u {
47024686
// We parsed attributes for the first item but didn't find it
47034687
let last_span = self.last_span;
4704-
self.span_err(last_span,
4705-
Parser::expected_item_err(attrs_remaining.as_slice()));
4688+
self.span_err(last_span, "expected item after attributes");
47064689
}
47074690

47084691
ast::Mod {
@@ -4936,10 +4919,10 @@ impl<'a> Parser<'a> {
49364919
items: _,
49374920
foreign_items: foreign_items
49384921
} = self.parse_foreign_items(first_item_attrs, true);
4939-
if !attrs_remaining.is_empty() {
4922+
if ! attrs_remaining.is_empty() {
49404923
let last_span = self.last_span;
49414924
self.span_err(last_span,
4942-
Parser::expected_item_err(attrs_remaining.as_slice()));
4925+
"expected item after attributes");
49434926
}
49444927
assert!(self.token == token::RBRACE);
49454928
ast::ForeignMod {
@@ -5069,7 +5052,7 @@ impl<'a> Parser<'a> {
50695052
fn parse_enum_def(&mut self, _generics: &ast::Generics) -> EnumDef {
50705053
let mut variants = Vec::new();
50715054
let mut all_nullary = true;
5072-
let mut have_disr = false;
5055+
let mut any_disr = None;
50735056
while self.token != token::RBRACE {
50745057
let variant_attrs = self.parse_outer_attributes();
50755058
let vlo = self.span.lo;
@@ -5101,8 +5084,8 @@ impl<'a> Parser<'a> {
51015084
}
51025085
kind = TupleVariantKind(args);
51035086
} else if self.eat(&token::EQ) {
5104-
have_disr = true;
51055087
disr_expr = Some(self.parse_expr());
5088+
any_disr = disr_expr.as_ref().map(|expr| expr.span);
51065089
kind = TupleVariantKind(args);
51075090
} else {
51085091
kind = TupleVariantKind(Vec::new());
@@ -5121,9 +5104,11 @@ impl<'a> Parser<'a> {
51215104
if !self.eat(&token::COMMA) { break; }
51225105
}
51235106
self.expect(&token::RBRACE);
5124-
if have_disr && !all_nullary {
5125-
self.fatal("discriminator values can only be used with a c-like \
5126-
enum");
5107+
match any_disr {
5108+
Some(disr_span) if !all_nullary =>
5109+
self.span_err(disr_span,
5110+
"discriminator values can only be used with a c-like enum"),
5111+
_ => ()
51275112
}
51285113

51295114
ast::EnumDef { variants: variants }

branches/auto/src/test/compile-fail/attr-before-eof.rs

Lines changed: 0 additions & 11 deletions
This file was deleted.

branches/auto/src/test/compile-fail/doc-before-attr.rs

Lines changed: 0 additions & 12 deletions
This file was deleted.

branches/auto/src/test/compile-fail/doc-before-eof.rs

Lines changed: 0 additions & 11 deletions
This file was deleted.

branches/auto/src/test/compile-fail/doc-before-extern-rbrace.rs

Lines changed: 0 additions & 14 deletions
This file was deleted.

branches/auto/src/test/compile-fail/doc-before-rbrace.rs

Lines changed: 0 additions & 14 deletions
This file was deleted.

branches/auto/src/test/compile-fail/doc-before-semi.rs

Lines changed: 0 additions & 15 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
22
// file at the top-level directory of this distribution and at
33
// http://rust-lang.org/COPYRIGHT.
44
//
@@ -8,8 +8,11 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
fn main() {
12-
/// hi
13-
println!("hi");
14-
//~^^ ERROR expected item after doc comment
11+
enum X {
12+
A =
13+
b'a' //~ ERROR discriminator values can only be used with a c-like enum
14+
,
15+
B(int)
1516
}
17+
18+
fn main() {}

branches/auto/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
// older versions of GDB too. A more extensive test can be found in
1313
// gdb-pretty-struct-and-enums.rs
1414

15-
// ignore-windows failing on win32 bot
1615
// ignore-tidy-linelength
1716
// ignore-lldb
1817
// ignore-android: FIXME(#10381)

branches/auto/src/test/debuginfo/gdb-pretty-struct-and-enums.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
// ignore-windows failing on win32 bot
1211
// ignore-tidy-linelength
1312
// ignore-lldb
1413
// ignore-android: FIXME(#10381)

0 commit comments

Comments
 (0)