@@ -69,6 +69,10 @@ const char *kASTDumpFile = "gccrs.ast.dump";
const char *kASTPrettyDumpFile = "gccrs.ast-pretty.dump";
const char *kASTPrettyDumpFileExpanded = "gccrs.ast-pretty-expanded.dump";
const char *kASTExpandedDumpFile = "gccrs.ast-expanded.dump";
+const char *kASTmacroResolutionDumpFile = "gccrs.ast-macro-resolution.dump";
+const char *kASTlabelResolutionDumpFile = "gccrs.ast-label-resolution.dump";
+const char *kASTtypeResolutionDumpFile = "gccrs.ast-type-resolution.dump";
+const char *kASTvalueResolutionDumpFile = "gccrs.ast-value-resolution.dump";
const char *kHIRDumpFile = "gccrs.hir.dump";
const char *kHIRPrettyDumpFile = "gccrs.hir-pretty.dump";
const char *kHIRTypeResolutionDumpFile = "gccrs.type-resolution.dump";
@@ -86,6 +90,7 @@ Session::get_instance ()
static std::string
infer_crate_name (const std::string &filename)
+
{
if (filename == "-")
return kDefaultCrateName;
@@ -626,9 +631,7 @@ Session::compile_crate (const char *filename)
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?
- }
+ dump_name_resolution (name_resolution_ctx);
if (saw_errors ())
return;
@@ -982,6 +985,27 @@ Session::dump_ast_pretty (AST::Crate &crate, bool expanded) const
out.close ();
}
+void
+Session::dump_name_resolution (Resolver2_0::NameResolutionContext &ctx) const
+{
+ // YES this is ugly but NO GCC 4.8 does not allow us to make it fancier :(
+ std::string types_content = ctx.types.as_debug_string ();
+ std::ofstream types_stream{kASTtypeResolutionDumpFile};
+ types_stream << types_content;
+
+ std::string macros_content = ctx.macros.as_debug_string ();
+ std::ofstream macros_stream{kASTmacroResolutionDumpFile};
+ macros_stream << macros_content;
+
+ std::string labels_content = ctx.labels.as_debug_string ();
+ std::ofstream labels_stream{kASTlabelResolutionDumpFile};
+ labels_stream << labels_content;
+
+ std::string values_content = ctx.values.as_debug_string ();
+ std::ofstream values_stream{kASTvalueResolutionDumpFile};
+ values_stream << values_content;
+}
+
void
Session::dump_hir (HIR::Crate &crate) const
{
@@ -396,6 +396,7 @@ private:
void dump_lex (Parser<Lexer> &parser) const;
void dump_ast_pretty (AST::Crate &crate, bool expanded = false) const;
+ void dump_name_resolution (Resolver2_0::NameResolutionContext &ctx) const;
void dump_hir (HIR::Crate &crate) const;
void dump_hir_pretty (HIR::Crate &crate) const;