#include "rust-parse.h"
#include "rust-linemap.h"
#include "rust-diagnostics.h"
+#include "rust-token.h"
namespace Rust {
{MATCH_ARROW, COMMA, EQUAL, PIPE, SEMICOLON, COLON, RIGHT_ANGLE,
RIGHT_SHIFT, LEFT_SQUARE, LEFT_CURLY, AS, WHERE}},
{AST::MacroFragSpec::VIS,
- {
- COMMA,
- IDENTIFIER /* FIXME: Other than `priv` */,
- LEFT_PAREN,
- LEFT_SQUARE,
- EXCLAM,
- ASTERISK,
- AMP,
- LOGICAL_AND,
- QUESTION_MARK,
- LIFETIME,
- LEFT_ANGLE,
- LEFT_SHIFT,
- SUPER,
- SELF,
- SELF_ALIAS,
- EXTERN_TOK,
- CRATE,
- UNDERSCORE,
- FOR,
- IMPL,
- FN_TOK,
- UNSAFE,
- TYPEOF,
- DYN
- // FIXME: Add Non kw identifiers
- // FIXME: Add $crate as valid
- }}};
+ {COMMA,
+ IDENTIFIER,
+ LEFT_PAREN,
+ LEFT_SQUARE,
+ EXCLAM,
+ ASTERISK,
+ AMP,
+ LOGICAL_AND,
+ QUESTION_MARK,
+ LIFETIME,
+ LEFT_ANGLE,
+ LEFT_SHIFT,
+ UNDERSCORE,
+ ABSTRACT,
+ AS,
+ ASYNC,
+ AUTO,
+ BECOME,
+ BOX,
+ BREAK,
+ CONST,
+ CONTINUE,
+ CRATE,
+ DO,
+ DYN,
+ ELSE,
+ ENUM_TOK,
+ EXTERN_TOK,
+ FALSE_LITERAL,
+ FINAL_TOK,
+ FN_TOK,
+ FOR,
+ IF,
+ IMPL,
+ IN,
+ LET,
+ LOOP,
+ MACRO,
+ MATCH_TOK,
+ MOD,
+ MOVE,
+ MUT,
+ OVERRIDE_TOK,
+ PUB,
+ REF,
+ RETURN_TOK,
+ SELF_ALIAS,
+ SELF,
+ STATIC_TOK,
+ STRUCT_TOK,
+ SUPER,
+ TRAIT,
+ TRUE_LITERAL,
+ TRY,
+ TYPE,
+ TYPEOF,
+ UNSAFE,
+ UNSIZED,
+ USE,
+ VIRTUAL,
+ WHERE,
+ WHILE,
+ YIELD}}};
Location error_locus = match.get_match_locus ();
std::string kind_str = "fragment";
--- /dev/null
+// 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 }
+macro_rules! my_mac {
+ ($v:vis priv) => {
+ $v struct Foo(i32);
+ }
+}