def addFuncParamDebug(func): debug = [ASTModifier.makeFuncCallLog(func)] for param in func['params']: debug.append(ASTModifier.makeDeclLog(param.coord, getTypeName(getType(param)))) debug.append(ASTModifier.makeAssignLog(param.coord, getTypeName(getType(param)))) if func['body'].block_items != None: func['body'].block_items = debug + \ func['body'].block_items + \ [ASTModifier.makeFuncReturnLog(func['file'] + ':' + str(func['endLine']), func)] else: func['body'].block_items = debug + \ [ASTModifier.makeFuncReturnLog(func['file'] + ':' + str(func['endLine']), func)]
def addFuncReturnDebug(func, node = None): if node == None: addFuncReturnDebug(func, func['body']) else: for (name, child) in node.children(): if nodeType(child) == 'Return': newDecl = ASTModifier.makeVarDecl(func['type'], child.expr) ASTModifier.addVar(newDecl) child.expr = ASTModifier.makeID(newDecl) index = [x[1] for x in node.children()].index(child) node.block_items = node.block_items[:index] + \ [newDecl] + \ [ASTModifier.makeFuncReturnLog(child.coord, func, getTypeName(getType(newDecl)))] + \ node.block_items[index:] elif child != None: addFuncReturnDebug(func, child)