Skip to content

Commit

Permalink
[tree-sitter] More C++ fixes
Browse files Browse the repository at this point in the history
Built a new `tree-sitter-cpp` parser from latest master to fix a parsing error with variable assignment. Also added/tweaked scopes for some specific scenarios.
  • Loading branch information
savetheclocktower committed Oct 30, 2023
1 parent f923248 commit 80126cd
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 6 deletions.
3 changes: 3 additions & 0 deletions packages/language-c/grammars/modern-tree-sitter-c.cson
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@ fileTypes: [
'c'
'h.in'
]

comments:
start: '// '
4 changes: 4 additions & 0 deletions packages/language-c/grammars/modern-tree-sitter-cpp.cson
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ parser: 'tree-sitter-cpp'
injectionRegex: '^(c|C)(\\+\\+|pp|PP)$'

treeSitter:
parserSource: 'github:tree-sitter/tree-sitter-cpp#a90f170f92d5d70e7c2d4183c146e61ba5f3a457'
grammar: 'tree-sitter-cpp/tree-sitter-cpp.wasm'
highlightsQuery: 'tree-sitter-cpp/highlights.scm'
tagsQuery: 'tree-sitter-cpp/tags.scm'
Expand Down Expand Up @@ -33,3 +34,6 @@ fileTypes: [
]

contentRegex: '\n\\s*(namespace|class|template)\\s+'

comments:
start: '// '
20 changes: 14 additions & 6 deletions packages/language-c/grammars/tree-sitter-cpp/highlights.scm
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,14 @@

(primitive_type) @support.type.builtin.cpp

; Type parameters
(template_argument_list
(type_descriptor
type: (type_identifier) @variable.parameter.type.cpp
(#set! capture.final true)))
; Mark all function definition types with data…
(function_definition
type: (_) @_IGNORE_
(#set! functionDefinitionType true))

; …so that we can detect when a type identifier is part of a template/generic.
((type_identifier) @variable.parameter.type.cpp
(#is? test.descendantOfNodeWithData functionDefinitionType))

(class_specifier
(type_identifier) @entity.name.class.cpp
Expand Down Expand Up @@ -150,6 +152,13 @@
name: (identifier) @support.other.function.cpp)
(#set! capture.final true))

; The "foo" in `troz::foo<SomeType>(...)`.
(call_expression
function: (qualified_identifier
name: (template_function
name: (identifier) @support.other.function.cpp))
(#set! capture.final true))

(call_expression
(identifier) @support.other.function.cpp
(#set! capture.final true))
Expand Down Expand Up @@ -272,7 +281,6 @@
(null)
(true)
(false)
(nullptr)
] @constant.language._TYPE_.cpp

((identifier) @constant.cpp
Expand Down
Binary file not shown.

0 comments on commit 80126cd

Please sign in to comment.