@@ -10395,10 +10395,6 @@ impl<'a> Parser<'a> {
1039510395 quote_style: None,
1039610396 span,
1039710397 }));
10398- } else if let Some(func_part) =
10399- self.maybe_parse(|parser| parser.parse_object_name_function_part())?
10400- {
10401- parts.push(ObjectNamePart::Function(func_part));
1040210398 } else if dialect_of!(self is BigQueryDialect) && in_table_clause {
1040310399 let (ident, end_with_period) = self.parse_unquoted_hyphenated_identifier()?;
1040410400 parts.push(ObjectNamePart::Identifier(ident));
@@ -10413,7 +10409,16 @@ impl<'a> Parser<'a> {
1041310409 parts.push(ObjectNamePart::Identifier(Ident::new("")));
1041410410 } else {
1041510411 let ident = self.parse_identifier()?;
10416- parts.push(ObjectNamePart::Identifier(ident));
10412+ let part = if self.dialect.is_identifier_generating_function_name(&ident) {
10413+ self.expect_token(&Token::LParen)?;
10414+ let args: Vec<FunctionArg> =
10415+ self.parse_comma_separated0(Self::parse_function_args, Token::RParen)?;
10416+ self.expect_token(&Token::RParen)?;
10417+ ObjectNamePart::Function(ObjectNamePartFunction { name: ident, args })
10418+ } else {
10419+ ObjectNamePart::Identifier(ident)
10420+ };
10421+ parts.push(part);
1041710422 }
1041810423
1041910424 if !self.consume_token(&Token::Period) {
@@ -10452,22 +10457,6 @@ impl<'a> Parser<'a> {
1045210457 Ok(ObjectName(parts))
1045310458 }
1045410459
10455- fn parse_object_name_function_part(&mut self) -> Result<ObjectNamePartFunction, ParserError> {
10456- let name = self.parse_identifier()?;
10457- if self.dialect.is_identifier_generating_function_name(&name) {
10458- self.expect_token(&Token::LParen)?;
10459- let args: Vec<FunctionArg> =
10460- self.parse_comma_separated0(Self::parse_function_args, Token::RParen)?;
10461- self.expect_token(&Token::RParen)?;
10462- Ok(ObjectNamePartFunction { name, args })
10463- } else {
10464- self.expected(
10465- "dialect specific identifier-generating function",
10466- self.peek_token(),
10467- )
10468- }
10469- }
10470-
1047110460 /// Parse identifiers
1047210461 pub fn parse_identifiers(&mut self) -> Result<Vec<Ident>, ParserError> {
1047310462 let mut idents = vec![];
0 commit comments