@@ -10395,10 +10395,6 @@ impl<'a> Parser<'a> {
10395
10395
quote_style: None,
10396
10396
span,
10397
10397
}));
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));
10402
10398
} else if dialect_of!(self is BigQueryDialect) && in_table_clause {
10403
10399
let (ident, end_with_period) = self.parse_unquoted_hyphenated_identifier()?;
10404
10400
parts.push(ObjectNamePart::Identifier(ident));
@@ -10413,7 +10409,16 @@ impl<'a> Parser<'a> {
10413
10409
parts.push(ObjectNamePart::Identifier(Ident::new("")));
10414
10410
} else {
10415
10411
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);
10417
10422
}
10418
10423
10419
10424
if !self.consume_token(&Token::Period) {
@@ -10452,22 +10457,6 @@ impl<'a> Parser<'a> {
10452
10457
Ok(ObjectName(parts))
10453
10458
}
10454
10459
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
-
10471
10460
/// Parse identifiers
10472
10461
pub fn parse_identifiers(&mut self) -> Result<Vec<Ident>, ParserError> {
10473
10462
let mut idents = vec![];
0 commit comments