diff --git a/Cargo.lock b/Cargo.lock index cddf5be6..ff8a1354 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16,9 +16,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -100,9 +100,9 @@ checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bincode" @@ -119,7 +119,7 @@ version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cexpr", "clang-sys", "itertools", @@ -144,21 +144,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "bumpalo" -version = "3.15.4" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" @@ -263,9 +263,9 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -289,18 +289,18 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cranelift-bforest" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3775cc6cc00c90d29eebea55feedb2b0168e23f5415bab7859c4004d7323d1" +checksum = "3b57d4f3ffc28bbd6ef1ca7b50b20126717232f97487efe027d135d9d87eb29c" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637f3184ba5bfa48d425bad1d2e4faf5fcf619f5e0ca107edc6dc02f589d4d74" +checksum = "d1f7d0ac7fd53f2c29db3ff9a063f6ff5a8be2abaa8f6942aceb6e1521e70df7" dependencies = [ "bumpalo", "cranelift-bforest", @@ -310,7 +310,7 @@ dependencies = [ "cranelift-entity", "cranelift-isle", "gimli", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "log", "regalloc2", "smallvec", @@ -319,33 +319,33 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b35b8240462341d94d31aab807cad704683988708261aecae3d57db48b7212" +checksum = "b40bf21460a600178956cb7fd900a7408c6587fbb988a8063f7215361801a1da" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3cd1555aa9df1d6d8375732de41b4cb0d787006948d55b6d004d521e9efeb0" +checksum = "d792ecc1243b7ebec4a7f77d9ed428ef27456eeb1f8c780587a6f5c38841be19" [[package]] name = "cranelift-control" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b31a562a10e98ab148fa146801e20665c5f9eda4fce9b2c5a3836575887d74" +checksum = "cea2808043df964b73ad7582e09afbbe06a31f3fb9db834d53e74b4e16facaeb" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1e0467700a3f4fccf5feddbaebdf8b0eb82535b06a9600c4bc5df40872e75d" +checksum = "f1930946836da6f514da87625cd1a0331f3908e0de454628c24a0b97b130c4d4" dependencies = [ "serde", "serde_derive", @@ -353,9 +353,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb918ee2c23939262efd1b99d76a21212ac7bd35129582133e21a22a6ff0467" +checksum = "5482a5fcdf98f2f31b21093643bdcfe9030866b8be6481117022e7f52baa0f2b" dependencies = [ "cranelift-codegen", "log", @@ -365,15 +365,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966e4cfb23cf6d7f1d285d53a912baaffc5f06bcd9c9b0a2d8c66a184fae534b" +checksum = "6f6e1869b6053383bdb356900e42e33555b4c9ebee05699469b7c53cdafc82ea" [[package]] name = "cranelift-native" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea803aadfc4aabdfae7c3870f1b1f6dd4332f4091859e9758ef5fca6bf8cc87" +checksum = "a91446e8045f1c4bc164b7bba68e2419c623904580d4b730877a663c6da38964" dependencies = [ "cranelift-codegen", "libc", @@ -382,9 +382,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.106.1" +version = "0.106.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d18a3572cd897555bba3621e568029417d8f5cc26aeede2d7cb0bad6afd916" +checksum = "f8b17979b862d3b0d52de6ae3294ffe4d86c36027b56ad0443a7c8c8f921d14f" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -460,9 +460,9 @@ dependencies = [ [[package]] name = "either" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "equivalent" @@ -488,9 +488,9 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "filetime" @@ -525,9 +525,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "libc", @@ -551,7 +551,7 @@ version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", "libgit2-sys", "log", @@ -577,9 +577,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", ] @@ -631,7 +631,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] @@ -652,9 +652,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jni" @@ -741,18 +741,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", - "redox_syscall", ] [[package]] @@ -771,9 +770,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.15" +version = "1.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6" +checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" dependencies = [ "cc", "libc", @@ -828,9 +827,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -853,7 +852,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cfg-if", "cfg_aliases", "libc", @@ -885,7 +884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "crc32fast", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "indexmap", "memchr", ] @@ -904,9 +903,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.101" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -934,9 +933,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pkg-config" @@ -962,9 +961,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.16" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" dependencies = [ "proc-macro2", "syn", @@ -972,9 +971,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -990,9 +989,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1044,9 +1043,9 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", @@ -1103,11 +1102,11 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", @@ -1137,18 +1136,18 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.198" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" dependencies = [ "proc-macro2", "quote", @@ -1196,9 +1195,9 @@ checksum = "fcc3fc564a4b53fd1e8589628efafe57602d91bde78be18186b5f61e8faea470" [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "sptr" @@ -1214,15 +1213,15 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.53" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -1317,9 +1316,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.8" +version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c12219811e0c1ba077867254e5ad62ee2c9c190b0d957110750ac0cda1ae96cd" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ "indexmap", "serde", @@ -1621,16 +1620,16 @@ version = "0.201.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84e5df6dba6c0d7fafc63a450f1738451ed7a0b52295d83e868218fa286bf708" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "indexmap", "semver", ] [[package]] name = "wasmtime" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516be5b58a8f75d39b01378516dcb0ff7b9bc39c7f1f10eec5b338d4916cf988" +checksum = "4e300c0e3f19dc9064e3b17ce661088646c70dbdde36aab46470ed68ba58db7d" dependencies = [ "anyhow", "bincode", @@ -1659,18 +1658,18 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d22d88a92d69385f18143c946884bf6aaa9ec206ce54c85a2d320c1362b009" +checksum = "110aa598e02a136fb095ca70fa96367fc16bab55256a131e66f9b58f16c73daf" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-c-api-impl" -version = "19.0.0" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dea28073e105735210b9e932b5e654198d5e28ed31f1314037cd7664ceda2b" +checksum = "be684dae96dc2d371317848f352135333fcefc3483b67ade73031f9cdbbae52e" dependencies = [ "anyhow", "log", @@ -1682,9 +1681,9 @@ dependencies = [ [[package]] name = "wasmtime-c-api-macros" -version = "19.0.0" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfe12050fa28b17ab8434ab757fee281dd0d5c7715fa1bc5e4c0b29d1705415" +checksum = "ab36d96e82e247a44b0500d8e1ccc103da5d24da017f5466d0d8cb6a1b2383f8" dependencies = [ "proc-macro2", "quote", @@ -1692,9 +1691,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "961ab5ee4b17e627001b18069ee89ef906edbbd3f84955515f6aad5ab6d82299" +checksum = "e923262451a4b5b39fe02f69f1338d56356db470e289ea1887346b9c7f592738" dependencies = [ "anyhow", "cfg-if", @@ -1717,9 +1716,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift-shared" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc4db94596be14cd1f85844ce85470bf68acf235143098b9d9bf72b49e47b917" +checksum = "508898cbbea0df81a5d29cfc1c7c72431a1bc4c9e89fd9514b4c868474c05c7a" dependencies = [ "anyhow", "cranelift-codegen", @@ -1733,9 +1732,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420b13858ef27dfd116f1fdb0513e9593a307a632ade2ea58334b639a3d8d24e" +checksum = "d7e3f2aa72dbb64c19708646e1ff97650f34e254598b82bad5578ea9c80edd30" dependencies = [ "anyhow", "bincode", @@ -1754,9 +1753,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c48eb4223d6556ffbf3decb146d0da124f1fd043f41c98b705252cb6a5c186" +checksum = "c22ca2ef4d87b23d400660373453e274b2251bc2d674e3102497f690135e04b0" dependencies = [ "cfg-if", "libc", @@ -1765,9 +1764,9 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fefac2cb5f5a6f365234a3584bf40bd2e45e7f6cd90a689d9b2afbb9881978f" +checksum = "1806ee242ca4fd183309b7406e4e83ae7739b7569f395d56700de7c7ef9f5eb8" dependencies = [ "anyhow", "cc", @@ -1792,15 +1791,15 @@ dependencies = [ [[package]] name = "wasmtime-slab" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d7b97b92df126fdbe994a53d2215828ec5ed5087535e6d4703b1fbd299f0e3" +checksum = "20c58bef9ce877fd06acb58f08d003af17cb05cc51225b455e999fbad8e584c0" [[package]] name = "wasmtime-types" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "509c88abb830819b259c49e2d4e4f22b555db066ba08ded0b76b071a2aa53ddf" +checksum = "cebe297aa063136d9d2e5b347c1528868aa43c2c8d0e1eb0eec144567e38fe0f" dependencies = [ "cranelift-entity", "serde", @@ -1811,9 +1810,9 @@ dependencies = [ [[package]] name = "wasmtime-versioned-export-macros" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d81c092a61ca1667013e2eb08fed7c6c53e496dbbaa32d5685dc5152b0a772" +checksum = "ffaafa5c12355b1a9ee068e9295d50c4ca0a400c721950cdae4f5b54391a2da5" dependencies = [ "proc-macro2", "quote", @@ -1822,9 +1821,9 @@ dependencies = [ [[package]] name = "wasmtime-wmemcheck" -version = "19.0.1" +version = "19.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b77212b6874bbc86d220bb1d28632d0c11c6afe996c3e1ddcf746b1a6b4919b9" +checksum = "c9a8c62e9df8322b2166d2a6f096fbec195ddb093748fd74170dcf25ef596769" [[package]] name = "web-sys" @@ -1883,11 +1882,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1920,7 +1919,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -1955,17 +1954,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -1982,9 +1982,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -2000,9 +2000,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -2018,9 +2018,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -2036,9 +2042,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -2054,9 +2060,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -2072,9 +2078,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -2090,15 +2096,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +checksum = "14b9415ee827af173ebb3f15f9083df5a122eb93572ec28741fb153356ea2578" dependencies = [ "memchr", ] diff --git a/cli/src/generate/dsl.js b/cli/src/generate/dsl.js index 2deafd65..3b9b1824 100644 --- a/cli/src/generate/dsl.js +++ b/cli/src/generate/dsl.js @@ -418,7 +418,20 @@ function grammar(baseGrammar, options) { throw new Error("Grammar must have at least one rule."); } - return { grammar: { name, inherits, word, rules, extras, conflicts, precedences, externals, inline, supertypes } }; + return { + grammar: { + name, + ...(inherits ? ( inherits ) : {}), + word, + rules, + extras, + conflicts, + precedences, + externals, + inline, + supertypes, + }, + }; } function checkArguments(args, ruleCount, caller, callerName, suffix = '', argType = 'rule') { diff --git a/cli/src/tests/node_test.rs b/cli/src/tests/node_test.rs index f226a890..222a280d 100644 --- a/cli/src/tests/node_test.rs +++ b/cli/src/tests/node_test.rs @@ -1,5 +1,3 @@ -use std::fs; - use tree_sitter::{Node, Parser, Point, Tree}; use super::helpers::{ @@ -7,7 +5,10 @@ use super::helpers::{ fixtures::{fixtures_dir, get_language, get_test_language}, random::Rand, }; -use crate::{generate::generate_parser_for_grammar, parse::perform_edit}; +use crate::{ + generate::{generate_parser_for_grammar, load_grammar_file}, + parse::perform_edit, +}; const JSON_EXAMPLE: &str = r#" @@ -853,17 +854,17 @@ fn test_node_field_calls_in_language_without_fields() { #[test] fn test_node_is_named_but_aliased_as_anonymous() { - let (parser_name, parser_code) = generate_parser_for_grammar( - &fs::read_to_string( - fixtures_dir() - .join("test_grammars") - .join("named_rule_aliased_as_anonymous") - .join("grammar.json"), - ) - .unwrap(), + let grammar_json = load_grammar_file( + &fixtures_dir() + .join("test_grammars") + .join("named_rule_aliased_as_anonymous") + .join("grammar.js"), + None, ) .unwrap(); + let (parser_name, parser_code) = generate_parser_for_grammar(&grammar_json).unwrap(); + let mut parser = Parser::new(); let language = get_test_language(&parser_name, &parser_code, None); parser.set_language(&language).unwrap(); diff --git a/cli/src/tests/parser_test.rs b/cli/src/tests/parser_test.rs index 76ec7c49..9e5f92ce 100644 --- a/cli/src/tests/parser_test.rs +++ b/cli/src/tests/parser_test.rs @@ -1,5 +1,4 @@ use std::{ - fs, sync::atomic::{AtomicUsize, Ordering}, thread, time, }; @@ -13,7 +12,7 @@ use super::helpers::{ fixtures::{get_language, get_test_language}, }; use crate::{ - generate::generate_parser_for_grammar, + generate::{generate_parser_for_grammar, load_grammar_file}, parse::{perform_edit, Edit}, tests::helpers::fixtures::fixtures_dir, }; @@ -432,8 +431,8 @@ fn test_parsing_after_editing_tree_that_depends_on_column_values() { let dir = fixtures_dir() .join("test_grammars") .join("uses_current_column"); - let grammar = fs::read_to_string(dir.join("grammar.json")).unwrap(); - let (grammar_name, parser_code) = generate_parser_for_grammar(&grammar).unwrap(); + let grammar_json = load_grammar_file(&dir.join("grammar.js"), None).unwrap(); + let (grammar_name, parser_code) = generate_parser_for_grammar(&grammar_json).unwrap(); let mut parser = Parser::new(); parser diff --git a/test/fixtures/test_grammars/lexical_conflicts_due_to_state_merging/grammar.js b/test/fixtures/test_grammars/lexical_conflicts_due_to_state_merging/grammar.js new file mode 100644 index 00000000..4868dc81 --- /dev/null +++ b/test/fixtures/test_grammars/lexical_conflicts_due_to_state_merging/grammar.js @@ -0,0 +1,31 @@ +module.exports = grammar({ + name: 'lexical_conflicts_due_to_state_merging', + + rules: { + expression: $ => choice( + $.conditional, + $.quotient, + $.regex, + $.number, + $.parenthesized, + ), + + conditional: $ => prec.left(1, seq( + 'if', + $.parenthesized, + $.expression + )), + + quotient: $ => prec.left(seq( + $.expression, + '/', + $.expression + )), + + regex: $ => /\/[^/\n]+\//, + + number: $ => /\d+/, + + parenthesized: $ => seq('(', $.expression, ')'), + }, +}); diff --git a/test/fixtures/test_grammars/lexical_conflicts_due_to_state_merging/grammar.json b/test/fixtures/test_grammars/lexical_conflicts_due_to_state_merging/grammar.json deleted file mode 100644 index 143d6f2d..00000000 --- a/test/fixtures/test_grammars/lexical_conflicts_due_to_state_merging/grammar.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "lexical_conflicts_due_to_state_merging", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "expression": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "conditional"}, - {"type": "SYMBOL", "name": "regex"}, - {"type": "SYMBOL", "name": "quotient"}, - {"type": "SYMBOL", "name": "number"}, - {"type": "SYMBOL", "name": "parenthesized"} - ] - }, - - "conditional": { - "type": "PREC_LEFT", - "value": 1, - "content": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "if"}, - {"type": "SYMBOL", "name": "parenthesized"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - }, - - "quotient": { - "type": "PREC_LEFT", - "value": 0, - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "/"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - }, - - "regex": { - "type": "PATTERN", - "value": "/[^/\n]+/" - }, - - "number": { - "type": "PATTERN", - "value": "\\d+" - }, - - "parenthesized": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "("}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": ")"} - ] - } - } -} \ No newline at end of file diff --git a/test/fixtures/test_grammars/named_precedences/grammar.js b/test/fixtures/test_grammars/named_precedences/grammar.js new file mode 100644 index 00000000..2132385b --- /dev/null +++ b/test/fixtures/test_grammars/named_precedences/grammar.js @@ -0,0 +1,48 @@ +module.exports = grammar({ + name: 'named_precedences', + + conflicts: $ => [ + [$.expression, $.type], + [$.expression, $.nested_type], + ], + + precedences: $ => [ + [$.member_expression, "and", "or"], + [$.nested_type, "type_intersection", "type_union"], + ], + + rules: { + program: $ => repeat(choice( + $.expression_statement, + $.declaration_statement, + )), + + expression_statement: $ => seq($.expression, ';'), + + declaration_statement: $ => seq($.type, $.expression, ';'), + + expression: $ => choice( + $.member_expression, + $.binary_expression, + $.identifier, + ), + + member_expression: $ => seq($.expression, '.', $.identifier), + + binary_expression: $ => choice( + prec.left('or', seq($.expression, '||', $.expression)), + prec.left('and', seq($.expression, '&&', $.expression)), + ), + + type: $ => choice($.nested_type, $.binary_type, $.identifier), + + nested_type: $ => seq($.identifier, '.', $.identifier), + + binary_type: $ => choice( + prec.left('type_union', seq($.type, '||', $.type)), + prec.left('type_intersection', seq($.type, '&&', $.type)), + ), + + identifier: $ => /[a-z]\w+/, + }, +}); diff --git a/test/fixtures/test_grammars/named_precedences/grammar.json b/test/fixtures/test_grammars/named_precedences/grammar.json deleted file mode 100644 index ec679ca0..00000000 --- a/test/fixtures/test_grammars/named_precedences/grammar.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "name": "named_precedences", - - "extras": [ - { - "type": "PATTERN", - "value": "\\s+" - } - ], - - "precedences": [ - [ - {"type": "SYMBOL", "name": "member_expression"}, - {"type": "STRING", "value": "and"}, - {"type": "STRING", "value": "or"} - ], - [ - {"type": "SYMBOL", "name": "nested_type"}, - {"type": "STRING", "value": "type_intersection"}, - {"type": "STRING", "value": "type_union"} - ] - ], - - "conflicts": [ - ["expression", "type"], - ["expression", "nested_type"] - ], - - "rules": { - "program": { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "expression_statement"}, - {"type": "SYMBOL", "name": "declaration_statement"} - ] - } - }, - - "expression_statement": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": ";"} - ] - }, - - "declaration_statement": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "type"}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": ";"} - ] - }, - - "expression": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "member_expression"}, - {"type": "SYMBOL", "name": "binary_expression"}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "member_expression": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "."}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "binary_expression": { - "type": "CHOICE", - "members": [ - { - "type": "PREC_LEFT", - "value": "or", - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "||"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - }, - { - "type": "PREC_LEFT", - "value": "and", - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "&&"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - } - ] - }, - - "type": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "nested_type"}, - {"type": "SYMBOL", "name": "binary_type"}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "nested_type": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "STRING", "value": "."}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "binary_type": { - "type": "CHOICE", - "members": [ - { - "type": "PREC_LEFT", - "value": "type_union", - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "type"}, - {"type": "STRING", "value": "||"}, - {"type": "SYMBOL", "name": "type"} - ] - } - }, - { - "type": "PREC_LEFT", - "value": "type_intersection", - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "type"}, - {"type": "STRING", "value": "&&"}, - {"type": "SYMBOL", "name": "type"} - ] - } - } - ] - }, - - "identifier": { - "type": "PATTERN", - "value": "[a-z]\\w+" - } - } -} diff --git a/test/fixtures/test_grammars/named_rule_aliased_as_anonymous/grammar.js b/test/fixtures/test_grammars/named_rule_aliased_as_anonymous/grammar.js new file mode 100644 index 00000000..3f30de56 --- /dev/null +++ b/test/fixtures/test_grammars/named_rule_aliased_as_anonymous/grammar.js @@ -0,0 +1,15 @@ +module.exports = grammar({ + name: 'named_rule_aliased_as_anonymous', + + rules: { + a: $ => seq( + alias($.b, 'the-alias'), + $.c, + $.b, + ), + + b: _ => 'B', + + c: _ => 'C', + }, +}); diff --git a/test/fixtures/test_grammars/named_rule_aliased_as_anonymous/grammar.json b/test/fixtures/test_grammars/named_rule_aliased_as_anonymous/grammar.json deleted file mode 100644 index 2ff80dde..00000000 --- a/test/fixtures/test_grammars/named_rule_aliased_as_anonymous/grammar.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "named_rule_aliased_as_anonymous", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "a": { - "type": "SEQ", - "members": [ - { - "type": "ALIAS", - "value": "the-alias", - "named": false, - "content": {"type": "SYMBOL", "name": "b"} - }, - {"type": "SYMBOL", "name": "c"}, - {"type": "SYMBOL", "name": "b"} - ] - }, - - "b": { - "type": "STRING", - "value": "B" - }, - - "c": { - "type": "STRING", - "value": "C" - } - } -} diff --git a/test/fixtures/test_grammars/nested_inlined_rules/grammar.js b/test/fixtures/test_grammars/nested_inlined_rules/grammar.js new file mode 100644 index 00000000..7aaf601b --- /dev/null +++ b/test/fixtures/test_grammars/nested_inlined_rules/grammar.js @@ -0,0 +1,22 @@ +module.exports = grammar({ + name: 'nested_inlined_rules', + + inline: $ => [ + $.top_level_item, + $.statement, + ], + + rules: { + program: $ => repeat1($.top_level_item), + + top_level_item: $ => choice($.statement, '!'), + + statement: $ => choice($.expression_statement, $.return_statement), + + return_statement: $ => seq('return', $.number, ';'), + + expression_statement: $ => seq($.number, ';'), + + number: _ => /\d+/, + }, +}); diff --git a/test/fixtures/test_grammars/nested_inlined_rules/grammar.json b/test/fixtures/test_grammars/nested_inlined_rules/grammar.json deleted file mode 100644 index f240de1f..00000000 --- a/test/fixtures/test_grammars/nested_inlined_rules/grammar.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "nested_inlined_rules", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "inline": [ - "top_level_item", - "statement" - ], - - "rules": { - "program": { - "type": "REPEAT1", - "content": {"type": "SYMBOL", "name": "top_level_item"} - }, - - "top_level_item": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "statement"}, - {"type": "STRING", "value": "!"} - ] - }, - - "statement": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "expression_statement"}, - {"type": "SYMBOL", "name": "return_statement"} - ] - }, - - "return_statement": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "return"}, - {"type": "SYMBOL", "name": "number"}, - {"type": "STRING", "value": ";"} - ] - }, - - "expression_statement": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "number"}, - {"type": "STRING", "value": ";"} - ] - }, - - "number": {"type": "PATTERN", "value": "\\d+"} - } -} diff --git a/test/fixtures/test_grammars/partially_resolved_conflict/grammar.js b/test/fixtures/test_grammars/partially_resolved_conflict/grammar.js new file mode 100644 index 00000000..cd0d1d65 --- /dev/null +++ b/test/fixtures/test_grammars/partially_resolved_conflict/grammar.js @@ -0,0 +1,19 @@ +module.exports = grammar({ + name: 'partially_resolved_conflict', + + rules: { + expression: $ => choice($.binary, $.identifier), + + unary_a: $ => prec(2, seq('!', $.expression)), + + unary_b: $ => prec(2, seq('!', $.expression)), + + binary: $ => seq( + choice($.unary_a, $.unary_b, $.expression), + '<', + $.expression, + ), + + identifier: _ => /[a-z]+/, + }, +}); diff --git a/test/fixtures/test_grammars/partially_resolved_conflict/grammar.json b/test/fixtures/test_grammars/partially_resolved_conflict/grammar.json deleted file mode 100644 index adca84d9..00000000 --- a/test/fixtures/test_grammars/partially_resolved_conflict/grammar.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "partially_resolved_conflict", - - "rules": { - "expression": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "binary"}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "unary_a": { - "type": "PREC", - "value": 2, - "content": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "!"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - }, - - "unary_b": { - "type": "PREC", - "value": 2, - "content": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "!"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - }, - - "binary": { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "unary_a"}, - {"type": "SYMBOL", "name": "unary_b"}, - {"type": "SYMBOL", "name": "expression"} - ] - }, - {"type": "STRING", "value": "<"}, - {"type": "SYMBOL", "name": "expression"} - ] - }, - - "identifier": { - "type": "PATTERN", - "value": "[a-z]+" - } - } -} diff --git a/test/fixtures/test_grammars/precedence_on_single_child_missing/grammar.js b/test/fixtures/test_grammars/precedence_on_single_child_missing/grammar.js new file mode 100644 index 00000000..fbdb450f --- /dev/null +++ b/test/fixtures/test_grammars/precedence_on_single_child_missing/grammar.js @@ -0,0 +1,17 @@ +module.exports = grammar({ + name: 'precedence_on_single_child_missing', + + rules: { + expression: $ => choice($.function_call, $.identifier), + + function_call: $ => prec.right(choice( + seq($.identifier, $.expression), + seq($.identifier, $.block), + seq($.identifier, $.expression, $.block), + )), + + block: $ => seq('{', $.expression, '}'), + + identifier: _ => /[a-zA-Z]+/, + }, +}); diff --git a/test/fixtures/test_grammars/precedence_on_single_child_missing/grammar.json b/test/fixtures/test_grammars/precedence_on_single_child_missing/grammar.json deleted file mode 100644 index 19852708..00000000 --- a/test/fixtures/test_grammars/precedence_on_single_child_missing/grammar.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "precedence_on_single_child_missing", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "expression": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "function_call"}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "function_call": { - "type": "PREC_RIGHT", - "value": 0, - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "expression"} - ] - }, - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "block"} - ] - }, - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "SYMBOL", "name": "block"} - ] - } - ] - } - }, - - "block": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "{"}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "}"} - ] - }, - - "identifier": { - "type": "PATTERN", - "value": "[a-zA-Z]+" - } - } -} \ No newline at end of file diff --git a/test/fixtures/test_grammars/precedence_on_single_child_negative/grammar.js b/test/fixtures/test_grammars/precedence_on_single_child_negative/grammar.js new file mode 100644 index 00000000..798075db --- /dev/null +++ b/test/fixtures/test_grammars/precedence_on_single_child_negative/grammar.js @@ -0,0 +1,17 @@ +module.exports = grammar({ + name: 'precedence_on_single_child_negative', + + rules: { + expression: $ => choice($.function_call, $.identifier), + + function_call: $ => prec.right(-1, choice( + seq($.identifier, $.expression), + seq($.identifier, $.block), + seq($.identifier, $.expression, $.block), + )), + + block: $ => seq('{', $.expression, '}'), + + identifier: _ => /[a-zA-Z]+/, + }, +}); diff --git a/test/fixtures/test_grammars/precedence_on_single_child_negative/grammar.json b/test/fixtures/test_grammars/precedence_on_single_child_negative/grammar.json deleted file mode 100644 index fc237f54..00000000 --- a/test/fixtures/test_grammars/precedence_on_single_child_negative/grammar.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "precedence_on_single_child_negative", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "expression": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "function_call"}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "function_call": { - "type": "PREC_RIGHT", - "value": -1, - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "expression"} - ] - }, - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "block"} - ] - }, - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "SYMBOL", "name": "block"} - ] - } - ] - } - }, - - "block": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "{"}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "}"} - ] - }, - - "identifier": { - "type": "PATTERN", - "value": "[a-zA-Z]+" - } - } -} \ No newline at end of file diff --git a/test/fixtures/test_grammars/precedence_on_single_child_positive/grammar.js b/test/fixtures/test_grammars/precedence_on_single_child_positive/grammar.js new file mode 100644 index 00000000..d2e57c30 --- /dev/null +++ b/test/fixtures/test_grammars/precedence_on_single_child_positive/grammar.js @@ -0,0 +1,17 @@ +module.exports = grammar({ + name: 'precedence_on_single_child_positive', + + rules: { + expression: $ => choice($.function_call, $.identifier), + + function_call: $ => prec.right(1, choice( + seq($.identifier, $.expression), + seq($.identifier, $.block), + seq($.identifier, $.expression, $.block), + )), + + block: $ => seq('{', $.expression, '}'), + + identifier: _ => /[a-zA-X]+/, + }, +}); diff --git a/test/fixtures/test_grammars/precedence_on_single_child_positive/grammar.json b/test/fixtures/test_grammars/precedence_on_single_child_positive/grammar.json deleted file mode 100644 index 7ffa73ed..00000000 --- a/test/fixtures/test_grammars/precedence_on_single_child_positive/grammar.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "precedence_on_single_child_positive", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "expression": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "function_call"}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "function_call": { - "type": "PREC_RIGHT", - "value": 1, - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "expression"} - ] - }, - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "block"} - ] - }, - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "SYMBOL", "name": "block"} - ] - } - ] - } - }, - - "block": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "{"}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "}"} - ] - }, - - "identifier": { - "type": "PATTERN", - "value": "[a-zA-Z]+" - } - } -} \ No newline at end of file diff --git a/test/fixtures/test_grammars/precedence_on_subsequence/grammar.js b/test/fixtures/test_grammars/precedence_on_subsequence/grammar.js new file mode 100644 index 00000000..3a5bdefb --- /dev/null +++ b/test/fixtures/test_grammars/precedence_on_subsequence/grammar.js @@ -0,0 +1,30 @@ +module.exports = grammar({ + name: 'precedence_on_subsequence', + + rules: { + expression: $ => prec.left(choice( + $.function_call, + $.identifier, + $.scope_resolution, + )), + + function_call: $ => choice( + seq($.identifier, $.expression), + prec(1, seq($.identifier, $.block)), + prec(-1, seq($.identifier, $.do_block)), + seq($.identifier, prec(1, seq($.expression, $.block))), + seq($.identifier, prec(-1, seq($.expression, $.do_block))), + ), + + scope_resolution: $ => prec.left(1, choice( + seq($.expression, '::', $.expression), + seq('::', $.expression), + )), + + block: _ => '{}', + + do_block: _ => 'do end', + + identifier: _ => /[a-zA-Z]+/, + }, +}); diff --git a/test/fixtures/test_grammars/precedence_on_subsequence/grammar.json b/test/fixtures/test_grammars/precedence_on_subsequence/grammar.json deleted file mode 100644 index d992793c..00000000 --- a/test/fixtures/test_grammars/precedence_on_subsequence/grammar.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "name": "precedence_on_subsequence", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "expression": { - "type": "PREC_LEFT", - "value": 0, - "content": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "function_call"}, - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "scope_resolution"} - ] - } - }, - - "function_call": { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "expression"} - ] - }, - - { - "type": "PREC", - "value": 1, - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "block"} - ] - } - }, - - { - "type": "PREC", - "value": -1, - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - {"type": "SYMBOL", "name": "do_block"} - ] - } - }, - - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - { - "type": "PREC", - "value": 1, - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "SYMBOL", "name": "block"} - ] - } - } - ] - }, - - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "identifier"}, - { - "type": "PREC", - "value": -1, - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "SYMBOL", "name": "do_block"} - ] - } - } - ] - } - ] - }, - - "scope_resolution": { - "type": "PREC_LEFT", - "value": 1, - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "::"}, - {"type": "SYMBOL", "name": "expression"} - ] - }, - { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "::"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - ] - } - }, - - "block": { - "type": "STRING", - "value": "{}" - }, - - "do_block": { - "type": "STRING", - "value": "do end" - }, - - "identifier": { - "type": "PATTERN", - "value": "[a-zA-Z]+" - } - } -} diff --git a/test/fixtures/test_grammars/precedence_on_token/grammar.js b/test/fixtures/test_grammars/precedence_on_token/grammar.js new file mode 100644 index 00000000..e56f2d81 --- /dev/null +++ b/test/fixtures/test_grammars/precedence_on_token/grammar.js @@ -0,0 +1,36 @@ +module.exports = grammar({ + name: 'precedence_on_token', + + extras: $ => [ + /\s/, + $.comment, + ], + + rules: { + program: $ => repeat(choice( + $.string, + $.regex, + $.identifier, + $.slash, + )), + + comment: _ => token(prec(1, /\/\/.*|\/\*[^*]*\*\//)), + + string: $ => seq( + '"', + repeat(choice( + token(prec(2, /[^\"\n\\]+/)), + $.escape_sequence, + )), + '"', + ), + + escape_sequence: _ => /\\./, + + regex: _ => /\/[^\/\n]+\/[a-z]*/, + + identifier: _ => /[a-z]\w*/, + + slash: _ => '/', + }, +}); diff --git a/test/fixtures/test_grammars/precedence_on_token/grammar.json b/test/fixtures/test_grammars/precedence_on_token/grammar.json deleted file mode 100644 index 8ba7e69a..00000000 --- a/test/fixtures/test_grammars/precedence_on_token/grammar.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "name": "precedence_on_token", - - "extras": [ - {"type": "SYMBOL", "name": "comment"}, - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "program": { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "string" - }, - { - "type": "SYMBOL", - "name": "regex" - }, - { - "type": "SYMBOL", - "name": "identifier" - }, - { - "type": "SYMBOL", - "name": "slash" - } - ] - } - }, - - "comment": { - "type": "TOKEN", - "content": { - "type": "PREC", - "value": 1, - "content": { - "type": "PATTERN", - "value": "//.*|/\\*[^*]*\\*/" - } - } - }, - - "string": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "\""}, - - { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - { - "type": "TOKEN", - "content": { - "type": "PREC", - "value": 2, - "content": { - "type": "PATTERN", - "value": "[^\"\n\\\\]+" - } - } - }, - { - "type": "SYMBOL", - "name": "escape_sequence" - } - ] - } - }, - - {"type": "STRING", "value": "\""} - ] - }, - - "escape_sequence": { - "type": "PATTERN", - "value": "\\\\." - }, - - "regex": { - "type": "PATTERN", - "value": "/[^/\n]+/[a-z]*" - }, - - "identifier": { - "type": "PATTERN", - "value": "[a-z]\\w*" - }, - - "slash": { - "type": "STRING", - "value": "/" - } - } -} diff --git a/test/fixtures/test_grammars/readme_grammar/grammar.js b/test/fixtures/test_grammars/readme_grammar/grammar.js new file mode 100644 index 00000000..9f3ce6dd --- /dev/null +++ b/test/fixtures/test_grammars/readme_grammar/grammar.js @@ -0,0 +1,36 @@ +module.exports = grammar({ + name: 'readme_grammar', + + // Things that can appear anywhere in the language, like comments + // and whitespace, are expressed as 'extras'. + extras: $ => [ + /\s/, + $.comment, + ], + + rules: { + // The first rule listed in the grammar becomes the 'start rule'. + expression: $ => choice( + $.sum, + $.product, + $.number, + $.variable, + seq('(', $.expression, ')'), + ), + + // Tokens like '+' and '*' are described directly within the + // grammar's rules, as opposed to in a separate lexer description. + sum: $ => prec.left(1, seq($.expression, '+', $.expression)), + + // Ambiguities can be resolved at compile time by assigning precedence + // values to rule subtrees. + product: $ => prec.left(2, seq($.expression, '*', $.expression)), + + // Tokens can be specified using ECMAScript regexps. + number: _ => /\d+/, + + comment: _ => /#.*/, + + variable: _ => /[a-zA-Z]\w*/, + }, +}); diff --git a/test/fixtures/test_grammars/readme_grammar/grammar.json b/test/fixtures/test_grammars/readme_grammar/grammar.json deleted file mode 100644 index 91958fd4..00000000 --- a/test/fixtures/test_grammars/readme_grammar/grammar.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "readme_grammar", - - // Things that can appear anywhere in the language, like comments - // and whitespace, are expressed as 'extras'. - "extras": [ - {"type": "PATTERN", "value": "\\s"}, - {"type": "SYMBOL", "name": "comment"} - ], - - "rules": { - - // The first rule listed in the grammar becomes the 'start rule'. - "expression": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "sum"}, - {"type": "SYMBOL", "name": "product"}, - {"type": "SYMBOL", "name": "number"}, - {"type": "SYMBOL", "name": "variable"}, - { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "("}, - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": ")"} - ] - } - ] - }, - - // Tokens like '+' and '*' are described directly within the - // grammar's rules, as opposed to in a separate lexer description. - "sum": { - "type": "PREC_LEFT", - "value": 1, - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "+"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - }, - - // Ambiguities can be resolved at compile time by assigning precedence - // values to rule subtrees. - "product": { - "type": "PREC_LEFT", - "value": 2, - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "expression"}, - {"type": "STRING", "value": "*"}, - {"type": "SYMBOL", "name": "expression"} - ] - } - }, - - // Tokens can be specified using ECMAScript regexps. - "number": {"type": "PATTERN", "value": "\\d+"}, - "comment": {"type": "PATTERN", "value": "#.*"}, - "variable": {"type": "PATTERN", "value": "[a-zA-Z]\\w*"} - } -} \ No newline at end of file diff --git a/test/fixtures/test_grammars/start_rule_is_blank/grammar.js b/test/fixtures/test_grammars/start_rule_is_blank/grammar.js new file mode 100644 index 00000000..b38e0de0 --- /dev/null +++ b/test/fixtures/test_grammars/start_rule_is_blank/grammar.js @@ -0,0 +1,7 @@ +module.exports = grammar({ + name: 'start_rule_is_blank', + + rules: { + first_rule: _ => blank(), + }, +}); diff --git a/test/fixtures/test_grammars/start_rule_is_blank/grammar.json b/test/fixtures/test_grammars/start_rule_is_blank/grammar.json deleted file mode 100644 index 94b6c6c4..00000000 --- a/test/fixtures/test_grammars/start_rule_is_blank/grammar.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "start_rule_is_blank", - "rules": { - "first_rule": {"type": "BLANK"} - } -} \ No newline at end of file diff --git a/test/fixtures/test_grammars/start_rule_is_token/grammar.js b/test/fixtures/test_grammars/start_rule_is_token/grammar.js new file mode 100644 index 00000000..f00433ea --- /dev/null +++ b/test/fixtures/test_grammars/start_rule_is_token/grammar.js @@ -0,0 +1,7 @@ +module.exports = grammar({ + name: 'start_rule_is_token', + + rules: { + first_rule: _ => 'the-value', + }, +}); diff --git a/test/fixtures/test_grammars/start_rule_is_token/grammar.json b/test/fixtures/test_grammars/start_rule_is_token/grammar.json deleted file mode 100644 index 9b60c0d4..00000000 --- a/test/fixtures/test_grammars/start_rule_is_token/grammar.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "start_rule_is_token", - "rules": { - "first_rule": {"type": "STRING", "value": "the-value"} - } -} \ No newline at end of file diff --git a/test/fixtures/test_grammars/unicode_classes/grammar.js b/test/fixtures/test_grammars/unicode_classes/grammar.js new file mode 100644 index 00000000..25dcf13d --- /dev/null +++ b/test/fixtures/test_grammars/unicode_classes/grammar.js @@ -0,0 +1,20 @@ +module.exports = grammar({ + name: 'unicode_classes', + + rules: { + program: $ => repeat(choice( + $.lower, + $.upper, + $.math_sym, + $.letter_number, + )), + + lower: _ => /\p{Ll}\p{L}*/, + + upper: _ => /\p{Lu}\p{L}*/, + + math_sym: _ => /\p{Sm}+/, + + letter_number: _ => /\p{Letter_Number}/, + }, +}); diff --git a/test/fixtures/test_grammars/unicode_classes/grammar.json b/test/fixtures/test_grammars/unicode_classes/grammar.json deleted file mode 100644 index 7a36d0c1..00000000 --- a/test/fixtures/test_grammars/unicode_classes/grammar.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "unicode_classes", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "program": { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "lower"}, - {"type": "SYMBOL", "name": "upper"}, - {"type": "SYMBOL", "name": "math_sym"}, - {"type": "SYMBOL", "name": "letter_number"} - ] - } - }, - - "lower": { - "type": "PATTERN", - "value": "\\p{Ll}\\p{L}*" - }, - - "upper": { - "type": "PATTERN", - "value": "\\p{Lu}\\p{L}*" - }, - - "math_sym": { - "type": "PATTERN", - "value": "\\p{Sm}+" - }, - - "letter_number": { - "type": "PATTERN", - "value": "\\p{Letter_Number}" - } - } -} diff --git a/test/fixtures/test_grammars/unused_rules/grammar.js b/test/fixtures/test_grammars/unused_rules/grammar.js new file mode 100644 index 00000000..462243c8 --- /dev/null +++ b/test/fixtures/test_grammars/unused_rules/grammar.js @@ -0,0 +1,27 @@ +module.exports = grammar({ + name: 'unused_rules', + + rules: { + a: $ => seq($.d, $.h), + + b: _ => 'B', + + c: _ => 'C', + + d: $ => seq($.e, $.f), + + e: _ => 'E', + + f: _ => 'F', + + g: _ => 'G', + + h: $ => seq($.i, $.j), + + i: _ => 'I', + + j: _ => 'J', + + k: _ => 'K', + }, +}); diff --git a/test/fixtures/test_grammars/unused_rules/grammar.json b/test/fixtures/test_grammars/unused_rules/grammar.json deleted file mode 100644 index 7ed2a0da..00000000 --- a/test/fixtures/test_grammars/unused_rules/grammar.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "unused_rules", - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "a": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "d"}, - {"type": "SYMBOL", "name": "h"} - ] - }, - - "b": { - "type": "STRING", - "value": "B" - }, - - "c": { - "type": "STRING", - "value": "C" - }, - - "d": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "e"}, - {"type": "SYMBOL", "name": "f"} - ] - }, - - "e": { - "type": "STRING", - "value": "E" - }, - - "f": { - "type": "STRING", - "value": "F" - }, - - "g": { - "type": "STRING", - "value": "G" - }, - - "h": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "i"}, - {"type": "SYMBOL", "name": "j"} - ] - }, - - "i": { - "type": "STRING", - "value": "I" - }, - - "j": { - "type": "STRING", - "value": "J" - }, - - "k": { - "type": "STRING", - "value": "K" - } - } -} \ No newline at end of file diff --git a/test/fixtures/test_grammars/uses_current_column/grammar.js b/test/fixtures/test_grammars/uses_current_column/grammar.js new file mode 100644 index 00000000..795ad597 --- /dev/null +++ b/test/fixtures/test_grammars/uses_current_column/grammar.js @@ -0,0 +1,36 @@ +module.exports = grammar({ + name: 'uses_current_column', + + externals: $ => [ + $._indent, + $._dedent, + $._newline, + ], + + rules: { + block: $ => repeat1($._statement), + + _statement: $ => seq($._expression, $._newline), + + _expression: $ => choice( + $.do_expression, + $.binary_expression, + $.identifier, + ), + + do_expression: $ => seq( + 'do', + $._indent, + $.block, + $._dedent, + ), + + binary_expression: $ => prec.left(1, seq( + $._expression, + choice('=', '+', '-'), + $._expression, + )), + + identifier: _ => /\w+/, + }, +}); diff --git a/test/fixtures/test_grammars/uses_current_column/grammar.json b/test/fixtures/test_grammars/uses_current_column/grammar.json deleted file mode 100644 index 90c740b6..00000000 --- a/test/fixtures/test_grammars/uses_current_column/grammar.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "uses_current_column", - - "externals": [ - {"type": "SYMBOL", "name": "_indent"}, - {"type": "SYMBOL", "name": "_dedent"}, - {"type": "SYMBOL", "name": "_newline"} - ], - - "extras": [ - {"type": "PATTERN", "value": "\\s"} - ], - - "rules": { - "block": { - "type": "REPEAT1", - "content": {"type": "SYMBOL", "name": "_statement"} - }, - - "_statement": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "_expression"}, - {"type": "SYMBOL", "name": "_newline"} - ] - }, - - "_expression": { - "type": "CHOICE", - "members": [ - {"type": "SYMBOL", "name": "do_expression"}, - {"type": "SYMBOL", "name": "binary_expression"}, - {"type": "SYMBOL", "name": "identifier"} - ] - }, - - "do_expression": { - "type": "SEQ", - "members": [ - {"type": "STRING", "value": "do"}, - {"type": "SYMBOL", "name": "_indent"}, - {"type": "SYMBOL", "name": "block"}, - {"type": "SYMBOL", "name": "_dedent"} - ] - }, - - "binary_expression": { - "type": "PREC_LEFT", - "value": 1, - "content": { - "type": "SEQ", - "members": [ - {"type": "SYMBOL", "name": "_expression"}, - { - "type": "CHOICE", - "members": [ - {"type": "STRING", "value": "="}, - {"type": "STRING", "value": "+"}, - {"type": "STRING", "value": "-"} - ] - }, - {"type": "SYMBOL", "name": "_expression"} - ] - } - }, - - "identifier": {"type": "PATTERN", "value": "\\w+"} - } -}