diff options
author | Philip Herron <philip.herron@embecosm.com> | 2021-02-05 11:43:44 +0000 |
---|---|---|
committer | Philip Herron <herron.philip@googlemail.com> | 2021-02-06 15:29:01 +0000 |
commit | 75b6fc46bd64599e565582b46bf6f2197b2bc53f (patch) | |
tree | 1eecacbddf9c31f91c000cb76939c483234974e6 /gcc/rust/rust-session-manager.cc | |
parent | 599b04aa7d928a305029d8e8cf5d6f5c5a683da8 (diff) | |
download | gcc-75b6fc46bd64599e565582b46bf6f2197b2bc53f.zip gcc-75b6fc46bd64599e565582b46bf6f2197b2bc53f.tar.gz gcc-75b6fc46bd64599e565582b46bf6f2197b2bc53f.tar.bz2 |
Move scan for unused names to be after type resolution
Methods are resolved as part of type resolution so scanning ribs early
on will results in false warnings about unused methods.
Diffstat (limited to 'gcc/rust/rust-session-manager.cc')
-rw-r--r-- | gcc/rust/rust-session-manager.cc | 46 |
1 files changed, 13 insertions, 33 deletions
diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc index 281049d..a2e5edd 100644 --- a/gcc/rust/rust-session-manager.cc +++ b/gcc/rust/rust-session-manager.cc @@ -35,6 +35,7 @@ #include "rust-ast-lower.h" #include "rust-hir-type-check.h" #include "rust-tycheck-dump.h" +#include "rust-ast-resolve-unused.h" #include "rust-compile.h" extern Linemap * @@ -524,9 +525,7 @@ Session::parse_file (const char *filename) } // resolution pipeline stage - resolution (parsed_crate); - fprintf (stderr, "\033[0;31mSUCCESSFULLY FINISHED RESOLUTION \n\033[0m"); - + Resolver::NameResolution::Resolve (parsed_crate); if (options.dump_option == CompileOptions::RESOLUTION_DUMP) { // TODO: what do I dump here? resolved names? AST with resolved names? @@ -536,7 +535,7 @@ Session::parse_file (const char *filename) return; // lower AST to HIR - HIR::Crate hir = lower_ast (parsed_crate); + HIR::Crate hir = HIR::ASTLowering::Resolve (parsed_crate); if (options.dump_option == CompileOptions::HIR_DUMP) { fprintf (stderr, "%s", hir.as_string ().c_str ()); @@ -547,11 +546,17 @@ Session::parse_file (const char *filename) return; // type resolve - type_resolution (hir); + Resolver::TypeResolution::Resolve (hir); + if (options.dump_option == CompileOptions::TYPE_RESOLUTION_DUMP) + { + auto buf = Resolver::TypeResolverDump::go (hir); + fprintf (stderr, "%s\n", buf.c_str ()); + return; + } - // FIXME this needs an option of itself - // auto buf = Resolver::TypeResolverDump::go (hir); - // fprintf (stderr, "%s\n", buf.c_str ()); + // scan unused has to be done after type resolution since methods are resolved + // at that point + Resolver::ScanUnused::Scan (); if (saw_errors ()) return; @@ -789,31 +794,6 @@ Session::expansion (AST::Crate &crate) } void -Session::resolution (AST::Crate &crate) -{ - fprintf (stderr, "started name resolution\n"); - Resolver::NameResolution::Resolve (crate); - fprintf (stderr, "finished name resolution\n"); -} - -HIR::Crate -Session::lower_ast (AST::Crate &crate) -{ - fprintf (stderr, "started lowering AST\n"); - auto hir = HIR::ASTLowering::Resolve (crate); - fprintf (stderr, "finished lowering AST\n"); - return hir; -} - -void -Session::type_resolution (HIR::Crate &crate) -{ - fprintf (stderr, "started type resolution\n"); - Resolver::TypeResolution::Resolve (crate); - fprintf (stderr, "finished type resolution\n"); -} - -void TargetOptions::dump_target_options () const { fprintf (stderr, |