diff options
author | Nala Ginrut <mulei@gnu.org> | 2020-05-18 20:44:36 +0800 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2020-11-28 21:13:13 +0000 |
commit | 0fee2a060b371543d0b47e5969e4f933200ca9e6 (patch) | |
tree | 9445e664334793642f614200078eac52a75290b7 /gcc | |
parent | 0833b2d55e3fea376b47f4f260cf87b050d6a5e7 (diff) | |
download | gcc-0fee2a060b371543d0b47e5969e4f933200ca9e6.zip gcc-0fee2a060b371543d0b47e5969e4f933200ca9e6.tar.gz gcc-0fee2a060b371543d0b47e5969e4f933200ca9e6.tar.bz2 |
Change rust-session-manager for resolution refactoring
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/rust-session-manager.cc | 19 | ||||
-rw-r--r-- | gcc/rust/rust-session-manager.h | 10 |
2 files changed, 16 insertions, 13 deletions
diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc index 2e0f3e9..f840eb8 100644 --- a/gcc/rust/rust-session-manager.cc +++ b/gcc/rust/rust-session-manager.cc @@ -362,9 +362,9 @@ Session::enable_dump (::std::string arg) { options.dump_option = CompileOptions::EXPANSION_DUMP; } - else if (arg == "name_resolution") + else if (arg == "resolution") { - options.dump_option = CompileOptions::NAME_RESOLUTION_DUMP; + options.dump_option = CompileOptions::RESOLUTION_DUMP; } else if (arg == "target_options") { @@ -449,8 +449,8 @@ Session::parse_file (const char *filename) * injection) * - expansion (expands all macros, maybe build test harness, AST validation, * maybe macro crate) - * - name resolution (name resolution, maybe feature checking, maybe buffered - * lints) + * - resolution (name resolution, type resolution, maybe feature checking, + * maybe buffered lints) * TODO not done */ fprintf (stderr, "\033[0;31mSUCCESSFULLY PARSED CRATE \n\033[0m"); @@ -485,11 +485,11 @@ Session::parse_file (const char *filename) return; } - // name resolution pipeline stage - name_resolution (parsed_crate); - fprintf (stderr, "\033[0;31mSUCCESSFULLY FINISHED NAME RESOLUTION \n\033[0m"); + // resolution pipeline stage + resolution (parsed_crate); + fprintf (stderr, "\033[0;31mSUCCESSFULLY FINISHED RESOLUTION \n\033[0m"); - if (options.dump_option == CompileOptions::NAME_RESOLUTION_DUMP) + if (options.dump_option == CompileOptions::RESOLUTION_DUMP) { // TODO: what do I dump here? resolved names? AST with resolved names? return; @@ -750,10 +750,11 @@ Session::expansion (AST::Crate &crate ATTRIBUTE_UNUSED) } void -Session::name_resolution (AST::Crate &crate) +Session::resolution (AST::Crate &crate) { fprintf (stderr, "started name resolution\n"); Analysis::TopLevelScan toplevel (crate); + // Name resolution must be in front of type resolution Analysis::TypeResolution::ResolveNamesAndTypes (crate, toplevel); fprintf (stderr, "finished name resolution\n"); } diff --git a/gcc/rust/rust-session-manager.h b/gcc/rust/rust-session-manager.h index 2352267..11bece8 100644 --- a/gcc/rust/rust-session-manager.h +++ b/gcc/rust/rust-session-manager.h @@ -162,6 +162,7 @@ struct CompileOptions EXPANSION_DUMP, NAME_RESOLUTION_DUMP, TARGET_OPTION_DUMP, + RESOLUTION_DUMP, // TODO: add more? } dump_option; @@ -225,11 +226,12 @@ private: * macros, maybe build test harness in future, AST validation, maybe create * macro crate (if not rustdoc).*/ void expansion (AST::Crate &crate); - /* Name resolution pipeline stage. TODO maybe move to another object. Performs - * name resolution, maybe complete gated feature checking, maybe create - * buffered lints in future. + + /* Resolution pipeline stage. TODO maybe move to another object. + * Performs name resolution and type resolution, maybe complete gated + * feature checking, maybe create buffered lints in future. */ - void name_resolution (AST::Crate &crate); + void resolution (AST::Crate &crate); }; } // namespace Rust |