aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNala Ginrut <mulei@gnu.org>2020-05-18 20:44:36 +0800
committerPhilip Herron <philip.herron@embecosm.com>2020-11-28 21:13:13 +0000
commit0fee2a060b371543d0b47e5969e4f933200ca9e6 (patch)
tree9445e664334793642f614200078eac52a75290b7 /gcc
parent0833b2d55e3fea376b47f4f260cf87b050d6a5e7 (diff)
downloadgcc-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.cc19
-rw-r--r--gcc/rust/rust-session-manager.h10
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