debugging
This commit is contained in:
@@ -19,6 +19,7 @@ import hash_set:*
|
|||||||
have a code block to insert them into that makes sure that they get run.
|
have a code block to insert them into that makes sure that they get run.
|
||||||
1 we also make a set of all type_defs for pass 4
|
1 we also make a set of all type_defs for pass 4
|
||||||
|
|
||||||
|
PASS TWO THROUGH name_ast_map
|
||||||
2 in another pass (more complicated because different children have different parent scopes)
|
2 in another pass (more complicated because different children have different parent scopes)
|
||||||
we transform the short circuit operators
|
we transform the short circuit operators
|
||||||
|
|
||||||
@@ -26,7 +27,7 @@ import hash_set:*
|
|||||||
temporaries. Also, pull out init method calls.
|
temporaries. Also, pull out init method calls.
|
||||||
3 this is also when we add in defer destructs for function parameters (inside the function) and declaration statements
|
3 this is also when we add in defer destructs for function parameters (inside the function) and declaration statements
|
||||||
|
|
||||||
PASS TWO THROUGH name_ast_map
|
PASS THREE THROUGH name_ast_map
|
||||||
4 change all methods to take in self, change all method calls to pass in self, change all in method references to be explicit
|
4 change all methods to take in self, change all method calls to pass in self, change all in method references to be explicit
|
||||||
*/
|
*/
|
||||||
fun obj_lower(name_ast_map: *map<string, pair<*tree<symbol>,*ast_node>>, ast_to_syntax: *map<*ast_node, *tree<symbol>>) {
|
fun obj_lower(name_ast_map: *map<string, pair<*tree<symbol>,*ast_node>>, ast_to_syntax: *map<*ast_node, *tree<symbol>>) {
|
||||||
@@ -45,6 +46,8 @@ fun obj_lower(name_ast_map: *map<string, pair<*tree<symbol>,*ast_node>>, ast_to_
|
|||||||
add_to_scope("~enclosing_scope", node, backing.body_statement)
|
add_to_scope("~enclosing_scope", node, backing.body_statement)
|
||||||
if (!is_code_block(backing.body_statement))
|
if (!is_code_block(backing.body_statement))
|
||||||
error("BUT EXTRA WHY")
|
error("BUT EXTRA WHY")
|
||||||
|
if (!is_code_block(node->function.body_statement))
|
||||||
|
error("BUT EXTRA WHY - now with more")
|
||||||
}
|
}
|
||||||
ast_node::if_statement(backing) {
|
ast_node::if_statement(backing) {
|
||||||
if (!is_code_block(backing.then_part)) {
|
if (!is_code_block(backing.then_part)) {
|
||||||
@@ -132,9 +135,28 @@ fun obj_lower(name_ast_map: *map<string, pair<*tree<symbol>,*ast_node>>, ast_to_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
run_on_tree(ensure_block_and_munge, empty_pass_second_half(), syntax_ast_pair.second, &visited1)
|
run_on_tree(ensure_block_and_munge, empty_pass_second_half(), syntax_ast_pair.second, &visited1)
|
||||||
|
})
|
||||||
|
// make sure all blockes munged before we move ahead
|
||||||
|
name_ast_map->for_each(fun(name: string, syntax_ast_pair: pair<*tree<symbol>,*ast_node>) {
|
||||||
|
var visit = hash_set<*ast_node>()
|
||||||
|
var short_check: fun(*ast_node,*stack<*ast_node>,*hash_set<*ast_node>): bool = fun(node: *ast_node, parent_chain: *stack<*ast_node>, visited: *hash_set<*ast_node>): bool {
|
||||||
|
match(*node) {
|
||||||
|
ast_node::function(backing) {
|
||||||
|
if (backing.body_statement && !is_code_block(backing.body_statement))
|
||||||
|
error("Bad in short chec")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
run_on_tree(short_check, empty_pass_second_half(), syntax_ast_pair.second, &visit)
|
||||||
|
|
||||||
// Pass 2
|
// Pass 2
|
||||||
var short_circut_op: fun(*ast_node,*stack<*ast_node>,*hash_set<*ast_node>): bool = fun(node: *ast_node, parent_chain: *stack<*ast_node>, visited: *hash_set<*ast_node>): bool {
|
var short_circut_op: fun(*ast_node,*stack<*ast_node>,*hash_set<*ast_node>): bool = fun(node: *ast_node, parent_chain: *stack<*ast_node>, visited: *hash_set<*ast_node>): bool {
|
||||||
match(*node) {
|
match(*node) {
|
||||||
|
ast_node::function(backing) {
|
||||||
|
if (backing.body_statement && !is_code_block(backing.body_statement))
|
||||||
|
error("Bad in 2")
|
||||||
|
}
|
||||||
ast_node::function_call(backing) {
|
ast_node::function_call(backing) {
|
||||||
var func_name = string()
|
var func_name = string()
|
||||||
if (is_function(backing.func)) {
|
if (is_function(backing.func)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user