std::unique_ptr<AST::Item> item = parse_item (false);
if (item == nullptr)
{
- Error error (lexer.peek_token ()->get_locus (),
- "failed to parse item in crate");
- add_error (std::move (error));
-
// TODO: should all items be cleared?
items = std::vector<std::unique_ptr<AST::Item>> ();
break;
false => ()
// { dg-error "exprwithoutblock requires comma after match case expression in match arm \\(if not final case\\)" "" { target *-*-* } .-1 }
// { dg-error "unrecognised token .false. for start of item" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
};
}
macro m {}
// { dg-error "unexpected token .\}. - expecting delimiters .for a macro matcher." "" { target *-*-* } .-1 }
// { dg-error "required first macro rule in declarative macro definition could not be parsed" "" { target *-*-* } .-2 }
-// { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
#![feature(decl_macro)]
pub macro hello() [ "Hello" ]
// { dg-error "only braces can be used for a macro transcriber in declarative macro definition" "" { target *-*-* } .-1 }
-// { dg-error "failed to parse item in crate" }
\ No newline at end of file
type F;
type E // { dg-error "failed to parse" }
} // { dg-error "expecting" }
-// { dg-error "failed to parse item in crate" "" { target *-*-* } .-1 }
";
ERROR_TIME
// { dg-error "unrecognised token" "" { target *-*-* } .-1 }
-// { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
// { dg-error {failed to parse if body block expression in if expression} "" { target *-*-* } .-2 }
// { dg-error {could not parse loop body in \(infinite\) loop expression} "" { target *-*-* } .-3 }
// { dg-error {unrecognised token 'integer literal' for start of item} "" { target *-*-* } .-4 }
- // { dg-error {failed to parse item in crate} "" { target *-*-* } .-5 }
} else {
break;
}
a + = 1; // { dg-error "found unexpected token '=' in null denotation" }
// { dg-error {failed to parse statement or expression in block expression} "" { target *-*-* } .-1 }
// { dg-error {unrecognised token 'integer literal' for start of item} "" { target *-*-* } .-2 }
- // { dg-error {failed to parse item in crate} "" { target *-*-* } .-3 }
}
// { dg-error "should be at least 1 pattern" "" { target *-*-* } .-1 }
// { dg-error "failed to parse statement or expression in block expression" "" { target *-*-* } .-2 }
// { dg-error "unrecognised token .=. for start of item" "" { target *-*-* } .-3 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-4 }
{}
}
let a = _ + 123; // { dg-error "use of '_' is not allowed on the right-side of an assignment" }
// { dg-error {failed to parse expression in let statement} "" { target *-*-* } .-1 }
// { dg-error {failed to parse statement or expression in block expression} "" { target *-*-* } .-2 }
- // { dg-error {unrecognised token '\}' for start of item} "" { target *-*-* } .+2 }
- // { dg-error {failed to parse item in crate} "" { target *-*-* } .+1 }
+ // { dg-error {unrecognised token '\}' for start of item} "" { target *-*-* } .+1 }
}
macro_rules! m {
($e:expr $(forbidden)*) => {{}}; // { dg-error "token .identifier. is not allowed after .expr. fragment" }
// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
}
macro_rules! try {
// { dg-error "expecting .identifier. but .try. found" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
() => {};
}
fn main() { )// { dg-error "unexpected closing delimiter .\\). - token tree requires either paired delimiters or non-delimiter tokens" }
// { dg-error "failed to parse token tree in delimited token tree - found .\\)." "" { target *-*-* } .-1 }
- // { dg-error "unexpected token .end of file. - expecting closing delimiter .\}. .for a delimited token tree." "" { target *-*-* } .+3 }
- // { dg-error "unexpected token .end of file. - expecting closing delimiter .\\). .for a macro invocation semi." "" { target *-*-* } .+2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .+1 }
+ // { dg-error "unexpected token .end of file. - expecting closing delimiter .\}. .for a delimited token tree." "" { target *-*-* } .+2 }
+ // { dg-error "unexpected token .end of file. - expecting closing delimiter .\\). .for a macro invocation semi." "" { target *-*-* } .+1 }
($a:expr tok) => {
// { dg-error "token .identifier. is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
$a
};
}
($a:expr $(tok $es:expr)*) => {
// { dg-error "token .identifier. is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
$a
};
}
($($es:expr)* tok) => {
// { dg-error "token .identifier. is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
$a
};
}
($e:expr $f:expr) => {
// { dg-error "fragment is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
$e
};
}
($($e:expr)* $($f:expr)*) => {
// { dg-error "fragment is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
$e
};
}
macro_rules! forbidden_frag {
($t:ty $not_block:ident) => {{}}; // { dg-error "fragment specifier .ident. is not allowed after .ty. fragments" }
// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
}
// { dg-error "failed to parse macro matcher" "" { target *-*-* } .-1 }
// { dg-error "failed to parse macro match" "" { target *-*-* } .-2 }
// { dg-error "required first macro rule" "" { target *-*-* } .-3 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-4 }
}
macro_rules! invalid_after_zeroable {
($e:expr $(,)* forbidden) => {{}}; // { dg-error "token .identifier. is not allowed after .expr. fragment" }
// { dg-error "required first macro rule" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
}
macro_rules! invalid_after_zeroable_multi {
($e:expr $(,)? $(;)* $(=>)? forbidden) => {{}}; // { dg-error "token .identifier. is not allowed after .expr. fragment" }
// { dg-error "required first macro rule" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
}
macro_rules! m {
($e:expr (, parenthesis_forbidden)) => {{}}; // { dg-error "token .\\(. at start of matcher is not allowed after .expr. fragment" }
// { dg-error "required first macro rule" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
}
// Check that "priv" is not in the follow set of :vis.
-// { dg-error "token .priv. is not allowed after .vis. fragment" "#359" { target *-*-* } .+4 }
-// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .+3 }
-// { dg-error "failed to parse item in crate" "" { target *-*-* } .+2 }
+// { dg-error "token .priv. is not allowed after .vis. fragment" "#359" { target *-*-* } .+3 }
+// { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .+2 }
macro_rules! my_mac {
($v:vis priv) => {
$v struct Foo(i32);
default fn f() {
// { dg-error ".default. is only allowed on items within .impl. blocks" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
}
pub(in crate::) struct S;
// { dg-error "expecting ... but .::. found" "" { target *-*-* } .-1 }
-// { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
use A{B};
// { dg-error "unexpected token" "" { target *-*-* } .-1 }
// { dg-error "could not parse use tree" "" { target *-*-* } .-2 }
-// { dg-error "failed to parse item in crate" "" { target *-*-* } 10 }
-// ^^^ TODO: should the above error happen at line 10?
BREAK
// { dg-error "unrecognised token" "" { target *-*-* } .-1 }
-// { dg-error "failed to parse item" "" { target *-*-* } .-2 }
BREAK
// { dg-error "unrecognised token" "" { target *-*-* } .-1 }
-// { dg-error "failed to parse item" "" { target *-*-* } .-2 }
pub fn do_something(*const self) {}
// { dg-error "cannot pass .self. by raw pointer" "" { target *-*-* } .-1 }
// { dg-error "failed to parse inherent impl item in inherent impl" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
}
pub fn do_something(*mut self) {}
// { dg-error "cannot pass .self. by raw pointer" "" { target *-*-* } .-1 }
// { dg-error "failed to parse inherent impl item in inherent impl" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
}
pub fn do_something(*self) {}
// { dg-error "cannot pass .self. by raw pointer" "" { target *-*-* } .-1 }
// { dg-error "failed to parse inherent impl item in inherent impl" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
}
static x = 3; // { dg-error "expecting ':' but '=' found" }
-fn main() {// { dg-error "failed to parse item in crate" }
+fn main() {
let y = x +1;
}
fn () {
// { dg-error {expecting 'identifier' but '\(' found} "" { target *-*-* } .-1 }
// { dg-error {failed to parse inherent impl item in inherent impl} "" { target *-*-* } .-2 }
- // { dg-error {failed to parse item in crate} "" { target *-*-* } .-3 }
}
}