mirror of
https://github.com/GayPizzaSpecifications/pork.git
synced 2025-08-03 21:21:33 +00:00
language: introduce the requirement to use return to return a value from a function
This commit is contained in:
@ -38,6 +38,7 @@ class Parser(source: TokenSource, attribution: NodeAttribution) :
|
||||
TokenType.Break -> parseBreak()
|
||||
TokenType.Continue -> parseContinue()
|
||||
TokenType.None -> parseNoneLiteral()
|
||||
TokenType.Return -> parseReturn()
|
||||
|
||||
else -> {
|
||||
throw ParseError(
|
||||
@ -332,6 +333,10 @@ class Parser(source: TokenSource, attribution: NodeAttribution) :
|
||||
PrefixOperation(ParserHelpers.convertPrefixOperator(it), parseExpression())
|
||||
}
|
||||
|
||||
override fun parseReturn(): Return = expect(NodeType.Return, TokenType.Return) {
|
||||
Return(parseExpression())
|
||||
}
|
||||
|
||||
override fun parseSetAssignment(): SetAssignment = produce(NodeType.SetAssignment) {
|
||||
val symbol = parseSymbol()
|
||||
expect(TokenType.Equals)
|
||||
|
@ -154,6 +154,11 @@ class Printer(buffer: StringBuilder) : NodeVisitor<Unit> {
|
||||
visit(node.expression)
|
||||
}
|
||||
|
||||
override fun visitReturn(node: Return) {
|
||||
append("return ")
|
||||
visit(node.value)
|
||||
}
|
||||
|
||||
override fun visitSuffixOperation(node: SuffixOperation) {
|
||||
visit(node.reference)
|
||||
append(node.op.token)
|
||||
|
Reference in New Issue
Block a user