From: Pierre-Emmanuel Patry Date: Thu, 9 Nov 2023 18:45:08 +0000 (+0100) Subject: gccrs: Add trait context to ContextualASTVisitor X-Git-Tag: basepoints/gcc-15~1993 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1d722aa6f011a1584b1815bfbfb8d2733c1ba34;p=thirdparty%2Fgcc.git gccrs: Add trait context to ContextualASTVisitor Some construct are forbidden in trait context (eg. pub, async...) and we'll need to reject those. To do so we need to identify a trait context. gcc/rust/ChangeLog: * ast/rust-ast-visitor.cc (ContextualASTVisitor::visit): Push the new trait context when visiting a trait. * ast/rust-ast-visitor.h: Add visit function prototype and TRAIT context. Signed-off-by: Pierre-Emmanuel Patry --- diff --git a/gcc/rust/ast/rust-ast-visitor.cc b/gcc/rust/ast/rust-ast-visitor.cc index b9ff2f972803..b4d1011a03ea 100644 --- a/gcc/rust/ast/rust-ast-visitor.cc +++ b/gcc/rust/ast/rust-ast-visitor.cc @@ -1462,5 +1462,13 @@ ContextualASTVisitor::visit (AST::TraitImpl &impl) pop_context (); } +void +ContextualASTVisitor::visit (AST::Trait &trait) +{ + push_context (Context::TRAIT); + DefaultASTVisitor::visit (trait); + pop_context (); +} + } // namespace AST } // namespace Rust diff --git a/gcc/rust/ast/rust-ast-visitor.h b/gcc/rust/ast/rust-ast-visitor.h index 0f66dbe2c313..d6340e745c9d 100644 --- a/gcc/rust/ast/rust-ast-visitor.h +++ b/gcc/rust/ast/rust-ast-visitor.h @@ -442,6 +442,7 @@ protected: FUNCTION, INHERENT_IMPL, TRAIT_IMPL, + TRAIT, MODULE, CRATE, }; @@ -453,6 +454,8 @@ protected: virtual void visit (AST::TraitImpl &impl) override; + virtual void visit (AST::Trait &trait) override; + template void visit (T &item) { DefaultASTVisitor::visit (item);