#include "rust-early-name-resolver.h"
#include "rust-name-resolution-context.h"
#include "rust-early-name-resolver-2.0.h"
+#include "rust-late-name-resolver-2.0.h"
#include "rust-cfg-strip.h"
#include "rust-expand-visitor.h"
#include "rust-unicode.h"
if (last_step == CompileOptions::CompileStep::Expansion)
return;
+ auto name_resolution_ctx = Resolver2_0::NameResolutionContext ();
// expansion pipeline stage
- expansion (parsed_crate);
+
+ expansion (parsed_crate, name_resolution_ctx);
rust_debug ("\033[0;31mSUCCESSFULLY FINISHED EXPANSION \033[0m");
if (options.dump_option_enabled (CompileOptions::EXPANSION_DUMP))
{
return;
// resolution pipeline stage
- Resolver::NameResolution::Resolve (parsed_crate);
+ if (flag_name_resolution_2_0)
+ Resolver2_0::Late (name_resolution_ctx).go (parsed_crate);
+ else
+ Resolver::NameResolution::Resolve (parsed_crate);
if (options.dump_option_enabled (CompileOptions::RESOLUTION_DUMP))
{
}
void
-Session::expansion (AST::Crate &crate)
+Session::expansion (AST::Crate &crate, Resolver2_0::NameResolutionContext &ctx)
{
rust_debug ("started expansion");
if (saw_errors ())
break;
- auto ctx = Resolver2_0::NameResolutionContext ();
-
if (flag_name_resolution_2_0)
{
Resolver2_0::Early early (ctx);
#include "rust-backend.h"
#include "rust-hir-map.h"
#include "safe-ctype.h"
+#include "rust-name-resolution-context.h"
#include "config.h"
#include "rust-system.h"
/* Expansion pipeline stage. TODO maybe move to another object? Expands all
* macros, maybe build test harness in future, AST validation, maybe create
* macro crate (if not rustdoc).*/
- void expansion (AST::Crate &crate);
+ void expansion (AST::Crate &crate, Resolver2_0::NameResolutionContext &ctx);
// handle cfg_option
bool handle_cfg_option (std::string &data);