func (parser *Parser) parseParams(method *ast.Method) { parser.expectf(lexer.TokenType('('), "method param table must start with (") for { token := parser.peek() if token.Type == lexer.TokenType(')') { break } for parser.parseAnnotation() { } typeDecl := parser.expectTypeDecl("expect method param type declare") nameToken := parser.expectf(lexer.TokenID, "expect method param name") name := nameToken.Value.(string) param, ok := method.NewParam(name, typeDecl) parser.attachAnnotation(param) if !ok { parser.errorf(token.Start, "duplicate method(%s) param(%s)", method, name) } _setNodePos(param, token.Start, nameToken.End) token = parser.peek() if token.Type != lexer.TokenType(',') { break } parser.next() } parser.expectf(lexer.TokenType(')'), "method param table must end with )") }