]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: session-manager: Run name resolution 2.0 if the option is present
authorArthur Cohen <arthur.cohen@embecosm.com>
Fri, 23 Jun 2023 14:35:47 +0000 (16:35 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 18:00:27 +0000 (19:00 +0100)
gcc/rust/ChangeLog:

* rust-session-manager.cc
(Session::expansion): Use new `Early` name resolution 2.0 pass

gcc/rust/rust-session-manager.cc

index 3461198be957f78d5cab6528d4ecbe8008e51f49..401133c14dc8504bdfb43eea7701c051ae0e5701 100644 (file)
@@ -40,6 +40,8 @@
 #include "rust-extern-crate.h"
 #include "rust-attributes.h"
 #include "rust-early-name-resolver.h"
+#include "rust-name-resolution-context.h"
+#include "rust-early-name-resolver-2.0.h"
 #include "rust-cfg-strip.h"
 #include "rust-expand-visitor.h"
 #include "rust-unicode.h"
@@ -605,6 +607,7 @@ Session::compile_crate (const char *filename)
 
   // resolution pipeline stage
   Resolver::NameResolution::Resolve (parsed_crate);
+
   if (options.dump_option_enabled (CompileOptions::RESOLUTION_DUMP))
     {
       // TODO: what do I dump here? resolved names? AST with resolved names?
@@ -876,7 +879,14 @@ Session::expansion (AST::Crate &crate)
   while (!fixed_point_reached && iterations < cfg.recursion_limit)
     {
       CfgStrip ().go (crate);
-      Resolver::EarlyNameResolver ().go (crate);
+
+      auto ctx = Resolver2_0::NameResolutionContext ();
+
+      if (flag_name_resolution_2_0)
+       Resolver2_0::Early (ctx).go (crate);
+      else
+       Resolver::EarlyNameResolver ().go (crate);
+
       ExpandVisitor (expander).go (crate);
 
       fixed_point_reached = !expander.has_changed ();