From 88c20f5e1d59b691b8e8cfbd550206a39bf9727b Mon Sep 17 00:00:00 2001 From: Arthur Cohen Date: Fri, 29 Apr 2022 13:48:34 +0200 Subject: privacy: Add base for resolving SimplePaths to Modules This also fixes the missing kind in HIR::Visibility. Having both `pub` and `pub restricted` as a single variant in the HIR::Visibility::Kind enum was a mistake, as it cause the path resolver to be triggered for `pub` visibilities which do not refer to any paths. Finally, erroneous calls to Visibility::create_error() are removed. This caused a lot of ICEs now that the Visibility lowering logic is fixed --- gcc/rust/parse/rust-parse-impl.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'gcc/rust/parse/rust-parse-impl.h') diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 23ab32c..e76bdd8 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -5402,7 +5402,7 @@ Parser::parse_inherent_impl_item () case FN_TOK: // function or method return parse_inherent_impl_function_or_method ( - AST::Visibility::create_error (), std::move (outer_attrs)); + AST::Visibility::create_private (), std::move (outer_attrs)); case CONST: /* lookahead to resolve production - could be function/method or const * item */ @@ -5412,13 +5412,13 @@ Parser::parse_inherent_impl_item () { case IDENTIFIER: case UNDERSCORE: - return parse_const_item (AST::Visibility::create_error (), + return parse_const_item (AST::Visibility::create_private (), std::move (outer_attrs)); case UNSAFE: case EXTERN_TOK: case FN_TOK: return parse_inherent_impl_function_or_method ( - AST::Visibility::create_error (), std::move (outer_attrs)); + AST::Visibility::create_private (), std::move (outer_attrs)); default: add_error (Error (t->get_locus (), "unexpected token %qs in some sort of const item " @@ -5572,7 +5572,7 @@ Parser::parse_trait_impl_item () // these seem to be SimplePath tokens, so this is a macro invocation semi return parse_macro_invocation_semi (std::move (outer_attrs)); case TYPE: - return parse_type_alias (AST::Visibility::create_error (), + return parse_type_alias (AST::Visibility::create_private (), std::move (outer_attrs)); case PUB: { // visibility, so not a macro invocation semi - must be constant, @@ -5631,7 +5631,7 @@ Parser::parse_trait_impl_item () case FN_TOK: // function or method return parse_trait_impl_function_or_method ( - AST::Visibility::create_error (), std::move (outer_attrs)); + AST::Visibility::create_private (), std::move (outer_attrs)); case CONST: // lookahead to resolve production - could be function/method or const // item @@ -5641,13 +5641,13 @@ Parser::parse_trait_impl_item () { case IDENTIFIER: case UNDERSCORE: - return parse_const_item (AST::Visibility::create_error (), + return parse_const_item (AST::Visibility::create_private (), std::move (outer_attrs)); case UNSAFE: case EXTERN_TOK: case FN_TOK: return parse_trait_impl_function_or_method ( - AST::Visibility::create_error (), std::move (outer_attrs)); + AST::Visibility::create_private (), std::move (outer_attrs)); default: add_error (Error ( t->get_locus (), -- cgit v1.1