Subject: [bug#66836] [PATCH v2] gnu: Add tree-sitter-yaml.

From: Hilton Chain <[email-masked]>
Date: Sat, 4 Nov 2023 20:22:10 +0800

From: Emma Turner <[email-masked]>

* gnu/packages/patches/tree-sitter-yaml-fix-tests.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/tree-sitter.scm (tree-sitter-yaml): New variable.

Modified-by: Hilton Chain <[email-masked]>
Change-Id: I45a4a843ecee9dfa580eeaa352f1354915f83881
---
 gnu/local.mk                                  |   1 +
 .../patches/tree-sitter-yaml-fix-tests.patch  | 690 ++++++++++++++++++
 gnu/packages/tree-sitter.scm                  |  15 +
 3 files changed, 706 insertions(+)
 create mode 100644 gnu/packages/patches/tree-sitter-yaml-fix-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 8d817379a7..a5b5afd84b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2045,6 +2045,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tofi-32bit-compat.patch			\
   %D%/packages/patches/tpetra-remove-duplicate-using.patch	\
   %D%/packages/patches/transcode-ffmpeg.patch	\
+  %D%/packages/patches/tree-sitter-yaml-fix-tests.patch	\
   %D%/packages/patches/trytond-add-egg-modules-to-path.patch	\
   %D%/packages/patches/trytond-add-guix_trytond_path.patch	\
   %D%/packages/patches/ttf2eot-cstddef.patch			\
diff --git a/gnu/packages/patches/tree-sitter-yaml-fix-tests.patch b/gnu/packages/patches/tree-sitter-yaml-fix-tests.patch
new file mode 100644
index 0000000000..c658729bab
--- /dev/null
+++ b/gnu/packages/patches/tree-sitter-yaml-fix-tests.patch
@@ -0,0 +1,690 @@
+From 67e0bec12812921672776cf2dd8dfa79e27f6360 Mon Sep 17 00:00:00 2001
+From: Emma Turner <[email-masked]>
+Date: Sun, 29 Oct 2023 16:40:30 +0000
+Subject: [PATCH] fix tests for tree-sitter 0.20.8
+
+---
+ corpus/spec.txt | 492 +++++++++++++++++++-----------------------------
+ 1 file changed, 194 insertions(+), 298 deletions(-)
+
+diff --git a/corpus/spec.txt b/corpus/spec.txt
+index ca75d12..8b64bc4 100644
+--- a/corpus/spec.txt
++++ b/corpus/spec.txt
+@@ -654,23 +654,16 @@ map:
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (block_node
+-            (block_mapping
+-              (block_mapping_pair
+-                key: (flow_node
+-                  (plain_scalar
+-                    (string_scalar)))
+-                value: (flow_node
+-                  (double_quote_scalar)))
+-              (ERROR))))))))
++(ERROR
++  (flow_node
++    (plain_scalar
++      (string_scalar)))
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (flow_node
++      (double_quote_scalar))))
+ 
+ ================================================================================
+ Bad indentation in mapping [INVALID]
+@@ -981,17 +974,13 @@ block scalar: >
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (block_node
+-            (block_scalar)))
+-        (ERROR)))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (block_node
++      (block_scalar))))
+ 
+ ================================================================================
+ Block Sequence in Block Mapping
+@@ -1212,19 +1201,15 @@ key: word1
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (comment)
+-        (ERROR)))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (flow_node
++      (plain_scalar
++        (string_scalar))))
++  (comment))
+ 
+ ================================================================================
+ Comment that looks like a mapping key [INVALID]
+@@ -1234,22 +1219,18 @@ this is #not a: key
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (ERROR
+-          (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (comment)))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (flow_node
++      (plain_scalar
++        (string_scalar))))
++  (flow_node
++    (plain_scalar
++      (string_scalar)))
++  (comment))
+ 
+ ================================================================================
+ Comment without whitespace after block scalar indicator [INVALID]
+@@ -1415,15 +1396,10 @@ key: "missing closing quote
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (ERROR)))))
++(ERROR
++  (flow_node
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Doublequoted scalar starting with a tab
+@@ -2116,8 +2092,10 @@ Invalid document markers in flow style [INVALID]
+ 
+ --------------------------------------------------------------------------------
+ 
+-(ERROR
+-  (string_scalar))
++(stream
++  (ERROR)
++  (document)
++  (MISSING _eof))
+ 
+ ================================================================================
+ Invalid document-end marker in single quoted string [INVALID]
+@@ -2192,8 +2170,7 @@ invalid: x
+         (string_scalar))))
+   (flow_node
+     (plain_scalar
+-      (string_scalar)))
+-  (string_scalar))
++      (string_scalar))))
+ 
+ ================================================================================
+ Invalid mapping in plain multiline [INVALID]
+@@ -2270,20 +2247,14 @@ invalid
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_sequence
+-        (block_sequence_item
+-          (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (block_sequence_item
+-          (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (ERROR
+-          (string_scalar))))))
++(ERROR
++  (block_sequence_item
++    (flow_node
++      (plain_scalar
++        (string_scalar))))
++  (flow_node
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Invalid scalar at the end of mapping [INVALID]
+@@ -2295,28 +2266,24 @@ invalid
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
++(ERROR
++  (block_mapping_pair
++    (flow_node
++      (plain_scalar
++        (string_scalar)))
+     (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
++      (block_sequence
++        (block_sequence_item
++          (flow_node
+             (plain_scalar
+-              (string_scalar)))
+-          value: (block_node
+-            (block_sequence
+-              (block_sequence_item
+-                (flow_node
+-                  (plain_scalar
+-                    (string_scalar))))
+-              (block_sequence_item
+-                (flow_node
+-                  (plain_scalar
+-                    (string_scalar)))))))
+-        (ERROR
++              (string_scalar))))
++        (block_sequence_item
+           (flow_node
+             (plain_scalar
+-              (string_scalar))))))))
++              (string_scalar)))))))
++  (flow_node
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Invalid scalar at the end of sequence [INVALID]
+@@ -2328,26 +2295,17 @@ key:
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (block_node
+-            (block_sequence
+-              (block_sequence_item
+-                (flow_node
+-                  (plain_scalar
+-                    (string_scalar))))
+-              (block_sequence_item
+-                (flow_node
+-                  (plain_scalar
+-                    (string_scalar))))
+-              (ERROR
+-                (string_scalar)))))))))
++(ERROR
++  (flow_node
++    (plain_scalar
++      (string_scalar)))
++  (block_sequence_item
++    (flow_node
++      (plain_scalar
++        (string_scalar))))
++  (flow_node
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Invalid sequene item on same line as previous item [INVALID]
+@@ -2420,21 +2378,17 @@ invalid
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (ERROR
+-          (flow_node
+-            (plain_scalar
+-              (string_scalar))))))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (flow_node
++      (plain_scalar
++        (string_scalar))))
++  (flow_node
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Key with anchor after missing explicit mapping value
+@@ -2507,17 +2461,13 @@ block scalar: |
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (block_node
+-            (block_scalar)))
+-        (ERROR)))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (block_node
++      (block_scalar))))
+ 
+ ================================================================================
+ Literal unicode
+@@ -2647,27 +2597,23 @@ top2
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (block_node
+       (block_mapping
+         (block_mapping_pair
+           key: (flow_node
+             (plain_scalar
+               (string_scalar)))
+-          value: (block_node
+-            (block_mapping
+-              (block_mapping_pair
+-                key: (flow_node
+-                  (plain_scalar
+-                    (string_scalar)))
+-                value: (flow_node
+-                  (plain_scalar
+-                    (string_scalar)))))))
+-        (ERROR
+-          (flow_node
++          value: (flow_node
+             (plain_scalar
+-              (string_scalar))))))))
++              (string_scalar)))))))
++  (flow_node
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Missing comma in flow [INVALID]
+@@ -2678,19 +2624,14 @@ key: [ word1
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (ERROR
+-          (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          (comment))))))
++(ERROR
++  (flow_node
++    (plain_scalar
++      (string_scalar)))
++  (flow_node
++    (plain_scalar
++      (string_scalar)))
++  (comment))
+ 
+ ================================================================================
+ Missing document-end marker before directive [INVALID]
+@@ -2703,17 +2644,11 @@ scalar2
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document)
+-  (ERROR
+-    (flow_node
+-      (plain_scalar
+-        (string_scalar)))
+-    (comment))
+-  (document
+-    (flow_node
+-      (plain_scalar
+-        (string_scalar)))))
++(ERROR
++  (flow_node
++    (plain_scalar
++      (string_scalar)))
++  (comment))
+ 
+ ================================================================================
+ Missing space in YAML directive
+@@ -2924,18 +2859,14 @@ Multiline double quoted implicit keys [INVALID]
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (double_quote_scalar
+-              (escape_sequence)))
+-          value: (flow_node
+-            (plain_scalar
+-              (integer_scalar))))
+-        (ERROR)))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (double_quote_scalar
++        (escape_sequence)))
++    value: (flow_node
++      (plain_scalar
++        (integer_scalar)))))
+ 
+ ================================================================================
+ Multiline doublequoted flow mapping key without value
+@@ -3207,17 +3138,13 @@ Multiline single quoted implicit keys [INVALID]
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (single_quote_scalar))
+-          value: (flow_node
+-            (plain_scalar
+-              (integer_scalar))))
+-        (ERROR)))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (single_quote_scalar))
++    value: (flow_node
++      (plain_scalar
++        (integer_scalar)))))
+ 
+ ================================================================================
+ Multiple Entry Block Sequence
+@@ -3529,19 +3456,16 @@ key: &x
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (flow_node
+-            (anchor
+-              (anchor_name))))
+-        (ERROR
+-          (tag))))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (flow_node
++      (anchor
++        (anchor_name))))
++  (flow_node
++    (tag)))
+ 
+ ================================================================================
+ Node and Mapping Key Anchors
+@@ -3922,40 +3846,34 @@ top2: &node2
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (block_node
++      (anchor
++        (anchor_name))
+       (block_mapping
+         (block_mapping_pair
+           key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (block_node
+             (anchor
+               (anchor_name))
+-            (block_mapping
+-              (block_mapping_pair
+-                key: (flow_node
+-                  (anchor
+-                    (anchor_name))
+-                  (plain_scalar
+-                    (string_scalar)))
+-                value: (flow_node
+-                  (plain_scalar
+-                    (string_scalar)))))))
+-        (block_mapping_pair
+-          key: (flow_node
+             (plain_scalar
+               (string_scalar)))
+           value: (flow_node
+-            (anchor
+-              (anchor_name))))
+-        (ERROR
+-          (flow_node
+-            (anchor
+-              (anchor_name))
+             (plain_scalar
+-              (string_scalar))))))))
++              (string_scalar)))))))
++  (flow_node
++    (plain_scalar
++      (string_scalar)))
++  (anchor
++    (anchor_name))
++  (flow_node
++    (anchor
++      (anchor_name))
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Scalars on --- line
+@@ -8728,19 +8646,15 @@ plain: a
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          value: (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (comment)
+-        (ERROR)))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (flow_node
++      (plain_scalar
++        (string_scalar))))
++  (comment))
+ 
+ ================================================================================
+ Trailing content after quoted value [INVALID]
+@@ -9607,20 +9521,13 @@ c]
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (ERROR
+-          (flow_node
+-            (plain_scalar
+-              (string_scalar)))
+-          (string_scalar)
+-          (string_scalar))))))
++(ERROR
++  (flow_node
++    (plain_scalar
++      (string_scalar)))
++  (flow_node
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Wrong indented multiline quoted scalar [INVALID]
+@@ -9632,17 +9539,10 @@ c"
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (document
+-    (block_node
+-      (block_mapping
+-        (block_mapping_pair
+-          key: (flow_node
+-            (plain_scalar
+-              (string_scalar))))
+-        (ERROR
+-          (string_scalar)
+-          (string_scalar))))))
++(ERROR
++  (flow_node
++    (plain_scalar
++      (string_scalar))))
+ 
+ ================================================================================
+ Wrong indented sequence item [INVALID]
+@@ -9671,18 +9571,14 @@ key: value
+ 
+ --------------------------------------------------------------------------------
+ 
+-(stream
+-  (ERROR
+-    (block_mapping_pair
+-      key: (flow_node
+-        (plain_scalar
+-          (string_scalar)))
+-      value: (flow_node
+-        (plain_scalar
+-          (string_scalar)))))
+-  (document
+-    (yaml_directive
+-      (yaml_version))))
++(ERROR
++  (block_mapping_pair
++    key: (flow_node
++      (plain_scalar
++        (string_scalar)))
++    value: (flow_node
++      (plain_scalar
++        (string_scalar)))))
+ 
+ ================================================================================
+ Zero indented block scalar
+
+base-commit: 6129a83eeec7d6070b1c0567ec7ce3509ead607c
+-- 
+2.41.0
+
diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm
index 41257d42f1..f2bfff748b 100644
--- a/gnu/packages/tree-sitter.scm
+++ b/gnu/packages/tree-sitter.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2023 Nicolas Graves <[email-masked]>
 ;;; Copyright © 2023 Zheng Junjie <[email-masked]>
 ;;; Copyright © 2023 Raven Hallsby <[email-masked]>
+;;; Copyright © 2023 Emma Turner <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -629,3 +630,17 @@ (define-public tree-sitter-scala
    "scala" "Scala"
    "0hs6gmkq5cx9qrmgfz1mh0c34flwffc0k2mhwf13laawswnywfkz"
    "0.20.2"))
+
+(define-public tree-sitter-yaml
+  (let ((base (tree-sitter-grammar
+               "yaml" "Yaml"
+               "1bimf5fq85wn8dwlk665w15n2bj37fma5rsfxrph3i9yb0lvzi3q"
+               "0.5.0"
+               #:repository-url
+               "https://github.com/ikatyang/tree-sitter-yaml")))
+    (package
+      (inherit base)
+      (source (origin
+                (inherit (package-source base))
+                (patches
+                 (search-patches "tree-sitter-yaml-fix-tests.patch")))))))

base-commit: 9dcd8802f5bc472579f23a38dcf437f8a9ac976c
-- 
2.41.0