tree-sitter-c-sharp
tree-sitter-c-sharp copied to clipboard
Incorrect precedence with invocation on conditional access
var a = new object();
var b = a?.ToString();
Actual: invocation_expression with a conditional_access_expression.
(equals_value_clause [9, 14] - [9, 29]
(invocation_expression [9, 16] - [9, 29]
(conditional_access_expression [9, 16] - [9, 27]
(identifier [9, 16] - [9, 17])
(member_binding_expression [9, 18] - [9, 27]
(identifier [9, 19] - [9, 27])))
(argument_list [9, 27] - [9, 29]))))))
Expected: conditional_access_expression with an invocation_expression.
(equals_value_clause [9, 14] - [9, 29]
(conditional_access_expression [9, 16] - [9, 29]
(identifier [9, 16] - [9, 17])
(invocation_expression [9, 18] - [9, 29]
(member_binding_expression [9, 18] - [9, 27]
(identifier [9, 19] - [9, 27]))
(argument_list [9, 27] - [9, 29])))))))
Test case:
=====================================
Precedence between invocation and conditional access
=====================================
var a = b?.ToString();
---
(compilation_unit
(global_statement
(local_declaration_statement
(variable_declaration
(implicit_type)
(variable_declarator
(identifier)
(equals_value_clause
(conditional_access_expression
(identifier)
(invocation_expression
(member_binding_expression
(identifier))
(argument_list)))))))))