Various fixes to function parsing

- Newlines are handled better
- Types are actually parsed
This commit is contained in:
Sasha Koshka 2022-09-01 22:10:57 -04:00
parent bcb1b9b6d2
commit 08f111ccbf
1 changed files with 21 additions and 1 deletions

View File

@ -69,7 +69,9 @@ func (parser *ParsingOperation) parseFuncArguments (
if parser.token.Is(lexer.TokenKindSeparator) {
// if we have encountered a separator, that means our
// work is done here.
err = parser.expect(lexer.TokenKindNewline)
err = parser.nextToken(lexer.TokenKindNewline)
if err != nil { return }
err = parser.nextToken()
return
}
@ -82,8 +84,14 @@ func (parser *ParsingOperation) parseFuncArguments (
err = parser.nextToken(lexer.TokenKindName)
if err != nil { return }
reciever.name = parser.token.Value().(string)
// get type
err = parser.nextToken(lexer.TokenKindColon)
if err != nil { return }
err = parser.nextToken()
if err != nil { return }
reciever.what, err = parser.parseType()
if err != nil { return }
if into.receiver != nil {
err = startToken.NewError (
@ -108,8 +116,14 @@ func (parser *ParsingOperation) parseFuncArguments (
err = parser.nextToken(lexer.TokenKindName)
if err != nil { return }
input.name = parser.token.Value().(string)
// get type
err = parser.nextToken(lexer.TokenKindColon)
if err != nil { return }
err = parser.nextToken()
if err != nil { return }
input.what, err = parser.parseType()
if err != nil { return }
into.inputs = append(into.inputs, input)
@ -126,8 +140,14 @@ func (parser *ParsingOperation) parseFuncArguments (
err = parser.nextToken(lexer.TokenKindName)
if err != nil { return }
output.name = parser.token.Value().(string)
// get type
err = parser.nextToken(lexer.TokenKindColon)
if err != nil { return }
err = parser.nextToken()
if err != nil { return }
output.what, err = parser.parseType()
if err != nil { return }
// parse default value
if parser.token.Is(lexer.TokenKindNewline) {