-
-
Notifications
You must be signed in to change notification settings - Fork 123
Open
Labels
Description
Did you check existing issues?
- I have read all the tree-sitter docs if it relates to using the parser
- I have searched the existing issues of tree-sitter-cpp
Tree-Sitter CLI Version, if relevant (output of tree-sitter --version
)
tree-sitter 0.25.3 (2a835ee029dca1c325e6f1c01dbce40396f6123e)
Describe the bug
When parsing code that uses function annotations, the parse tree incorrectly reports an ERROR
node.
For example, given the following snippet that contains a function annotated with EXPORT
:
#define EXPORT __attribute__((visibility("default")))
EXPORT
void foo() {}
The following error appears in the parse tree: (ERROR [3, 0] - [3, 4]
.
Steps To Reproduce/Bad Parse Tree
- Write the code above in a C++ file.
- Run
tree-sitter parse
on the file. - Observe the obtained parse tree:
(translation_unit [0, 0] - [4, 0]
(preproc_def [0, 0] - [1, 0]
name: (identifier [0, 8] - [0, 14])
value: (preproc_arg [0, 15] - [0, 53]))
(function_definition [2, 0] - [3, 13]
type: (type_identifier [2, 0] - [2, 6])
(ERROR [3, 0] - [3, 4]
(identifier [3, 0] - [3, 4]))
declarator: (function_declarator [3, 5] - [3, 10]
declarator: (identifier [3, 5] - [3, 8])
parameters: (parameter_list [3, 8] - [3, 10]))
body: (compound_statement [3, 11] - [3, 13])))
Expected Behavior/Parse Tree
The parse tree should not have errors.
Repro
#define EXPORT __attribute__((visibility("default")))
EXPORT
void foo() {}