Various fixes to function parsing
- Newlines are handled better - Types are actually parsed
This commit is contained in:
parent
bcb1b9b6d2
commit
08f111ccbf
@ -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) {
|
||||
|
Reference in New Issue
Block a user