tree-sitter-zsh 0.39.0 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tree-sitter-zsh",
3
- "version": "0.39.0",
3
+ "version": "0.40.0",
4
4
  "description": "Zsh grammar for tree-sitter",
5
5
  "repository": "https://github.com/geohar/tree-sitter-zsh",
6
6
  "license": "MIT",
package/src/scanner.c CHANGED
@@ -1805,20 +1805,14 @@ regex:
1805
1805
  }
1806
1806
  }
1807
1807
 
1808
+ #if DEBUG
1809
+ fprintf(stderr, "DEBUG: regex scan start\n");
1810
+ #endif
1811
+
1808
1812
  lexer->mark_end(lexer);
1809
1813
 
1810
1814
  State state = {false, false, false, false, false, 0, 0, 0};
1811
1815
  while (!state.done) {
1812
- if (state.in_single_quote) {
1813
- if (lexer->lookahead == '\'') {
1814
- state.in_single_quote = false;
1815
- advance(lexer);
1816
- lexer->mark_end(lexer);
1817
-
1818
- // Track entering parameter expansion context
1819
- enter_context(scanner, CTX_RAW_STRING); // FIXME!
1820
- }
1821
- }
1822
1816
  switch (lexer->lookahead) {
1823
1817
  case '\\':
1824
1818
  state.last_was_escape = true;
@@ -1862,8 +1856,26 @@ regex:
1862
1856
  break;
1863
1857
  case '\'':
1864
1858
  // Enter or exit a single-quoted string.
1865
- state.in_single_quote = !state.in_single_quote;
1859
+ if (state.in_single_quote) {
1860
+ state.in_single_quote = false;
1861
+ #if DEBUG
1862
+ fprintf(stderr, "DEBUG: regex scan exit raw string\n");
1863
+ #endif
1864
+
1865
+ // Track entering parameter expansion context
1866
+ exit_context(scanner, CTX_RAW_STRING);
1867
+ } else {
1868
+ state.in_single_quote = true;
1869
+ #if DEBUG
1870
+ fprintf(stderr, "DEBUG: regex scan entering raw string\n");
1871
+ #endif
1872
+
1873
+ // Track entering parameter expansion context
1874
+ enter_context(scanner, CTX_RAW_STRING);
1875
+
1876
+ }
1866
1877
  advance(lexer);
1878
+ lexer->mark_end(lexer);
1867
1879
  state.advanced_once = true;
1868
1880
  state.last_was_escape = false;
1869
1881
  continue;
@@ -1964,6 +1976,10 @@ regex:
1964
1976
  return false;
1965
1977
  }
1966
1978
 
1979
+ #if DEBUG
1980
+ fprintf(stderr, "DEBUG: regex scan returning regex\n");
1981
+ #endif
1982
+
1967
1983
  return true;
1968
1984
  }
1969
1985
  }
Binary file