From 45df4d0d9b577fecee798d672695fe24ff57fb1b Mon Sep 17 00:00:00 2001 From: mo khan Date: Tue, 15 Jul 2025 16:37:08 -0600 Subject: feat: migrate from Cedar to SpiceDB authorization system This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema. --- vendor/rustversion/.cargo-checksum.json | 1 - vendor/rustversion/Cargo.lock | 301 ------------------------ vendor/rustversion/Cargo.toml | 68 ------ vendor/rustversion/LICENSE-APACHE | 176 -------------- vendor/rustversion/LICENSE-MIT | 23 -- vendor/rustversion/README.md | 167 ------------- vendor/rustversion/build/build.rs | 114 --------- vendor/rustversion/build/rustc.rs | 126 ---------- vendor/rustversion/src/attr.rs | 35 --- vendor/rustversion/src/bound.rs | 63 ----- vendor/rustversion/src/constfn.rs | 58 ----- vendor/rustversion/src/date.rs | 50 ---- vendor/rustversion/src/error.rs | 56 ----- vendor/rustversion/src/expand.rs | 72 ------ vendor/rustversion/src/expr.rs | 163 ------------- vendor/rustversion/src/iter.rs | 42 ---- vendor/rustversion/src/lib.rs | 282 ---------------------- vendor/rustversion/src/release.rs | 34 --- vendor/rustversion/src/time.rs | 51 ---- vendor/rustversion/src/token.rs | 78 ------ vendor/rustversion/src/version.rs | 18 -- vendor/rustversion/tests/compiletest.rs | 7 - vendor/rustversion/tests/test_const.rs | 42 ---- vendor/rustversion/tests/test_eval.rs | 20 -- vendor/rustversion/tests/test_parse.rs | 103 -------- vendor/rustversion/tests/ui/bad-bound.rs | 7 - vendor/rustversion/tests/ui/bad-bound.stderr | 11 - vendor/rustversion/tests/ui/bad-date.rs | 7 - vendor/rustversion/tests/ui/bad-date.stderr | 11 - vendor/rustversion/tests/ui/bad-not.rs | 7 - vendor/rustversion/tests/ui/bad-not.stderr | 11 - vendor/rustversion/tests/ui/bad-version.rs | 7 - vendor/rustversion/tests/ui/bad-version.stderr | 11 - vendor/rustversion/tests/ui/const-not-fn.rs | 4 - vendor/rustversion/tests/ui/const-not-fn.stderr | 5 - 35 files changed, 2231 deletions(-) delete mode 100644 vendor/rustversion/.cargo-checksum.json delete mode 100644 vendor/rustversion/Cargo.lock delete mode 100644 vendor/rustversion/Cargo.toml delete mode 100644 vendor/rustversion/LICENSE-APACHE delete mode 100644 vendor/rustversion/LICENSE-MIT delete mode 100644 vendor/rustversion/README.md delete mode 100644 vendor/rustversion/build/build.rs delete mode 100644 vendor/rustversion/build/rustc.rs delete mode 100644 vendor/rustversion/src/attr.rs delete mode 100644 vendor/rustversion/src/bound.rs delete mode 100644 vendor/rustversion/src/constfn.rs delete mode 100644 vendor/rustversion/src/date.rs delete mode 100644 vendor/rustversion/src/error.rs delete mode 100644 vendor/rustversion/src/expand.rs delete mode 100644 vendor/rustversion/src/expr.rs delete mode 100644 vendor/rustversion/src/iter.rs delete mode 100644 vendor/rustversion/src/lib.rs delete mode 100644 vendor/rustversion/src/release.rs delete mode 100644 vendor/rustversion/src/time.rs delete mode 100644 vendor/rustversion/src/token.rs delete mode 100644 vendor/rustversion/src/version.rs delete mode 100644 vendor/rustversion/tests/compiletest.rs delete mode 100644 vendor/rustversion/tests/test_const.rs delete mode 100644 vendor/rustversion/tests/test_eval.rs delete mode 100644 vendor/rustversion/tests/test_parse.rs delete mode 100644 vendor/rustversion/tests/ui/bad-bound.rs delete mode 100644 vendor/rustversion/tests/ui/bad-bound.stderr delete mode 100644 vendor/rustversion/tests/ui/bad-date.rs delete mode 100644 vendor/rustversion/tests/ui/bad-date.stderr delete mode 100644 vendor/rustversion/tests/ui/bad-not.rs delete mode 100644 vendor/rustversion/tests/ui/bad-not.stderr delete mode 100644 vendor/rustversion/tests/ui/bad-version.rs delete mode 100644 vendor/rustversion/tests/ui/bad-version.stderr delete mode 100644 vendor/rustversion/tests/ui/const-not-fn.rs delete mode 100644 vendor/rustversion/tests/ui/const-not-fn.stderr (limited to 'vendor/rustversion') diff --git a/vendor/rustversion/.cargo-checksum.json b/vendor/rustversion/.cargo-checksum.json deleted file mode 100644 index cbbcf694..00000000 --- a/vendor/rustversion/.cargo-checksum.json +++ /dev/null @@ -1 +0,0 @@ -{"files":{"Cargo.lock":"476247f3e896d88d147737ab65983982e8560be0e0ee6382c097b62fc9579705","Cargo.toml":"beb729c68a9d11aa44333449ca9062c376430bd390806958c7b2c95f95b11ba6","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"913d04d158843566991845cc9d76e24610bf31f5a99e55115023ccc0b16ff1e7","build/build.rs":"6d869d2230fa9c4f8ae0df956b06438a070df276649135d4309f56eac72ddbe3","build/rustc.rs":"faf67033ec831d968406f5a66c475df337f7221e9d1ab3477fed3a629e1ec5bc","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"13c35302bd5d96ebe54509477e736a8b720e18cb2474e5805480c4517a20e5b0","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"f79c55ddcd18e124610cd5c9867b1ebaae1feeb6dfc37e2b7f94e3137aa883b6","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expand.rs":"cfd1772b1af090532de1f318e1b61cc79c8004941a8c56a1a7f4962324b81c9d","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","src/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"ab797f2fdb7e48f7b9f5b7b18e548609cef8ad94bc2763938b8d7e22ff869ad5","src/release.rs":"e0755ed1889b4c6f0faaa5adee5f60f27f9926becff875dbb41b6a65ae756591","src/time.rs":"6fcf3a1ed238a97bd7a39b187c88bdcef0246878424e06aa7eb779f841529b34","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"4e381aa8ca3eabb7ac14d1e0c3700b3223e47640547a6988cfa13ad68255f60f","tests/test_const.rs":"cb1e01479bd579b1b77312a9063ab456fe44abad2243e81873c2bf7ef5f205eb","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"f450e0a7f2391561484abb1b851124b5747755b76f945e121370adc710f2099d","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"23b4ca0aa1a7df75b5fb34e553a31faa6a3ccc029ecd7d68b056897c2c9cff9f","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"f4aec72ca91ba743cadcdaf5a874c701949add5efce490aaf2bf1248ef578768","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"1aebb3121d067d432a32dd95ff380ceac15a0531c34f90cee950582558841c56","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"e9421586d59cb9135123bd97710655014f95cc5f55b0f9611e1d2e8ce9e29a5d","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"1180662fd3b8c4426d46923918a2e58dd9b6259f1a364469ae13d5fc3d69ce6c"},"package":"8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"} \ No newline at end of file diff --git a/vendor/rustversion/Cargo.lock b/vendor/rustversion/Cargo.lock deleted file mode 100644 index f932f25e..00000000 --- a/vendor/rustversion/Cargo.lock +++ /dev/null @@ -1,301 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "dissimilar" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8975ffdaa0ef3661bfe02dbdcc06c9f829dfafe6a3c474de366a8d5e44276921" - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "glob" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" - -[[package]] -name = "hashbrown" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" - -[[package]] -name = "indexmap" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "itoa" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rustversion" -version = "1.0.21" -dependencies = [ - "trybuild", -] - -[[package]] -name = "ryu" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" - -[[package]] -name = "serde" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.140" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - -[[package]] -name = "syn" -version = "2.0.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "target-triple" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "toml" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "toml_write", - "winnow", -] - -[[package]] -name = "toml_write" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" - -[[package]] -name = "trybuild" -version = "1.0.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c9bf9513a2f4aeef5fdac8677d7d349c79fdbcc03b9c86da6e9d254f1e43be2" -dependencies = [ - "dissimilar", - "glob", - "serde", - "serde_derive", - "serde_json", - "target-triple", - "termcolor", - "toml", -] - -[[package]] -name = "unicode-ident" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" -dependencies = [ - "memchr", -] diff --git a/vendor/rustversion/Cargo.toml b/vendor/rustversion/Cargo.toml deleted file mode 100644 index 34050aec..00000000 --- a/vendor/rustversion/Cargo.toml +++ /dev/null @@ -1,68 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2018" -rust-version = "1.31" -name = "rustversion" -version = "1.0.21" -authors = ["David Tolnay "] -build = "build/build.rs" -autolib = false -autobins = false -autoexamples = false -autotests = false -autobenches = false -description = "Conditional compilation according to rustc compiler version" -documentation = "https://docs.rs/rustversion" -readme = "README.md" -categories = [ - "development-tools::build-utils", - "no-std", - "no-std::no-alloc", -] -license = "MIT OR Apache-2.0" -repository = "https://github.com/dtolnay/rustversion" - -[package.metadata.docs.rs] -rustdoc-args = [ - "--generate-link-to-definition", - "--extern-html-root-url=core=https://doc.rust-lang.org", - "--extern-html-root-url=alloc=https://doc.rust-lang.org", - "--extern-html-root-url=std=https://doc.rust-lang.org", - "--extern-html-root-url=proc_macro=https://doc.rust-lang.org", -] -targets = ["x86_64-unknown-linux-gnu"] - -[lib] -name = "rustversion" -path = "src/lib.rs" -proc-macro = true - -[[test]] -name = "compiletest" -path = "tests/compiletest.rs" - -[[test]] -name = "test_const" -path = "tests/test_const.rs" - -[[test]] -name = "test_eval" -path = "tests/test_eval.rs" - -[[test]] -name = "test_parse" -path = "tests/test_parse.rs" - -[dev-dependencies.trybuild] -version = "1.0.49" -features = ["diff"] diff --git a/vendor/rustversion/LICENSE-APACHE b/vendor/rustversion/LICENSE-APACHE deleted file mode 100644 index 1b5ec8b7..00000000 --- a/vendor/rustversion/LICENSE-APACHE +++ /dev/null @@ -1,176 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS diff --git a/vendor/rustversion/LICENSE-MIT b/vendor/rustversion/LICENSE-MIT deleted file mode 100644 index 31aa7938..00000000 --- a/vendor/rustversion/LICENSE-MIT +++ /dev/null @@ -1,23 +0,0 @@ -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/vendor/rustversion/README.md b/vendor/rustversion/README.md deleted file mode 100644 index d9b0eb67..00000000 --- a/vendor/rustversion/README.md +++ /dev/null @@ -1,167 +0,0 @@ -Compiler version cfg -==================== - -[github](https://github.com/dtolnay/rustversion) -[crates.io](https://crates.io/crates/rustversion) -[docs.rs](https://docs.rs/rustversion) -[build status](https://github.com/dtolnay/rustversion/actions?query=branch%3Amaster) - -This crate provides macros for conditional compilation according to rustc -compiler version, analogous to [`#[cfg(...)]`][cfg] and -[`#[cfg_attr(...)]`][cfg_attr]. - -[cfg]: https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute -[cfg_attr]: https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute - -```toml -[dependencies] -rustversion = "1.0" -``` - -
- -## Selectors - -- `#[rustversion::stable]` - —
- True on any stable compiler. - -- `#[rustversion::stable(1.34)]` - —
- True on exactly the specified stable compiler. - -- `#[rustversion::beta]` - —
- True on any beta compiler. - -- `#[rustversion::nightly]` - —
- True on any nightly compiler or dev build. - -- `#[rustversion::nightly(2025-01-01)]` - —
- True on exactly one nightly. - -- `#[rustversion::since(1.34)]` - —
- True on that stable release and any later compiler, including beta and - nightly. - -- `#[rustversion::since(2025-01-01)]` - —
- True on that nightly and all newer ones. - -- `#[rustversion::before(`version or date`)]` - —
- Negative of *#[rustversion::since(...)]*. - -- `#[rustversion::not(`selector`)]` - —
- Negative of any selector; for example *#[rustversion::not(nightly)]*. - -- `#[rustversion::any(`selectors...`)]` - —
- True if any of the comma-separated selectors is true; for example - *#[rustversion::any(stable, beta)]*. - -- `#[rustversion::all(`selectors...`)]` - —
- True if all of the comma-separated selectors are true; for example - *#[rustversion::all(since(1.31), before(1.34))]*. - -- `#[rustversion::attr(`selector`, `attribute`)]` - —
- For conditional inclusion of attributes; analogous to `cfg_attr`. - -- `rustversion::cfg!(`selector`)` - —
- An expression form of any of the above attributes; for example - *if rustversion::cfg!(any(stable, beta)) { ... }*. - -
- -## Use cases - -Providing additional trait impls as types are stabilized in the standard library -without breaking compatibility with older compilers; in this case Pin\ -stabilized in [Rust 1.33][pin]: - -[pin]: https://blog.rust-lang.org/2019/02/28/Rust-1.33.0.html#pinning - -```rust -#[rustversion::since(1.33)] -use std::pin::Pin; - -#[rustversion::since(1.33)] -impl MyTrait for Pin

{ - /* ... */ -} -``` - -Similar but for language features; the ability to control alignment greater than -1 of packed structs was stabilized in [Rust 1.33][packed]. - -[packed]: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1330-2019-02-28 - -```rust -#[rustversion::attr(before(1.33), repr(packed))] -#[rustversion::attr(since(1.33), repr(packed(2)))] -struct Six(i16, i32); - -fn main() { - println!("{}", std::mem::align_of::()); -} -``` - -Augmenting code with `const` as const impls are stabilized in the standard -library. This use of `const` as an attribute is recognized as a special case by -the rustversion::attr macro. - -```rust -use std::time::Duration; - -#[rustversion::attr(since(1.32), const)] -fn duration_as_days(dur: Duration) -> u64 { - dur.as_secs() / 60 / 60 / 24 -} -``` - -Emitting Cargo cfg directives from a build script. Note that this requires -listing `rustversion` under `[build-dependencies]` in Cargo.toml, not -`[dependencies]`. - -```rust -// build.rs - -fn main() { - if rustversion::cfg!(since(1.36)) { - println!("cargo:rustc-cfg=no_std"); - } -} -``` - -```rust -// src/lib.rs - -#![cfg_attr(no_std, no_std)] - -#[cfg(no_std)] -extern crate alloc; -``` - -
- -#### License - - -Licensed under either of Apache License, Version -2.0 or MIT license at your option. - - -
- - -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in this crate by you, as defined in the Apache-2.0 license, shall -be dual licensed as above, without any additional terms or conditions. - diff --git a/vendor/rustversion/build/build.rs b/vendor/rustversion/build/build.rs deleted file mode 100644 index 9a43a654..00000000 --- a/vendor/rustversion/build/build.rs +++ /dev/null @@ -1,114 +0,0 @@ -#![allow( - clippy::elidable_lifetime_names, - clippy::enum_glob_use, - clippy::must_use_candidate, - clippy::single_match_else -)] - -mod rustc; - -use std::env; -use std::ffi::OsString; -use std::fmt::{self, Debug, Display}; -use std::fs; -use std::iter; -use std::path::Path; -use std::process::{self, Command}; - -fn main() { - println!("cargo:rerun-if-changed=build/build.rs"); - - let rustc = env::var_os("RUSTC").unwrap_or_else(|| OsString::from("rustc")); - let rustc_wrapper = env::var_os("RUSTC_WRAPPER").filter(|wrapper| !wrapper.is_empty()); - let wrapped_rustc = rustc_wrapper.iter().chain(iter::once(&rustc)); - - let mut is_clippy_driver = false; - let mut is_mirai = false; - let version = loop { - let mut command; - if is_mirai { - command = Command::new(&rustc); - } else { - let mut wrapped_rustc = wrapped_rustc.clone(); - command = Command::new(wrapped_rustc.next().unwrap()); - command.args(wrapped_rustc); - } - if is_clippy_driver { - command.arg("--rustc"); - } - command.arg("--version"); - - let output = match command.output() { - Ok(output) => output, - Err(e) => { - let rustc = rustc.to_string_lossy(); - eprintln!("Error: failed to run `{} --version`: {}", rustc, e); - process::exit(1); - } - }; - - let string = match String::from_utf8(output.stdout) { - Ok(string) => string, - Err(e) => { - let rustc = rustc.to_string_lossy(); - eprintln!( - "Error: failed to parse output of `{} --version`: {}", - rustc, e, - ); - process::exit(1); - } - }; - - break match rustc::parse(&string) { - rustc::ParseResult::Success(version) => version, - rustc::ParseResult::OopsClippy if !is_clippy_driver => { - is_clippy_driver = true; - continue; - } - rustc::ParseResult::OopsMirai if !is_mirai && rustc_wrapper.is_some() => { - is_mirai = true; - continue; - } - rustc::ParseResult::Unrecognized - | rustc::ParseResult::OopsClippy - | rustc::ParseResult::OopsMirai => { - eprintln!( - "Error: unexpected output from `rustc --version`: {:?}\n\n\ - Please file an issue in https://github.com/dtolnay/rustversion", - string - ); - process::exit(1); - } - }; - }; - - if version.minor < 38 { - // Prior to 1.38, a #[proc_macro] is not allowed to be named `cfg`. - println!("cargo:rustc-cfg=cfg_macro_not_allowed"); - } - - if version.minor >= 80 { - println!("cargo:rustc-check-cfg=cfg(cfg_macro_not_allowed)"); - println!("cargo:rustc-check-cfg=cfg(host_os, values(\"windows\"))"); - } - - let version = format!("{:#}\n", Render(&version)); - let out_dir = env::var_os("OUT_DIR").expect("OUT_DIR not set"); - let out_file = Path::new(&out_dir).join("version.expr"); - fs::write(out_file, version).expect("failed to write version.expr"); - - let host = env::var_os("HOST").expect("HOST not set"); - if let Some("windows") = host.to_str().unwrap().split('-').nth(2) { - println!("cargo:rustc-cfg=host_os=\"windows\""); - } -} - -// Shim Version's {:?} format into a {} format, because {:?} is unusable in -// format strings when building with `-Zfmt-debug=none`. -struct Render<'a>(&'a rustc::Version); - -impl<'a> Display for Render<'a> { - fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - Debug::fmt(self.0, formatter) - } -} diff --git a/vendor/rustversion/build/rustc.rs b/vendor/rustversion/build/rustc.rs deleted file mode 100644 index 9b1db03c..00000000 --- a/vendor/rustversion/build/rustc.rs +++ /dev/null @@ -1,126 +0,0 @@ -use self::Channel::*; -use std::fmt::{self, Debug}; - -pub enum ParseResult { - Success(Version), - OopsClippy, - OopsMirai, - Unrecognized, -} - -#[cfg_attr(test, derive(PartialEq))] -pub struct Version { - pub minor: u16, - pub patch: u16, - pub channel: Channel, -} - -#[cfg_attr(test, derive(PartialEq))] -pub enum Channel { - Stable, - Beta, - Nightly(Date), - Dev, -} - -#[cfg_attr(test, derive(PartialEq))] -pub struct Date { - pub year: u16, - pub month: u8, - pub day: u8, -} - -pub fn parse(string: &str) -> ParseResult { - let last_line = string.lines().last().unwrap_or(string); - let mut words = last_line.trim().split(' '); - - match words.next() { - Some("rustc") => {} - Some(word) if word.starts_with("clippy") => return ParseResult::OopsClippy, - Some("mirai") => return ParseResult::OopsMirai, - Some(_) | None => return ParseResult::Unrecognized, - } - - parse_words(&mut words).map_or(ParseResult::Unrecognized, ParseResult::Success) -} - -fn parse_words(words: &mut dyn Iterator) -> Option { - let mut version_channel = words.next()?.split('-'); - let version = version_channel.next()?; - let channel = version_channel.next(); - - let mut digits = version.split('.'); - let major = digits.next()?; - if major != "1" { - return None; - } - let minor = digits.next()?.parse().ok()?; - let patch = digits.next().unwrap_or("0").parse().ok()?; - - let channel = match channel { - None => Stable, - Some("dev") => Dev, - Some(channel) if channel.starts_with("beta") => Beta, - Some("nightly") => match words.next() { - Some(hash) if hash.starts_with('(') => match words.next() { - None if hash.ends_with(')') => Dev, - Some(date) if date.ends_with(')') => { - let mut date = date[..date.len() - 1].split('-'); - let year = date.next()?.parse().ok()?; - let month = date.next()?.parse().ok()?; - let day = date.next()?.parse().ok()?; - match date.next() { - None => Nightly(Date { year, month, day }), - Some(_) => return None, - } - } - None | Some(_) => return None, - }, - Some(_) => return None, - None => Dev, - }, - Some(_) => return None, - }; - - Some(Version { - minor, - patch, - channel, - }) -} - -impl Debug for Version { - fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter - .debug_struct("crate::version::Version") - .field("minor", &self.minor) - .field("patch", &self.patch) - .field("channel", &self.channel) - .finish() - } -} - -impl Debug for Channel { - fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - match self { - Channel::Stable => formatter.write_str("crate::version::Channel::Stable"), - Channel::Beta => formatter.write_str("crate::version::Channel::Beta"), - Channel::Nightly(date) => formatter - .debug_tuple("crate::version::Channel::Nightly") - .field(date) - .finish(), - Channel::Dev => formatter.write_str("crate::version::Channel::Dev"), - } - } -} - -impl Debug for Date { - fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter - .debug_struct("crate::date::Date") - .field("year", &self.year) - .field("month", &self.month) - .field("day", &self.day) - .finish() - } -} diff --git a/vendor/rustversion/src/attr.rs b/vendor/rustversion/src/attr.rs deleted file mode 100644 index 6023d1ea..00000000 --- a/vendor/rustversion/src/attr.rs +++ /dev/null @@ -1,35 +0,0 @@ -use crate::error::{Error, Result}; -use crate::expr::{self, Expr}; -use crate::{iter, token}; -use proc_macro::{Span, TokenStream}; - -pub struct Args { - pub condition: Expr, - pub then: Then, -} - -pub enum Then { - Const(Span), - Attribute(TokenStream), -} - -pub fn parse(input: TokenStream) -> Result { - let ref mut input = iter::new(input); - let condition = expr::parse(input)?; - - token::parse_punct(input, ',')?; - if input.peek().is_none() { - return Err(Error::new(Span::call_site(), "expected one or more attrs")); - } - - let const_span = token::parse_optional_keyword(input, "const"); - let then = if let Some(const_span) = const_span { - token::parse_optional_punct(input, ','); - token::parse_end(input)?; - Then::Const(const_span) - } else { - Then::Attribute(input.collect()) - }; - - Ok(Args { condition, then }) -} diff --git a/vendor/rustversion/src/bound.rs b/vendor/rustversion/src/bound.rs deleted file mode 100644 index 82672582..00000000 --- a/vendor/rustversion/src/bound.rs +++ /dev/null @@ -1,63 +0,0 @@ -use crate::date::{self, Date}; -use crate::error::{Error, Result}; -use crate::iter::Iter; -use crate::release::{self, Release}; -use crate::time; -use crate::version::{Channel::*, Version}; -use proc_macro::{Group, TokenTree}; -use std::cmp::Ordering; - -pub enum Bound { - Nightly(Date), - Stable(Release), -} - -pub fn parse(paren: Group, iter: Iter) -> Result { - if let Some(TokenTree::Literal(literal)) = iter.peek() { - let repr = literal.to_string(); - if repr.starts_with(|ch: char| ch.is_ascii_digit()) { - if repr.contains('.') { - return release::parse(paren, iter).map(Bound::Stable); - } else { - return date::parse(paren, iter).map(Bound::Nightly); - } - } - } - let msg = format!( - "expected rustc release number like 1.85, or nightly date like {}", - time::today(), - ); - Err(Error::group(paren, msg)) -} - -impl PartialEq for Version { - fn eq(&self, rhs: &Bound) -> bool { - match rhs { - Bound::Nightly(date) => match self.channel { - Stable | Beta | Dev => false, - Nightly(nightly) => nightly == *date, - }, - Bound::Stable(release) => { - self.minor == release.minor - && release.patch.map_or(true, |patch| self.patch == patch) - } - } - } -} - -impl PartialOrd for Version { - fn partial_cmp(&self, rhs: &Bound) -> Option { - match rhs { - Bound::Nightly(date) => match self.channel { - Stable | Beta => Some(Ordering::Less), - Nightly(nightly) => Some(nightly.cmp(date)), - Dev => Some(Ordering::Greater), - }, - Bound::Stable(release) => { - let version = (self.minor, self.patch); - let bound = (release.minor, release.patch.unwrap_or(0)); - Some(version.cmp(&bound)) - } - } - } -} diff --git a/vendor/rustversion/src/constfn.rs b/vendor/rustversion/src/constfn.rs deleted file mode 100644 index 0e50c039..00000000 --- a/vendor/rustversion/src/constfn.rs +++ /dev/null @@ -1,58 +0,0 @@ -use crate::error::{Error, Result}; -use proc_macro::{Ident, Span, TokenStream, TokenTree}; -use std::iter; - -#[derive(PartialOrd, PartialEq)] -enum Qualifiers { - None, - Async, - Unsafe, - Extern, - Abi, -} - -impl Qualifiers { - fn from_ident(ident: &Ident) -> Self { - match ident.to_string().as_str() { - "async" => Qualifiers::Async, - "unsafe" => Qualifiers::Unsafe, - "extern" => Qualifiers::Extern, - _ => Qualifiers::None, - } - } -} - -pub(crate) fn insert_const(input: TokenStream, const_span: Span) -> Result { - let ref mut input = crate::iter::new(input); - let mut out = TokenStream::new(); - let mut qualifiers = Qualifiers::None; - let mut pending = Vec::new(); - - while let Some(token) = input.next() { - match token { - TokenTree::Ident(ref ident) if ident.to_string() == "fn" => { - let const_ident = Ident::new("const", const_span); - out.extend(iter::once(TokenTree::Ident(const_ident))); - out.extend(pending); - out.extend(iter::once(token)); - out.extend(input); - return Ok(out); - } - TokenTree::Ident(ref ident) if Qualifiers::from_ident(ident) > qualifiers => { - qualifiers = Qualifiers::from_ident(ident); - pending.push(token); - } - TokenTree::Literal(_) if qualifiers == Qualifiers::Extern => { - qualifiers = Qualifiers::Abi; - pending.push(token); - } - _ => { - qualifiers = Qualifiers::None; - out.extend(pending.drain(..)); - out.extend(iter::once(token)); - } - } - } - - Err(Error::new(const_span, "only allowed on a fn item")) -} diff --git a/vendor/rustversion/src/date.rs b/vendor/rustversion/src/date.rs deleted file mode 100644 index aa4e7101..00000000 --- a/vendor/rustversion/src/date.rs +++ /dev/null @@ -1,50 +0,0 @@ -use crate::error::{Error, Result}; -use crate::iter::Iter; -use crate::{time, token}; -use proc_macro::Group; -use std::fmt::{self, Display}; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] -pub struct Date { - pub year: u16, - pub month: u8, - pub day: u8, -} - -impl Display for Date { - fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - write!( - formatter, - "{:04}-{:02}-{:02}", - self.year, self.month, self.day, - ) - } -} - -pub fn parse(paren: Group, iter: Iter) -> Result { - try_parse(iter).map_err(|()| { - let msg = format!("expected nightly date, like {}", time::today()); - Error::group(paren, msg) - }) -} - -fn try_parse(iter: Iter) -> Result { - let year = token::parse_literal(iter).map_err(drop)?; - token::parse_punct(iter, '-').map_err(drop)?; - let month = token::parse_literal(iter).map_err(drop)?; - token::parse_punct(iter, '-').map_err(drop)?; - let day = token::parse_literal(iter).map_err(drop)?; - - let year = year.to_string().parse::().map_err(drop)?; - let month = month.to_string().parse::().map_err(drop)?; - let day = day.to_string().parse::().map_err(drop)?; - if year >= 3000 || month > 12 || day > 31 { - return Err(()); - } - - Ok(Date { - year: year as u16, - month: month as u8, - day: day as u8, - }) -} diff --git a/vendor/rustversion/src/error.rs b/vendor/rustversion/src/error.rs deleted file mode 100644 index a99625b4..00000000 --- a/vendor/rustversion/src/error.rs +++ /dev/null @@ -1,56 +0,0 @@ -use proc_macro::{Delimiter, Group, Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree}; -use std::fmt::Display; -use std::iter::FromIterator; - -pub type Result = std::result::Result; - -pub struct Error { - begin: Span, - end: Span, - msg: String, -} - -impl Error { - pub fn new(span: Span, msg: impl Display) -> Self { - Self::new2(span, span, msg) - } - - pub fn new2(begin: Span, end: Span, msg: impl Display) -> Self { - Error { - begin, - end, - msg: msg.to_string(), - } - } - - pub fn group(group: Group, msg: impl Display) -> Self { - let mut iter = group.stream().into_iter(); - let delimiter = group.span(); - let begin = iter.next().map_or(delimiter, |t| t.span()); - let end = iter.last().map_or(begin, |t| t.span()); - Self::new2(begin, end, msg) - } - - pub fn into_compile_error(self) -> TokenStream { - // compile_error! { $msg } - TokenStream::from_iter(vec![ - TokenTree::Ident(Ident::new("compile_error", self.begin)), - TokenTree::Punct({ - let mut punct = Punct::new('!', Spacing::Alone); - punct.set_span(self.begin); - punct - }), - TokenTree::Group({ - let mut group = Group::new(Delimiter::Brace, { - TokenStream::from_iter(vec![TokenTree::Literal({ - let mut string = Literal::string(&self.msg); - string.set_span(self.end); - string - })]) - }); - group.set_span(self.end); - group - }), - ]) - } -} diff --git a/vendor/rustversion/src/expand.rs b/vendor/rustversion/src/expand.rs deleted file mode 100644 index 813ba85d..00000000 --- a/vendor/rustversion/src/expand.rs +++ /dev/null @@ -1,72 +0,0 @@ -use crate::attr::{self, Then}; -use crate::error::{Error, Result}; -use crate::{constfn, expr, iter, token}; -use proc_macro::{Delimiter, Group, Ident, Punct, Spacing, Span, TokenStream, TokenTree}; -use std::iter::FromIterator; - -pub fn cfg(introducer: &str, args: TokenStream, input: TokenStream) -> TokenStream { - try_cfg(introducer, args, input).unwrap_or_else(Error::into_compile_error) -} - -fn try_cfg(introducer: &str, args: TokenStream, input: TokenStream) -> Result { - let introducer = Ident::new(introducer, Span::call_site()); - - let mut full_args = TokenStream::from(TokenTree::Ident(introducer)); - if !args.is_empty() { - full_args.extend(std::iter::once(TokenTree::Group(Group::new( - Delimiter::Parenthesis, - args, - )))); - } - - let ref mut full_args = iter::new(full_args); - let expr = expr::parse(full_args)?; - token::parse_end(full_args)?; - - if expr.eval(crate::RUSTVERSION) { - Ok(input) - } else { - Ok(TokenStream::new()) - } -} - -pub fn try_attr(args: attr::Args, input: TokenStream) -> Result { - if !args.condition.eval(crate::RUSTVERSION) { - return Ok(input); - } - - match args.then { - Then::Const(const_token) => constfn::insert_const(input, const_token), - Then::Attribute(then) => { - // #[cfg_attr(all(), #then)] - Ok(TokenStream::from_iter( - vec![ - TokenTree::Punct(Punct::new('#', Spacing::Alone)), - TokenTree::Group(Group::new( - Delimiter::Bracket, - TokenStream::from_iter(vec![ - TokenTree::Ident(Ident::new("cfg_attr", Span::call_site())), - TokenTree::Group(Group::new( - Delimiter::Parenthesis, - TokenStream::from_iter( - vec![ - TokenTree::Ident(Ident::new("all", Span::call_site())), - TokenTree::Group(Group::new( - Delimiter::Parenthesis, - TokenStream::new(), - )), - TokenTree::Punct(Punct::new(',', Spacing::Alone)), - ] - .into_iter() - .chain(then), - ), - )), - ]), - )), - ] - .into_iter() - .chain(input), - )) - } - } -} diff --git a/vendor/rustversion/src/expr.rs b/vendor/rustversion/src/expr.rs deleted file mode 100644 index 45ed7d21..00000000 --- a/vendor/rustversion/src/expr.rs +++ /dev/null @@ -1,163 +0,0 @@ -use crate::bound::{self, Bound}; -use crate::date::{self, Date}; -use crate::error::{Error, Result}; -use crate::iter::{self, Iter}; -use crate::release::{self, Release}; -use crate::token; -use crate::version::{Channel, Version}; -use proc_macro::{Ident, Span, TokenTree}; - -pub enum Expr { - Stable, - Beta, - Nightly, - Date(Date), - Since(Bound), - Before(Bound), - Release(Release), - Not(Box), - Any(Vec), - All(Vec), -} - -impl Expr { - pub fn eval(&self, rustc: Version) -> bool { - use self::Expr::*; - - match self { - Stable => rustc.channel == Channel::Stable, - Beta => rustc.channel == Channel::Beta, - Nightly => match rustc.channel { - Channel::Nightly(_) | Channel::Dev => true, - Channel::Stable | Channel::Beta => false, - }, - Date(date) => match rustc.channel { - Channel::Nightly(rustc) => rustc == *date, - Channel::Stable | Channel::Beta | Channel::Dev => false, - }, - Since(bound) => rustc >= *bound, - Before(bound) => rustc < *bound, - Release(release) => { - rustc.channel == Channel::Stable - && rustc.minor == release.minor - && release.patch.map_or(true, |patch| rustc.patch == patch) - } - Not(expr) => !expr.eval(rustc), - Any(exprs) => exprs.iter().any(|e| e.eval(rustc)), - All(exprs) => exprs.iter().all(|e| e.eval(rustc)), - } - } -} - -pub fn parse(iter: Iter) -> Result { - match &iter.next() { - Some(TokenTree::Ident(i)) if i.to_string() == "stable" => parse_stable(iter), - Some(TokenTree::Ident(i)) if i.to_string() == "beta" => Ok(Expr::Beta), - Some(TokenTree::Ident(i)) if i.to_string() == "nightly" => parse_nightly(iter), - Some(TokenTree::Ident(i)) if i.to_string() == "since" => parse_since(i, iter), - Some(TokenTree::Ident(i)) if i.to_string() == "before" => parse_before(i, iter), - Some(TokenTree::Ident(i)) if i.to_string() == "not" => parse_not(i, iter), - Some(TokenTree::Ident(i)) if i.to_string() == "any" => parse_any(i, iter), - Some(TokenTree::Ident(i)) if i.to_string() == "all" => parse_all(i, iter), - unexpected => { - let span = unexpected - .as_ref() - .map_or_else(Span::call_site, TokenTree::span); - Err(Error::new(span, "expected one of `stable`, `beta`, `nightly`, `since`, `before`, `not`, `any`, `all`")) - } - } -} - -fn parse_nightly(iter: Iter) -> Result { - let paren = match token::parse_optional_paren(iter) { - Some(group) => group, - None => return Ok(Expr::Nightly), - }; - - let ref mut inner = iter::new(paren.stream()); - let date = date::parse(paren, inner)?; - token::parse_optional_punct(inner, ','); - token::parse_end(inner)?; - - Ok(Expr::Date(date)) -} - -fn parse_stable(iter: Iter) -> Result { - let paren = match token::parse_optional_paren(iter) { - Some(group) => group, - None => return Ok(Expr::Stable), - }; - - let ref mut inner = iter::new(paren.stream()); - let release = release::parse(paren, inner)?; - token::parse_optional_punct(inner, ','); - token::parse_end(inner)?; - - Ok(Expr::Release(release)) -} - -fn parse_since(introducer: &Ident, iter: Iter) -> Result { - let paren = token::parse_paren(introducer, iter)?; - - let ref mut inner = iter::new(paren.stream()); - let bound = bound::parse(paren, inner)?; - token::parse_optional_punct(inner, ','); - token::parse_end(inner)?; - - Ok(Expr::Since(bound)) -} - -fn parse_before(introducer: &Ident, iter: Iter) -> Result { - let paren = token::parse_paren(introducer, iter)?; - - let ref mut inner = iter::new(paren.stream()); - let bound = bound::parse(paren, inner)?; - token::parse_optional_punct(inner, ','); - token::parse_end(inner)?; - - Ok(Expr::Before(bound)) -} - -fn parse_not(introducer: &Ident, iter: Iter) -> Result { - let paren = token::parse_paren(introducer, iter)?; - - let ref mut inner = iter::new(paren.stream()); - let expr = self::parse(inner)?; - token::parse_optional_punct(inner, ','); - token::parse_end(inner)?; - - Ok(Expr::Not(Box::new(expr))) -} - -fn parse_any(introducer: &Ident, iter: Iter) -> Result { - let paren = token::parse_paren(introducer, iter)?; - - let ref mut inner = iter::new(paren.stream()); - let exprs = parse_comma_separated(inner)?; - - Ok(Expr::Any(exprs.into_iter().collect())) -} - -fn parse_all(introducer: &Ident, iter: Iter) -> Result { - let paren = token::parse_paren(introducer, iter)?; - - let ref mut inner = iter::new(paren.stream()); - let exprs = parse_comma_separated(inner)?; - - Ok(Expr::All(exprs.into_iter().collect())) -} - -fn parse_comma_separated(iter: Iter) -> Result> { - let mut exprs = Vec::new(); - - while iter.peek().is_some() { - let expr = self::parse(iter)?; - exprs.push(expr); - if iter.peek().is_none() { - break; - } - token::parse_punct(iter, ',')?; - } - - Ok(exprs) -} diff --git a/vendor/rustversion/src/iter.rs b/vendor/rustversion/src/iter.rs deleted file mode 100644 index 722013c7..00000000 --- a/vendor/rustversion/src/iter.rs +++ /dev/null @@ -1,42 +0,0 @@ -use proc_macro::{token_stream, Delimiter, TokenStream, TokenTree}; - -pub type Iter<'a> = &'a mut IterImpl; - -pub struct IterImpl { - stack: Vec, - peeked: Option, -} - -pub fn new(tokens: TokenStream) -> IterImpl { - IterImpl { - stack: vec![tokens.into_iter()], - peeked: None, - } -} - -impl IterImpl { - pub fn peek(&mut self) -> Option<&TokenTree> { - self.peeked = self.next(); - self.peeked.as_ref() - } -} - -impl Iterator for IterImpl { - type Item = TokenTree; - - fn next(&mut self) -> Option { - if let Some(tt) = self.peeked.take() { - return Some(tt); - } - loop { - let top = self.stack.last_mut()?; - match top.next() { - None => drop(self.stack.pop()), - Some(TokenTree::Group(ref group)) if group.delimiter() == Delimiter::None => { - self.stack.push(group.stream().into_iter()); - } - Some(tt) => return Some(tt), - } - } - } -} diff --git a/vendor/rustversion/src/lib.rs b/vendor/rustversion/src/lib.rs deleted file mode 100644 index 96e70c0b..00000000 --- a/vendor/rustversion/src/lib.rs +++ /dev/null @@ -1,282 +0,0 @@ -//! [![github]](https://github.com/dtolnay/rustversion) [![crates-io]](https://crates.io/crates/rustversion) [![docs-rs]](https://docs.rs/rustversion) -//! -//! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github -//! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust -//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs -//! -//!
-//! -//! This crate provides macros for conditional compilation according to rustc -//! compiler version, analogous to [`#[cfg(...)]`][cfg] and -//! [`#[cfg_attr(...)]`][cfg_attr]. -//! -//! [cfg]: https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute -//! [cfg_attr]: https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute -//! -//!
-//! -//! # Selectors -//! -//! -

-//! #[rustversion::stable] -//! —
-//! True on any stable compiler. -//!

-//! -//! -

-//! #[rustversion::stable(1.34)] -//! —
-//! True on exactly the specified stable compiler. -//!

-//! -//! -

-//! #[rustversion::beta] -//! —
-//! True on any beta compiler. -//!

-//! -//! -

-//! #[rustversion::nightly] -//! —
-//! True on any nightly compiler or dev build. -//!

-//! -//! -

-//! #[rustversion::nightly(2025-01-01)] -//! —
-//! True on exactly one nightly. -//!

-//! -//! -

-//! #[rustversion::since(1.34)] -//! —
-//! True on that stable release and any later compiler, including beta and -//! nightly. -//!

-//! -//! -

-//! #[rustversion::since(2025-01-01)] -//! —
-//! True on that nightly and all newer ones. -//!

-//! -//! -

-//! #[rustversion::before(version or date)] -//! —
-//! Negative of #[rustversion::since(...)]. -//!

-//! -//! -

-//! #[rustversion::not(selector)] -//! —
-//! Negative of any selector; for example #[rustversion::not(nightly)]. -//!

-//! -//! -

-//! #[rustversion::any(selectors...)] -//! —
-//! True if any of the comma-separated selectors is true; for example -//! #[rustversion::any(stable, beta)]. -//!

-//! -//! -

-//! #[rustversion::all(selectors...)] -//! —
-//! True if all of the comma-separated selectors are true; for example -//! #[rustversion::all(since(1.31), before(1.34))]. -//!

-//! -//! -

-//! #[rustversion::attr(selector, attribute)] -//! —
-//! For conditional inclusion of attributes; analogous to -//! cfg_attr. -//!

-//! -//! -

-//! rustversion::cfg!(selector) -//! —
-//! An expression form of any of the above attributes; for example -//! if rustversion::cfg!(any(stable, beta)) { ... }. -//!

-//! -//!
-//! -//! # Use cases -//! -//! Providing additional trait impls as types are stabilized in the standard library -//! without breaking compatibility with older compilers; in this case Pin\ -//! stabilized in [Rust 1.33][pin]: -//! -//! [pin]: https://blog.rust-lang.org/2019/02/28/Rust-1.33.0.html#pinning -//! -//! ``` -//! # trait MyTrait {} -//! # -//! #[rustversion::since(1.33)] -//! use std::pin::Pin; -//! -//! #[rustversion::since(1.33)] -//! impl MyTrait for Pin

{ -//! /* ... */ -//! } -//! ``` -//! -//! Similar but for language features; the ability to control alignment greater than -//! 1 of packed structs was stabilized in [Rust 1.33][packed]. -//! -//! [packed]: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1330-2019-02-28 -//! -//! ``` -//! #[rustversion::attr(before(1.33), repr(packed))] -//! #[rustversion::attr(since(1.33), repr(packed(2)))] -//! struct Six(i16, i32); -//! -//! fn main() { -//! println!("{}", std::mem::align_of::()); -//! } -//! ``` -//! -//! Augmenting code with `const` as const impls are stabilized in the standard -//! library. This use of `const` as an attribute is recognized as a special case -//! by the rustversion::attr macro. -//! -//! ``` -//! use std::time::Duration; -//! -//! #[rustversion::attr(since(1.32), const)] -//! fn duration_as_days(dur: Duration) -> u64 { -//! dur.as_secs() / 60 / 60 / 24 -//! } -//! ``` -//! -//! Emitting Cargo cfg directives from a build script. Note that this requires -//! listing `rustversion` under `[build-dependencies]` in Cargo.toml, not -//! `[dependencies]`. -//! -//! ``` -//! // build.rs -//! -//! fn main() { -//! if rustversion::cfg!(since(1.36)) { -//! println!("cargo:rustc-cfg=no_std"); -//! } -//! } -//! ``` -//! -//! ``` -//! // src/lib.rs -//! -//! #![cfg_attr(no_std, no_std)] -//! -//! #[cfg(no_std)] -//! extern crate alloc; -//! ``` -//! -//!
- -#![doc(html_root_url = "https://docs.rs/rustversion/1.0.21")] -#![allow( - clippy::cast_lossless, - clippy::cast_possible_truncation, - clippy::derive_partial_eq_without_eq, - clippy::doc_markdown, - clippy::enum_glob_use, - clippy::from_iter_instead_of_collect, - // https://github.com/rust-lang/rust-clippy/issues/8539 - clippy::iter_with_drain, - clippy::module_name_repetitions, - clippy::must_use_candidate, - clippy::needless_doctest_main, - clippy::needless_pass_by_value, - clippy::redundant_else, - clippy::toplevel_ref_arg, - clippy::unreadable_literal -)] - -extern crate proc_macro; - -mod attr; -mod bound; -mod constfn; -mod date; -mod error; -mod expand; -mod expr; -mod iter; -mod release; -mod time; -mod token; -mod version; - -use crate::error::Error; -use crate::version::Version; -use proc_macro::TokenStream; - -#[cfg(not(host_os = "windows"))] -const RUSTVERSION: Version = include!(concat!(env!("OUT_DIR"), "/version.expr")); - -#[cfg(host_os = "windows")] -const RUSTVERSION: Version = include!(concat!(env!("OUT_DIR"), "\\version.expr")); - -#[proc_macro_attribute] -pub fn stable(args: TokenStream, input: TokenStream) -> TokenStream { - expand::cfg("stable", args, input) -} - -#[proc_macro_attribute] -pub fn beta(args: TokenStream, input: TokenStream) -> TokenStream { - expand::cfg("beta", args, input) -} - -#[proc_macro_attribute] -pub fn nightly(args: TokenStream, input: TokenStream) -> TokenStream { - expand::cfg("nightly", args, input) -} - -#[proc_macro_attribute] -pub fn since(args: TokenStream, input: TokenStream) -> TokenStream { - expand::cfg("since", args, input) -} - -#[proc_macro_attribute] -pub fn before(args: TokenStream, input: TokenStream) -> TokenStream { - expand::cfg("before", args, input) -} - -#[proc_macro_attribute] -pub fn not(args: TokenStream, input: TokenStream) -> TokenStream { - expand::cfg("not", args, input) -} - -#[proc_macro_attribute] -pub fn any(args: TokenStream, input: TokenStream) -> TokenStream { - expand::cfg("any", args, input) -} - -#[proc_macro_attribute] -pub fn all(args: TokenStream, input: TokenStream) -> TokenStream { - expand::cfg("all", args, input) -} - -#[proc_macro_attribute] -pub fn attr(args: TokenStream, input: TokenStream) -> TokenStream { - attr::parse(args) - .and_then(|args| expand::try_attr(args, input)) - .unwrap_or_else(Error::into_compile_error) -} - -#[cfg(not(cfg_macro_not_allowed))] -#[proc_macro] -pub fn cfg(input: TokenStream) -> TokenStream { - use proc_macro::{Ident, Span, TokenTree}; - (|| { - let ref mut args = iter::new(input); - let expr = expr::parse(args)?; - token::parse_end(args)?; - let boolean = expr.eval(RUSTVERSION); - let ident = Ident::new(&boolean.to_string(), Span::call_site()); - Ok(TokenStream::from(TokenTree::Ident(ident))) - })() - .unwrap_or_else(Error::into_compile_error) -} diff --git a/vendor/rustversion/src/release.rs b/vendor/rustversion/src/release.rs deleted file mode 100644 index c8c02192..00000000 --- a/vendor/rustversion/src/release.rs +++ /dev/null @@ -1,34 +0,0 @@ -use crate::error::{Error, Result}; -use crate::iter::Iter; -use crate::token; -use proc_macro::Group; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] -pub struct Release { - pub minor: u16, - pub patch: Option, -} - -pub fn parse(paren: Group, iter: Iter) -> Result { - try_parse(iter).map_err(|()| Error::group(paren, "expected rustc release number, like 1.31")) -} - -fn try_parse(iter: Iter) -> Result { - let major_minor = token::parse_literal(iter).map_err(drop)?; - let string = major_minor.to_string(); - - if !string.starts_with("1.") { - return Err(()); - } - - let minor: u16 = string[2..].parse().map_err(drop)?; - - let patch = if token::parse_optional_punct(iter, '.').is_some() { - let int = token::parse_literal(iter).map_err(drop)?; - Some(int.to_string().parse().map_err(drop)?) - } else { - None - }; - - Ok(Release { minor, patch }) -} diff --git a/vendor/rustversion/src/time.rs b/vendor/rustversion/src/time.rs deleted file mode 100644 index 102c80bc..00000000 --- a/vendor/rustversion/src/time.rs +++ /dev/null @@ -1,51 +0,0 @@ -use crate::date::Date; -use std::env; -use std::time::{SystemTime, UNIX_EPOCH}; - -// Timestamp of 2016-03-01 00:00:00 in UTC. -const BASE: u64 = 1456790400; -const BASE_YEAR: u16 = 2016; -const BASE_MONTH: u8 = 3; - -// Days between leap days. -const CYCLE: u64 = 365 * 4 + 1; - -const DAYS_BY_MONTH: [u8; 12] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - -pub fn today() -> Date { - let default = Date { - year: 2025, - month: 2, - day: 25, - }; - try_today().unwrap_or(default) -} - -fn try_today() -> Option { - if let Some(pkg_name) = env::var_os("CARGO_PKG_NAME") { - if pkg_name.to_str() == Some("rustversion-tests") { - return None; // Stable date for ui testing. - } - } - - let now = SystemTime::now(); - let since_epoch = now.duration_since(UNIX_EPOCH).ok()?; - let secs = since_epoch.as_secs(); - - let approx_days = secs.checked_sub(BASE)? / 60 / 60 / 24; - let cycle = approx_days / CYCLE; - let mut rem = approx_days % CYCLE; - - let mut year = BASE_YEAR + cycle as u16 * 4; - let mut month = BASE_MONTH; - loop { - let days_in_month = DAYS_BY_MONTH[month as usize - 1]; - if rem < days_in_month as u64 { - let day = rem as u8 + 1; - return Some(Date { year, month, day }); - } - rem -= days_in_month as u64; - year += (month == 12) as u16; - month = month % 12 + 1; - } -} diff --git a/vendor/rustversion/src/token.rs b/vendor/rustversion/src/token.rs deleted file mode 100644 index ebb6f1c0..00000000 --- a/vendor/rustversion/src/token.rs +++ /dev/null @@ -1,78 +0,0 @@ -use crate::error::{Error, Result}; -use crate::iter::Iter; -use proc_macro::{Delimiter, Group, Ident, Literal, Span, TokenTree}; - -pub fn parse_punct(iter: Iter, ch: char) -> Result<()> { - match iter.next() { - Some(TokenTree::Punct(ref punct)) if punct.as_char() == ch => Ok(()), - unexpected => { - let span = unexpected - .as_ref() - .map_or_else(Span::call_site, TokenTree::span); - Err(Error::new(span, format!("expected `{}`", ch))) - } - } -} - -pub fn parse_optional_punct(iter: Iter, ch: char) -> Option<()> { - match iter.peek() { - Some(TokenTree::Punct(punct)) if punct.as_char() == ch => iter.next().map(drop), - _ => None, - } -} - -pub fn parse_optional_keyword(iter: Iter, keyword: &str) -> Option { - match iter.peek() { - Some(TokenTree::Ident(ident)) if ident.to_string() == keyword => { - Some(iter.next().unwrap().span()) - } - _ => None, - } -} - -pub fn parse_literal(iter: Iter) -> Result { - match iter.next() { - Some(TokenTree::Literal(literal)) => Ok(literal), - unexpected => { - let span = unexpected - .as_ref() - .map_or_else(Span::call_site, TokenTree::span); - Err(Error::new(span, "expected literal")) - } - } -} - -pub fn parse_paren(introducer: &Ident, iter: Iter) -> Result { - match iter.peek() { - Some(TokenTree::Group(group)) if group.delimiter() == Delimiter::Parenthesis => { - match iter.next() { - Some(TokenTree::Group(group)) => Ok(group), - _ => unreachable!(), - } - } - Some(unexpected) => Err(Error::new(unexpected.span(), "expected `(`")), - None => Err(Error::new( - introducer.span(), - format!("expected `(` after `{}`", introducer), - )), - } -} - -pub fn parse_optional_paren(iter: Iter) -> Option { - match iter.peek() { - Some(TokenTree::Group(group)) if group.delimiter() == Delimiter::Parenthesis => { - match iter.next() { - Some(TokenTree::Group(group)) => Some(group), - _ => unreachable!(), - } - } - _ => None, - } -} - -pub fn parse_end(iter: Iter) -> Result<()> { - match iter.next() { - None => Ok(()), - Some(unexpected) => Err(Error::new(unexpected.span(), "unexpected token")), - } -} diff --git a/vendor/rustversion/src/version.rs b/vendor/rustversion/src/version.rs deleted file mode 100644 index f4a69f51..00000000 --- a/vendor/rustversion/src/version.rs +++ /dev/null @@ -1,18 +0,0 @@ -#![allow(dead_code)] - -use crate::date::Date; - -#[derive(Copy, Clone, Debug, PartialEq)] -pub struct Version { - pub minor: u16, - pub patch: u16, - pub channel: Channel, -} - -#[derive(Copy, Clone, Debug, PartialEq)] -pub enum Channel { - Stable, - Beta, - Nightly(Date), - Dev, -} diff --git a/vendor/rustversion/tests/compiletest.rs b/vendor/rustversion/tests/compiletest.rs deleted file mode 100644 index 23a6a065..00000000 --- a/vendor/rustversion/tests/compiletest.rs +++ /dev/null @@ -1,7 +0,0 @@ -#[rustversion::attr(not(nightly), ignore = "requires nightly")] -#[cfg_attr(miri, ignore = "incompatible with miri")] -#[test] -fn ui() { - let t = trybuild::TestCases::new(); - t.compile_fail("tests/ui/*.rs"); -} diff --git a/vendor/rustversion/tests/test_const.rs b/vendor/rustversion/tests/test_const.rs deleted file mode 100644 index 0d0c7b85..00000000 --- a/vendor/rustversion/tests/test_const.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![allow( - clippy::semicolon_if_nothing_returned, // https://github.com/rust-lang/rust-clippy/issues/7324 - clippy::used_underscore_items, -)] - -#[rustversion::attr(all(), const)] -fn _basic() {} -const _BASIC: () = _basic(); - -#[rustversion::attr(all(), const)] -unsafe fn _unsafe() {} -const _UNSAFE: () = unsafe { _unsafe() }; - -macro_rules! item { - ($i:item) => { - #[rustversion::attr(all(), const)] - $i - }; -} - -item! {fn _item() {}} -const _ITEM: () = _item(); - -macro_rules! ident { - ($fn:ident) => { - #[rustversion::attr(all(), const)] - $fn _ident() {} - }; -} - -ident! {fn} -const _IDENT: () = _ident(); - -#[rustversion::attr(all(), const)] -/// doc -fn _doc_below() {} -const _DOC_BELOW: () = _doc_below(); - -/// doc -#[rustversion::attr(all(), const)] -fn _doc_above() {} -const _DOC_ABOVE: () = _doc_above(); diff --git a/vendor/rustversion/tests/test_eval.rs b/vendor/rustversion/tests/test_eval.rs deleted file mode 100644 index c044e859..00000000 --- a/vendor/rustversion/tests/test_eval.rs +++ /dev/null @@ -1,20 +0,0 @@ -#[rustversion::any( - stable, - stable(1.34), - stable(1.34.0), - beta, - nightly, - nightly(2020-02-25), - since(1.34), - since(2020-02-25), - before(1.34), - before(2020-02-25), - not(nightly), - all(stable, beta, nightly), -)] -fn success() {} - -#[test] -fn test() { - success(); -} diff --git a/vendor/rustversion/tests/test_parse.rs b/vendor/rustversion/tests/test_parse.rs deleted file mode 100644 index 559e4635..00000000 --- a/vendor/rustversion/tests/test_parse.rs +++ /dev/null @@ -1,103 +0,0 @@ -#![allow( - clippy::derive_partial_eq_without_eq, - clippy::enum_glob_use, - clippy::must_use_candidate -)] - -include!("../build/rustc.rs"); - -#[test] -fn test_parse() { - let cases = &[ - ( - "rustc 1.0.0 (a59de37e9 2015-05-13) (built 2015-05-14)", - Version { - minor: 0, - patch: 0, - channel: Stable, - }, - ), - ( - "rustc 1.18.0", - Version { - minor: 18, - patch: 0, - channel: Stable, - }, - ), - ( - "rustc 1.24.1 (d3ae9a9e0 2018-02-27)", - Version { - minor: 24, - patch: 1, - channel: Stable, - }, - ), - ( - "rustc 1.35.0-beta.3 (c13114dc8 2019-04-27)", - Version { - minor: 35, - patch: 0, - channel: Beta, - }, - ), - ( - "rustc 1.36.0-nightly (938d4ffe1 2019-04-27)", - Version { - minor: 36, - patch: 0, - channel: Nightly(Date { - year: 2019, - month: 4, - day: 27, - }), - }, - ), - ( - "rustc 1.36.0-dev", - Version { - minor: 36, - patch: 0, - channel: Dev, - }, - ), - ( - "rustc 1.36.0-nightly", - Version { - minor: 36, - patch: 0, - channel: Dev, - }, - ), - ( - "warning: invalid logging spec 'warning', ignoring it - rustc 1.30.0-nightly (3bc2ca7e4 2018-09-20)", - Version { - minor: 30, - patch: 0, - channel: Nightly(Date { - year: 2018, - month: 9, - day: 20, - }), - }, - ), - ( - "rustc 1.52.1-nightly (gentoo)", - Version { - minor: 52, - patch: 1, - channel: Dev, - }, - ), - ]; - - for (string, expected) in cases { - match parse(string) { - ParseResult::Success(version) => assert_eq!(version, *expected), - ParseResult::OopsClippy | ParseResult::OopsMirai | ParseResult::Unrecognized => { - panic!("unrecognized: {:?}", string); - } - } - } -} diff --git a/vendor/rustversion/tests/ui/bad-bound.rs b/vendor/rustversion/tests/ui/bad-bound.rs deleted file mode 100644 index add8792e..00000000 --- a/vendor/rustversion/tests/ui/bad-bound.rs +++ /dev/null @@ -1,7 +0,0 @@ -#[rustversion::since(stable)] -struct S; - -#[rustversion::any(since(stable))] -struct S; - -fn main() {} diff --git a/vendor/rustversion/tests/ui/bad-bound.stderr b/vendor/rustversion/tests/ui/bad-bound.stderr deleted file mode 100644 index 2a964061..00000000 --- a/vendor/rustversion/tests/ui/bad-bound.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: expected rustc release number like 1.85, or nightly date like 2025-02-25 - --> tests/ui/bad-bound.rs:1:22 - | -1 | #[rustversion::since(stable)] - | ^^^^^^ - -error: expected rustc release number like 1.85, or nightly date like 2025-02-25 - --> tests/ui/bad-bound.rs:4:26 - | -4 | #[rustversion::any(since(stable))] - | ^^^^^^ diff --git a/vendor/rustversion/tests/ui/bad-date.rs b/vendor/rustversion/tests/ui/bad-date.rs deleted file mode 100644 index 09846254..00000000 --- a/vendor/rustversion/tests/ui/bad-date.rs +++ /dev/null @@ -1,7 +0,0 @@ -#[rustversion::nightly(stable)] -struct S; - -#[rustversion::any(nightly(stable))] -struct S; - -fn main() {} diff --git a/vendor/rustversion/tests/ui/bad-date.stderr b/vendor/rustversion/tests/ui/bad-date.stderr deleted file mode 100644 index 64c61ca2..00000000 --- a/vendor/rustversion/tests/ui/bad-date.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: expected nightly date, like 2025-02-25 - --> tests/ui/bad-date.rs:1:24 - | -1 | #[rustversion::nightly(stable)] - | ^^^^^^ - -error: expected nightly date, like 2025-02-25 - --> tests/ui/bad-date.rs:4:28 - | -4 | #[rustversion::any(nightly(stable))] - | ^^^^^^ diff --git a/vendor/rustversion/tests/ui/bad-not.rs b/vendor/rustversion/tests/ui/bad-not.rs deleted file mode 100644 index 058f340f..00000000 --- a/vendor/rustversion/tests/ui/bad-not.rs +++ /dev/null @@ -1,7 +0,0 @@ -#[rustversion::any(not)] -struct S; - -#[rustversion::any(not, not)] -struct S; - -fn main() {} diff --git a/vendor/rustversion/tests/ui/bad-not.stderr b/vendor/rustversion/tests/ui/bad-not.stderr deleted file mode 100644 index 2b0c6993..00000000 --- a/vendor/rustversion/tests/ui/bad-not.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: expected `(` after `not` - --> tests/ui/bad-not.rs:1:20 - | -1 | #[rustversion::any(not)] - | ^^^ - -error: expected `(` - --> tests/ui/bad-not.rs:4:23 - | -4 | #[rustversion::any(not, not)] - | ^ diff --git a/vendor/rustversion/tests/ui/bad-version.rs b/vendor/rustversion/tests/ui/bad-version.rs deleted file mode 100644 index 1fe8dba1..00000000 --- a/vendor/rustversion/tests/ui/bad-version.rs +++ /dev/null @@ -1,7 +0,0 @@ -#[rustversion::stable(nightly)] -struct S; - -#[rustversion::any(stable(nightly))] -struct S; - -fn main() {} diff --git a/vendor/rustversion/tests/ui/bad-version.stderr b/vendor/rustversion/tests/ui/bad-version.stderr deleted file mode 100644 index bf3f144b..00000000 --- a/vendor/rustversion/tests/ui/bad-version.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: expected rustc release number, like 1.31 - --> tests/ui/bad-version.rs:1:23 - | -1 | #[rustversion::stable(nightly)] - | ^^^^^^^ - -error: expected rustc release number, like 1.31 - --> tests/ui/bad-version.rs:4:27 - | -4 | #[rustversion::any(stable(nightly))] - | ^^^^^^^ diff --git a/vendor/rustversion/tests/ui/const-not-fn.rs b/vendor/rustversion/tests/ui/const-not-fn.rs deleted file mode 100644 index 215df7d7..00000000 --- a/vendor/rustversion/tests/ui/const-not-fn.rs +++ /dev/null @@ -1,4 +0,0 @@ -#[rustversion::attr(all(), const)] -pub struct S; - -fn main() {} diff --git a/vendor/rustversion/tests/ui/const-not-fn.stderr b/vendor/rustversion/tests/ui/const-not-fn.stderr deleted file mode 100644 index d3cb4aa6..00000000 --- a/vendor/rustversion/tests/ui/const-not-fn.stderr +++ /dev/null @@ -1,5 +0,0 @@ -error: only allowed on a fn item - --> tests/ui/const-not-fn.rs:1:28 - | -1 | #[rustversion::attr(all(), const)] - | ^^^^^ -- cgit v1.2.3