From 5cf143228fdc6fdc5356f089b2dbe2b130942e58 Mon Sep 17 00:00:00 2001 From: Wilfred Hughes Date: Thu, 27 Jan 2022 20:25:17 -0800 Subject: [PATCH] Treat attribute IDs in OCaml as atoms Fixes #114 --- CHANGELOG.md | 4 ++++ sample_files/ocaml_after.ml | 6 ++++++ sample_files/ocaml_before.ml | 4 ++++ src/tree_sitter_parser.rs | 8 +++++++- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4ceb0921..369744158 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## 0.18 (unreleased) +### Parsing + +Fixed an issue with missing positions in OCaml attribute syntax. + ### Display Fixed display issues where lines were printed more than once. diff --git a/sample_files/ocaml_after.ml b/sample_files/ocaml_after.ml index 7a10b1421..3af4d9e59 100644 --- a/sample_files/ocaml_after.ml +++ b/sample_files/ocaml_after.ml @@ -12,3 +12,9 @@ let do_stuff x = let stuffs y = y + 1 + +type thing = + | X [@visitor.opaque] + | Y +[@@visitor.opaque] + diff --git a/sample_files/ocaml_before.ml b/sample_files/ocaml_before.ml index 3f54f8890..2b6196acc 100644 --- a/sample_files/ocaml_before.ml +++ b/sample_files/ocaml_before.ml @@ -14,3 +14,7 @@ let do_stuff x = let stuffs y = y + 1 + +type thing = + | X + | Y diff --git a/src/tree_sitter_parser.rs b/src/tree_sitter_parser.rs index ab061fa08..d5f454922 100644 --- a/src/tree_sitter_parser.rs +++ b/src/tree_sitter_parser.rs @@ -68,7 +68,13 @@ extern "C" { } // TODO: begin/end and object/end. -const OCAML_ATOM_NODES: [&str; 4] = ["character", "string", "tag", "type_variable"]; +const OCAML_ATOM_NODES: [&str; 5] = [ + "character", + "string", + "tag", + "type_variable", + "attribute_id", +]; pub fn from_language(language: guess::Language) -> TreeSitterConfig { use guess::Language::*;