Browse Source

feat: allow extern template instantiantions

Fixes #301
pull/325/head
rktdm 11 months ago
committed by jdrouhard
parent
commit
6d631146ef
2 changed files with 17 additions and 3 deletions
  1. +3
    -2
      grammar.js
  2. +14
    -1
      test/corpus/declarations.txt

+ 3
- 2
grammar.js View File

@ -394,12 +394,13 @@ module.exports = grammar(C, {
),
),
template_instantiation: $ => seq(
template_instantiation: $ => prec(1, seq(
optional('extern'),
'template',
optional($._declaration_specifiers),
field('declarator', $._declarator),
';',
),
)),
template_parameter_list: $ => seq(
'<',

+ 14
- 1
test/corpus/declarations.txt View File

@ -1431,6 +1431,8 @@ Explicit template instantiations
template A<int, bool>::A(char *, size_t);
extern template int Foo::foo<int>();
--------------------------------------------------------------------------------
(translation_unit
@ -1450,7 +1452,18 @@ template A::A(char *, size_t);
(primitive_type)
(abstract_pointer_declarator))
(parameter_declaration
(primitive_type))))))
(primitive_type)))))
(template_instantiation
(primitive_type)
(function_declarator
(qualified_identifier
(namespace_identifier)
(template_function
(identifier)
(template_argument_list
(type_descriptor
(primitive_type)))))
(parameter_list))))
================================================================================
Structured binding declarations

Loading…
Cancel
Save