compiler: include global variable preinit blocks in ast dumps
Dump out the blocks corresponding to variable pre-inits when -fgo-dump-ast is in effect. Each preinit block is prefixed with a comment indicating the variable it is initializing. Reviewed-on: https://go-review.googlesource.com/118636 From-SVN: r261555
This commit is contained in:
parent
1cc56f079e
commit
de001ec777
|
@ -1,4 +1,4 @@
|
|||
6743db0ed81e313acf66c00a4ed0e2dcaaca2c9f
|
||||
1f07926263b6d14edb6abd6a00e6385190d30d0e
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -29,7 +29,7 @@ class Ast_dump_traverse_blocks_and_functions : public Traverse
|
|||
{
|
||||
public:
|
||||
Ast_dump_traverse_blocks_and_functions(Ast_dump_context* ast_dump_context)
|
||||
: Traverse(traverse_blocks | traverse_functions),
|
||||
: Traverse(traverse_blocks | traverse_functions | traverse_variables),
|
||||
ast_dump_context_(ast_dump_context)
|
||||
{ }
|
||||
|
||||
|
@ -40,6 +40,9 @@ class Ast_dump_traverse_blocks_and_functions : public Traverse
|
|||
int
|
||||
function(Named_object*);
|
||||
|
||||
int
|
||||
variable(Named_object*);
|
||||
|
||||
private:
|
||||
Ast_dump_context* ast_dump_context_;
|
||||
};
|
||||
|
@ -150,6 +153,27 @@ Ast_dump_traverse_blocks_and_functions::function(Named_object* no)
|
|||
return TRAVERSE_CONTINUE;
|
||||
}
|
||||
|
||||
// Dump variable preinits
|
||||
|
||||
int
|
||||
Ast_dump_traverse_blocks_and_functions::variable(Named_object* no)
|
||||
{
|
||||
if (!no->is_variable())
|
||||
return TRAVERSE_CONTINUE;
|
||||
|
||||
Variable* var = no->var_value();
|
||||
if (var->has_pre_init())
|
||||
{
|
||||
this->ast_dump_context_->ostream() << "// preinit block for var "
|
||||
<< no->message_name() << "\n";
|
||||
var->preinit()->traverse(this);
|
||||
}
|
||||
|
||||
return TRAVERSE_CONTINUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Class Ast_dump_context.
|
||||
|
||||
Ast_dump_context::Ast_dump_context(std::ostream* out /* = NULL */,
|
||||
|
|
Loading…
Reference in New Issue