Skip to content

Commit 0281e17

Browse files
committed
Move AST desugaring into expansion phase
This fixes some issues with name resolution 2.0. gcc/rust/ChangeLog: * rust-session-manager.cc (Session::compile_crate): Move AST desugaring to... (Session::expansion): ...here and add a final TopLevel pass afterwards. gcc/testsuite/ChangeLog: * rust/compile/nr2/exclude: Remove entries. Signed-off-by: Owen Avery <[email protected]>
1 parent 036c63f commit 0281e17

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

gcc/rust/rust-session-manager.cc

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -619,10 +619,6 @@ Session::compile_crate (const char *filename)
619619

620620
expansion (parsed_crate, name_resolution_ctx);
621621

622-
AST::DesugarForLoops ().go (parsed_crate);
623-
AST::DesugarQuestionMark ().go (parsed_crate);
624-
AST::DesugarApit ().go (parsed_crate);
625-
626622
rust_debug ("\033[0;31mSUCCESSFULLY FINISHED EXPANSION \033[0m");
627623
if (options.dump_option_enabled (CompileOptions::EXPANSION_DUMP))
628624
{
@@ -986,6 +982,20 @@ Session::expansion (AST::Crate &crate, Resolver2_0::NameResolutionContext &ctx)
986982
rust_error_at (range, "reached recursion limit");
987983
}
988984

985+
// handle AST desugaring
986+
if (!saw_errors ())
987+
{
988+
AST::DesugarForLoops ().go (crate);
989+
AST::DesugarQuestionMark ().go (crate);
990+
AST::DesugarApit ().go (crate);
991+
992+
// HACK: we may need a final TopLevel pass
993+
// however, this should not count towards the recursion limit
994+
// and we don't need a full Early pass
995+
if (flag_name_resolution_2_0)
996+
Resolver2_0::TopLevel (ctx).go (crate);
997+
}
998+
989999
// error reporting - check unused macros, get missing fragment specifiers
9901000

9911001
// build test harness

gcc/testsuite/rust/compile/nr2/exclude

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,4 @@ issue-2905-2.rs
44
torture/alt_patterns1.rs
55
torture/name_resolve1.rs
66
issue-3652.rs
7-
issue-1487.rs
8-
issue-2015.rs
9-
issue-3454.rs
10-
impl_trait_generic_arg.rs
117
# please don't delete the trailing newline

0 commit comments

Comments
 (0)