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