@@ -74,9 +74,10 @@ module.exports = grammar({
74
74
$ . _string_content ,
75
75
$ . raw_string_literal ,
76
76
$ . float_literal ,
77
- $ . _outer_block_doc_comment ,
78
- $ . _inner_block_doc_comment ,
79
- '*/' ,
77
+ $ . _outer_block_doc_comment_marker ,
78
+ $ . _inner_block_doc_comment_marker ,
79
+ $ . _block_comment_content ,
80
+ $ . _line_doc_content ,
80
81
$ . _error_sentinel ,
81
82
] ,
82
83
@@ -1512,30 +1513,40 @@ module.exports = grammar({
1512
1513
// A tricky edge case where what looks like a doc comment is not
1513
1514
seq ( token . immediate ( prec ( 2 , / \/ \/ / ) ) , / .* / ) ,
1514
1515
// A regular doc comment
1515
- seq ( field ( 'doc' , alias ( $ . _line_doc_comment , $ . doc_comment ) ) , / . * / ) ,
1516
+ seq ( $ . _line_doc_comment_marker , field ( 'doc' , alias ( $ . _line_doc_content , $ . doc_comment ) ) ) ,
1516
1517
token . immediate ( prec ( 1 , / .* / ) ) ,
1517
1518
) ,
1518
1519
) ,
1519
1520
1520
- _line_doc_comment : $ => choice (
1521
+ _line_doc_comment_marker : $ => choice (
1521
1522
// An outer line doc comment applies to the element that it is outside of
1522
- field ( 'outer' , alias ( $ . _outer_line_doc_comment , $ . outer_doc_comment ) ) ,
1523
+ field ( 'outer' , alias ( $ . _outer_line_doc_comment_marker , $ . outer_doc_comment_marker ) ) ,
1523
1524
// An inner line doc comment applies to the element it is inside of
1524
- field ( 'inner' , alias ( $ . _inner_line_doc_comment , $ . inner_doc_comment ) ) ,
1525
+ field ( 'inner' , alias ( $ . _inner_line_doc_comment_marker , $ . inner_doc_comment_marker ) ) ,
1525
1526
) ,
1526
1527
1527
- _inner_line_doc_comment : _ => token . immediate ( prec ( 2 , '!' ) ) ,
1528
- _outer_line_doc_comment : _ => token . immediate ( prec ( 2 , / \/ [ ^ \/ \r \n ] ? / ) ) ,
1528
+ _inner_line_doc_comment_marker : _ => token . immediate ( prec ( 2 , '!' ) ) ,
1529
+ _outer_line_doc_comment_marker : _ => token . immediate ( prec ( 2 , '/' ) ) ,
1529
1530
1530
1531
block_comment : $ => seq (
1531
1532
'/*' ,
1532
- optional ( field ( 'doc' , alias ( $ . _block_doc_comment , $ . doc_comment ) ) ) ,
1533
+ optional (
1534
+ choice (
1535
+ // Documentation block comments: /** docs */ or /*! docs */
1536
+ seq (
1537
+ $ . _block_doc_comment_marker ,
1538
+ optional ( field ( 'doc' , alias ( $ . _block_comment_content , $ . doc_comment ) ) ) ,
1539
+ ) ,
1540
+ // Non-doc block comments
1541
+ $ . _block_comment_content ,
1542
+ ) ,
1543
+ ) ,
1533
1544
'*/' ,
1534
1545
) ,
1535
1546
1536
- _block_doc_comment : $ => choice (
1537
- field ( 'inner ' , alias ( $ . _inner_block_doc_comment , $ . inner_doc_comment ) ) ,
1538
- field ( 'outer ' , alias ( $ . _outer_block_doc_comment , $ . outer_doc_comment ) ) ,
1547
+ _block_doc_comment_marker : $ => choice (
1548
+ field ( 'outer ' , alias ( $ . _outer_block_doc_comment_marker , $ . outer_doc_comment_marker ) ) ,
1549
+ field ( 'inner ' , alias ( $ . _inner_block_doc_comment_marker , $ . inner_doc_comment_marker ) ) ,
1539
1550
) ,
1540
1551
1541
1552
_path : $ => choice (
0 commit comments