DefaultASTVisitor::visit (AST::BreakExpr &expr)
{
visit_outer_attrs (expr);
- visit (expr.get_label ());
+ if (expr.has_label ())
+ visit (expr.get_label ());
+
if (expr.has_break_expr ())
visit (expr.get_break_expr ());
}
AST::ContextualASTVisitor::visit (lifetime);
}
+void
+ASTValidation::visit (AST::LoopLabel &label)
+{
+ auto name = label.get_lifetime ().get_lifetime_name ();
+ auto lifetime_name = '\'' + name;
+ auto &keywords = Values::Keywords::keywords;
+ if (keywords.find (name) != keywords.end ())
+ rust_error_at (label.get_locus (), "invalid label name %qs",
+ lifetime_name.c_str ());
+
+ // WARNING: Do not call ContextualASTVisitor, we don't want to visit the
+ // lifetime
+ // Maybe we should refactor LoopLabel instead ?
+}
+
void
ASTValidation::visit (AST::ConstantItem &const_item)
{