Improve AbstractIterableParser to return correct node if empty iterable

This commit is contained in:
2020-03-06 18:38:06 +01:00
parent 984732bf26
commit d1da81afd9

View File

@@ -13,7 +13,7 @@ abstract class AbstractIterableParser(
private val createNode: (List<Node>, TokenPosition) -> Node
) : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
val emptyIterableParser = allOf(listOf(terminal(beginTokenType), terminal(endTokenType))) { object : Node(0, it[0].position) {} }
val emptyIterableParser = allOf(listOf(terminal(beginTokenType), terminal(endTokenType))) { createNode(listOf(), it[0].position) }
val nonEmptyIterableParser = allOf(
listOf(terminal(beginTokenType),
@@ -29,7 +29,7 @@ abstract class AbstractIterableParser(
object : Node(listOf(list[0]) + list[1].children, TokenPosition.NONE) {} },
terminal(endTokenType)
)
) { createNode(it[1].children.toList() as List<Node>, it[0].position) }
) { createNode(it[1].children.toList(), it[0].position) }
return oneOf(
listOf(