diff --git a/codeCore/src/prog8/code/ast/AstPrinter.kt b/codeCore/src/prog8/code/ast/AstPrinter.kt index 249721ca4..4f60cee2e 100644 --- a/codeCore/src/prog8/code/ast/AstPrinter.kt +++ b/codeCore/src/prog8/code/ast/AstPrinter.kt @@ -57,9 +57,20 @@ fun printAst(root: PtNode, skipLibraries: Boolean, output: (text: String) -> Uni "???" } is PtAsmSub -> { - val params = if (node.parameters.isEmpty()) "" else "...TODO ${node.parameters.size} PARAMS..." + val params = node.parameters.map { + val register = it.first.registerOrPair + val statusflag = it.first.statusflag + "${it.second.type} ${it.second.name} @${register ?: statusflag}" + }.joinToString(", ") val clobbers = if (node.clobbers.isEmpty()) "" else "clobbers ${node.clobbers}" - val returns = if (node.returns.isEmpty()) "" else (if (node.returns.size == 1) "-> ${node.returns[0].second.name.lowercase()}" else "-> ${node.returns.map { it.second.name.lowercase() }}") + val returns = if (node.returns.isEmpty()) "" else { + "-> ${node.returns.map { + val register = it.first.registerOrPair + val statusflag = it.first.statusflag + "${it.second} @${register ?: statusflag}"} + .joinToString(", ") + }" + } val str = if (node.inline) "inline " else "" if(node.address==null) { str + "asmsub ${node.name}($params) $clobbers $returns" @@ -87,7 +98,7 @@ fun printAst(root: PtNode, skipLibraries: Boolean, output: (text: String) -> Uni } } is PtSub -> { - val params = if (node.parameters.isEmpty()) "" else "...TODO ${node.parameters.size} PARAMS..." + val params = node.parameters.map { "${it.type} ${it.name}" }.joinToString(", ") var str = "sub ${node.name}($params) " if(node.returntype!=null) str += "-> ${node.returntype.name.lowercase()}" diff --git a/docs/source/todo.rst b/docs/source/todo.rst index 0e28f8469..cf8367024 100644 --- a/docs/source/todo.rst +++ b/docs/source/todo.rst @@ -79,3 +79,7 @@ Other language/syntax features to think about - chained comparisons `10