diff --git a/Cargo.lock b/Cargo.lock
index 6a3ee624d4..d2bb490a69 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -110,7 +110,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72f2a841f04c2eaeb5a95312e5201a9e4b7c95b64ca99870d6bd2e2376df540a"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -121,7 +121,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6118baab6285accf088b31d5ea5029c37bbf9d98e62b4d8720a0a5a66bc2e427"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -133,9 +133,9 @@ checksum = "7e4f181fc1a372e8ceff89612e5c9b13f72bff5b066da9f8d6827ae65af492c4"
[[package]]
name = "allocator-api2"
-version = "0.2.16"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
[[package]]
name = "anes"
@@ -202,9 +202,18 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.81"
+version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519"
+
+[[package]]
+name = "arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
+dependencies = [
+ "derive_arbitrary",
+]
[[package]]
name = "arrayref"
@@ -235,13 +244,13 @@ dependencies = [
[[package]]
name = "async-trait"
-version = "0.1.79"
+version = "0.1.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
+checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -271,6 +280,12 @@ version = "0.21.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+[[package]]
+name = "base64"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51"
+
[[package]]
name = "base64ct"
version = "1.6.0"
@@ -321,7 +336,7 @@ checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae"
dependencies = [
"arrayref",
"arrayvec",
- "constant_time_eq 0.3.0",
+ "constant_time_eq",
]
[[package]]
@@ -355,9 +370,9 @@ dependencies = [
[[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 = "byteorder"
@@ -400,12 +415,13 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
-version = "1.0.90"
+version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b"
dependencies = [
"jobserver",
"libc",
+ "once_cell",
]
[[package]]
@@ -490,8 +506,8 @@ checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
dependencies = [
"heck",
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -500,6 +516,15 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+[[package]]
+name = "cmake"
+version = "0.1.50"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130"
+dependencies = [
+ "cc",
+]
+
[[package]]
name = "color-backtrace"
version = "0.6.1"
@@ -545,12 +570,6 @@ version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
-[[package]]
-name = "constant_time_eq"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
-
[[package]]
name = "constant_time_eq"
version = "0.3.0"
@@ -582,6 +601,21 @@ dependencies = [
"libc",
]
+[[package]]
+name = "crc"
+version = "3.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636"
+dependencies = [
+ "crc-catalog",
+]
+
+[[package]]
+name = "crc-catalog"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
+
[[package]]
name = "crc32fast"
version = "1.4.0"
@@ -747,28 +781,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
-name = "dashmap"
-version = "5.5.3"
+name = "deflate64"
+version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
-dependencies = [
- "cfg-if",
- "hashbrown 0.14.3",
- "lock_api",
- "once_cell",
- "parking_lot_core",
-]
+checksum = "83ace6c86376be0b6cdcf3fb41882e81d94b31587573d1cfa9d01cd06bba210d"
[[package]]
name = "der"
-version = "0.7.8"
+version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
+checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"
dependencies = [
"const-oid",
"zeroize",
@@ -790,10 +817,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
+[[package]]
+name = "derive_arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
+dependencies = [
+ "proc-macro2",
+ "quote 1.0.36",
+ "syn 2.0.60",
+]
+
[[package]]
name = "difflib"
version = "0.4.0"
@@ -891,9 +929,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 = "encode_unicode"
@@ -903,9 +941,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
[[package]]
name = "encoding_rs"
-version = "0.8.33"
+version = "0.8.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
dependencies = [
"cfg-if",
]
@@ -969,9 +1007,9 @@ checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
[[package]]
name = "fiat-crypto"
-version = "0.2.7"
+version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f"
+checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e"
[[package]]
name = "flate2"
@@ -980,6 +1018,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
dependencies = [
"crc32fast",
+ "libz-ng-sys",
"miniz_oxide",
]
@@ -1126,9 +1165,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",
@@ -1143,9 +1182,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
[[package]]
name = "h2"
-version = "0.3.25"
+version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
dependencies = [
"bytes",
"fnv",
@@ -1162,9 +1201,9 @@ dependencies = [
[[package]]
name = "h2"
-version = "0.4.3"
+version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51ee2dd2e4f378392eeff5d51618cd9a63166a2513846bbc55f21cfacd9199d4"
+checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069"
dependencies = [
"bytes",
"fnv",
@@ -1181,9 +1220,9 @@ dependencies = [
[[package]]
name = "half"
-version = "2.4.0"
+version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
dependencies = [
"cfg-if",
"crunchy",
@@ -1310,7 +1349,7 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-util",
- "h2 0.3.25",
+ "h2 0.3.26",
"http 0.2.12",
"http-body 0.4.6",
"httparse",
@@ -1326,14 +1365,14 @@ dependencies = [
[[package]]
name = "hyper"
-version = "1.2.0"
+version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a"
+checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d"
dependencies = [
"bytes",
"futures-channel",
"futures-util",
- "h2 0.4.3",
+ "h2 0.4.4",
"http 1.1.0",
"http-body 1.0.0",
"httparse",
@@ -1365,7 +1404,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"http-body-util",
- "hyper 1.2.0",
+ "hyper 1.3.1",
"hyper-util",
"native-tls",
"tokio",
@@ -1384,7 +1423,7 @@ dependencies = [
"futures-util",
"http 1.1.0",
"http-body 1.0.0",
- "hyper 1.2.0",
+ "hyper 1.3.1",
"pin-project-lite",
"socket2",
"tokio",
@@ -1509,9 +1548,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]]
name = "jobserver"
-version = "0.1.28"
+version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e"
dependencies = [
"libc",
]
@@ -1598,7 +1637,7 @@ dependencies = [
"colored",
"derivative",
"leo-span",
- "reqwest 0.12.2",
+ "reqwest 0.12.4",
"serde",
"thiserror",
]
@@ -1630,7 +1669,7 @@ dependencies = [
"rand",
"rand_chacha",
"rand_core",
- "reqwest 0.12.2",
+ "reqwest 0.12.4",
"rpassword",
"rusty-hook",
"self_update 0.39.0",
@@ -1644,7 +1683,7 @@ dependencies = [
"tracing",
"tracing-subscriber",
"walkdir",
- "zip",
+ "zip 1.1.1",
]
[[package]]
@@ -1763,6 +1802,16 @@ dependencies = [
"libc",
]
+[[package]]
+name = "libz-ng-sys"
+version = "1.1.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6409efc61b12687963e602df8ecf70e8ddacf95bc6576bcf16e3ac6328083c5"
+dependencies = [
+ "cmake",
+ "libc",
+]
+
[[package]]
name = "libz-sys"
version = "1.1.16"
@@ -1812,6 +1861,16 @@ dependencies = [
"hashbrown 0.14.3",
]
+[[package]]
+name = "lzma-rs"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e"
+dependencies = [
+ "byteorder",
+ "crc",
+]
+
[[package]]
name = "memchr"
version = "2.7.2"
@@ -1929,8 +1988,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -2020,8 +2079,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -2077,17 +2136,6 @@ dependencies = [
"windows-targets 0.48.5",
]
-[[package]]
-name = "password-hash"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
-dependencies = [
- "base64ct",
- "rand_core",
- "subtle",
-]
-
[[package]]
name = "paste"
version = "1.0.14"
@@ -2096,14 +2144,12 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
[[package]]
name = "pbkdf2"
-version = "0.11.0"
+version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
dependencies = [
"digest",
"hmac",
- "password-hash",
- "sha2",
]
[[package]]
@@ -2128,8 +2174,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -2241,9 +2287,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",
]
@@ -2265,9 +2311,9 @@ checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
[[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",
]
@@ -2386,12 +2432,12 @@ version = "0.11.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
dependencies = [
- "base64",
+ "base64 0.21.7",
"bytes",
"encoding_rs",
"futures-core",
"futures-util",
- "h2 0.3.25",
+ "h2 0.3.26",
"http 0.2.12",
"http-body 0.4.6",
"hyper 0.14.28",
@@ -2404,7 +2450,7 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
- "rustls-pemfile",
+ "rustls-pemfile 1.0.4",
"serde",
"serde_json",
"serde_urlencoded",
@@ -2417,26 +2463,26 @@ dependencies = [
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
- "winreg",
+ "winreg 0.50.0",
]
[[package]]
name = "reqwest"
-version = "0.12.2"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d66674f2b6fb864665eea7a3c1ac4e3dfacd2fda83cf6f935a612e01b0e3338"
+checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10"
dependencies = [
- "base64",
+ "base64 0.22.0",
"bytes",
"encoding_rs",
"futures-channel",
"futures-core",
"futures-util",
- "h2 0.4.3",
+ "h2 0.4.4",
"http 1.1.0",
"http-body 1.0.0",
"http-body-util",
- "hyper 1.2.0",
+ "hyper 1.3.1",
"hyper-tls 0.6.0",
"hyper-util",
"ipnet",
@@ -2448,7 +2494,7 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
- "rustls-pemfile",
+ "rustls-pemfile 2.1.2",
"serde",
"serde_json",
"serde_urlencoded",
@@ -2461,7 +2507,7 @@ dependencies = [
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
- "winreg",
+ "winreg 0.52.0",
]
[[package]]
@@ -2517,9 +2563,9 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.38.32"
+version = "0.38.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
dependencies = [
"bitflags 2.5.0",
"errno",
@@ -2530,9 +2576,9 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.22.3"
+version = "0.22.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c"
+checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"
dependencies = [
"log",
"ring",
@@ -2548,20 +2594,30 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
dependencies = [
- "base64",
+ "base64 0.21.7",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
+dependencies = [
+ "base64 0.22.0",
+ "rustls-pki-types",
]
[[package]]
name = "rustls-pki-types"
-version = "1.4.1"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247"
+checksum = "beb461507cee2c2ff151784c52762cf4d9ff6a61f3e80968600ed24fa837fa54"
[[package]]
name = "rustls-webpki"
-version = "0.102.2"
+version = "0.102.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610"
+checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf"
dependencies = [
"ring",
"rustls-pki-types",
@@ -2595,6 +2651,15 @@ dependencies = [
"winapi-util",
]
+[[package]]
+name = "scc"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec96560eea317a9cc4e0bb1f6a2c93c09a19b8c4fc5cb3fcc0ec1c094cd783e2"
+dependencies = [
+ "sdd",
+]
+
[[package]]
name = "schannel"
version = "0.1.23"
@@ -2616,6 +2681,12 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+[[package]]
+name = "sdd"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b84345e4c9bd703274a082fb80caaa99b7612be48dfaa1dd9266577ec412309d"
+
[[package]]
name = "security-framework"
version = "2.10.0"
@@ -2686,7 +2757,7 @@ dependencies = [
"serde_json",
"tempfile",
"urlencoding",
- "zip",
+ "zip 0.6.6",
"zipsign-api",
]
@@ -2698,29 +2769,29 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
[[package]]
name = "serde"
-version = "1.0.197"
+version = "1.0.198"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.197"
+version = "1.0.198"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
name = "serde_json"
-version = "1.0.115"
+version = "1.0.116"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
+checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
dependencies = [
"indexmap 2.2.6",
"itoa",
@@ -2763,27 +2834,27 @@ dependencies = [
[[package]]
name = "serial_test"
-version = "3.0.0"
+version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "953ad9342b3aaca7cb43c45c097dd008d4907070394bd0751a0aa8817e5a018d"
+checksum = "adb86f9315df5df6a70eae0cc22395a44e544a0d8897586820770a35ede74449"
dependencies = [
- "dashmap",
"futures",
- "lazy_static",
"log",
+ "once_cell",
"parking_lot",
+ "scc",
"serial_test_derive",
]
[[package]]
name = "serial_test_derive"
-version = "3.0.0"
+version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b93fb4adc70021ac1b47f7d45e8cc4169baaa7ea58483bc5b721d19a26202212"
+checksum = "a9bb72430492e9549b0c4596725c0f82729bff861c45aa8099c0a8e67fc3b721"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -2840,9 +2911,9 @@ dependencies = [
[[package]]
name = "signal-hook-registry"
-version = "1.4.1"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
dependencies = [
"libc",
]
@@ -2857,6 +2928,12 @@ dependencies = [
"rand_core",
]
+[[package]]
+name = "simd-adler32"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+
[[package]]
name = "slab"
version = "0.4.9"
@@ -3715,8 +3792,8 @@ version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a#2cbf34a1010bf781277cdc6ff1ae966230cf97c1"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -3747,9 +3824,9 @@ dependencies = [
[[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 = "subtle"
@@ -3775,18 +3852,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
+ "quote 1.0.36",
"unicode-ident",
]
[[package]]
name = "syn"
-version = "2.0.57"
+version = "2.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35"
+checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
+ "quote 1.0.36",
"unicode-ident",
]
@@ -3874,22 +3951,22 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.58"
+version = "1.0.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.58"
+version = "1.0.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -3904,9 +3981,9 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.34"
+version = "0.3.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
dependencies = [
"deranged",
"num-conv",
@@ -4027,9 +4104,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.22.9"
+version = "0.22.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
+checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef"
dependencies = [
"indexmap 2.2.6",
"serde",
@@ -4085,8 +4162,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -4130,6 +4207,12 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+[[package]]
+name = "typed-arena"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a"
+
[[package]]
name = "typenum"
version = "1.17.0"
@@ -4190,7 +4273,7 @@ version = "2.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35"
dependencies = [
- "base64",
+ "base64 0.21.7",
"flate2",
"log",
"once_cell",
@@ -4298,8 +4381,8 @@ dependencies = [
"log",
"once_cell",
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
"wasm-bindgen-shared",
]
@@ -4321,7 +4404,7 @@ version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
dependencies = [
- "quote 1.0.35",
+ "quote 1.0.36",
"wasm-bindgen-macro-support",
]
@@ -4332,8 +4415,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -4381,11 +4464,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.6"
+version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+checksum = "134306a13c5647ad6453e8deaec55d3a44d6021970129e6188735e74bf546697"
dependencies = [
- "winapi",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -4409,7 +4492,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]]
@@ -4429,17 +4512,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]]
@@ -4450,9 +4534,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"
@@ -4462,9 +4546,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"
@@ -4474,9 +4558,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"
@@ -4486,9 +4576,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"
@@ -4498,9 +4588,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"
@@ -4510,9 +4600,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"
@@ -4522,15 +4612,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.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
+checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352"
dependencies = [
"memchr",
]
@@ -4545,6 +4635,16 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "winreg"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
[[package]]
name = "yaml-rust"
version = "0.4.5"
@@ -4570,15 +4670,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
name = "zeroize"
-version = "1.7.0"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+checksum = "63381fa6624bf92130a6b87c0d07380116f80b565c42cf0d754136f0238359ef"
dependencies = [
"zeroize_derive",
]
@@ -4590,8 +4690,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
- "quote 1.0.35",
- "syn 2.0.57",
+ "quote 1.0.36",
+ "syn 2.0.60",
]
[[package]]
@@ -4600,17 +4700,33 @@ version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
dependencies = [
- "aes",
"byteorder",
- "bzip2",
- "constant_time_eq 0.1.5",
"crc32fast",
"crossbeam-utils",
+ "time",
+]
+
+[[package]]
+name = "zip"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2655979068a1f8fa91cb9e8e5b9d3ee54d18e0ddc358f2f4a395afc0929a84b"
+dependencies = [
+ "aes",
+ "arbitrary",
+ "byteorder",
+ "bzip2",
+ "constant_time_eq",
+ "crc32fast",
+ "crossbeam-utils",
+ "deflate64",
"flate2",
"hmac",
+ "lzma-rs",
"pbkdf2",
"sha1",
"time",
+ "zopfli",
"zstd",
]
@@ -4625,21 +4741,32 @@ dependencies = [
]
[[package]]
-name = "zstd"
-version = "0.11.2+zstd.1.5.2"
+name = "zopfli"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"
+checksum = "5c1f48f3508a3a3f2faee01629564400bc12260f6214a056d06a3aaaa6ef0736"
+dependencies = [
+ "crc32fast",
+ "log",
+ "simd-adler32",
+ "typed-arena",
+]
+
+[[package]]
+name = "zstd"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
-version = "5.0.2+zstd.1.5.2"
+version = "7.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"
+checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a"
dependencies = [
- "libc",
"zstd-sys",
]
diff --git a/Cargo.toml b/Cargo.toml
index cea1de62e2..e93c457ba4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -132,7 +132,7 @@ default-features = false
version = "0.6.4"
[dependencies.reqwest]
-version = "0.12.2"
+version = "0.12.4"
features = [ "blocking", "json", "multipart" ]
[dependencies.self_update]
@@ -147,7 +147,7 @@ features = [ "derive" ]
version = "1.0"
[dependencies.serial_test]
-version = "3.0.0"
+version = "3.1.0"
[dependencies.snarkvm]
workspace = true
@@ -167,7 +167,7 @@ version = "0.3.18"
features = [ "fmt" ]
[dependencies.zip]
-version = "^0.6"
+version = "^1.1"
[dependencies.crossterm]
version = "0.27.0"
diff --git a/compiler/ast/src/common/location.rs b/compiler/ast/src/common/location.rs
index a191f00480..85a0d27b8d 100644
--- a/compiler/ast/src/common/location.rs
+++ b/compiler/ast/src/common/location.rs
@@ -14,6 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see .
+use leo_ast::CompositeType;
use leo_span::Symbol;
use serde::{Deserialize, Deserializer, Serialize, Serializer};
@@ -31,6 +32,12 @@ impl Location {
}
}
+impl From<&CompositeType> for Location {
+ fn from(composite: &CompositeType) -> Location {
+ Location::new(composite.program, composite.id.name)
+ }
+}
+
impl Serialize for Location {
fn serialize(&self, serializer: S) -> leo_errors::Result
where
diff --git a/compiler/ast/src/functions/external.rs b/compiler/ast/src/functions/external.rs
deleted file mode 100644
index 04217842f0..0000000000
--- a/compiler/ast/src/functions/external.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (C) 2019-2023 Aleo Systems Inc.
-// This file is part of the Leo library.
-
-// The Leo library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// The Leo library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with the Leo library. If not, see .
-
-use crate::{CompositeType, Identifier, Node, NodeID, Type};
-use leo_span::Span;
-
-use serde::{Deserialize, Serialize};
-use std::fmt;
-
-/// A function output from an external program with type record.
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub struct External {
- /// The name the parameter is accessible as in the function's body.
- pub identifier: Identifier,
- /// The name of the external program.
- pub program_name: Identifier,
- /// The name of the external record type.
- pub record: Identifier,
- /// The parameters span from any annotations to its type.
- pub span: Span,
- /// The ID of the node.
- pub id: NodeID,
-}
-
-impl External {
- pub fn type_(&self) -> Type {
- Type::Composite(CompositeType { id: self.record, program: Some(self.program_name.name) })
- }
-}
-
-impl fmt::Display for External {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- write!(f, "{}: {}.leo/{}.record", self.identifier, self.program_name, self.record)
- }
-}
-
-crate::simple_node_impl!(External);
diff --git a/compiler/ast/src/functions/input.rs b/compiler/ast/src/functions/input.rs
index 8a6aba8c23..a93196652c 100644
--- a/compiler/ast/src/functions/input.rs
+++ b/compiler/ast/src/functions/input.rs
@@ -14,91 +14,15 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see .
-use crate::{External, Identifier, Mode, Node, NodeID, Type};
+use crate::{Identifier, Mode, Node, NodeID, Type};
use leo_span::Span;
use serde::{Deserialize, Serialize};
use std::fmt;
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub enum Input {
- Internal(FunctionInput),
- External(External),
-}
-
-impl fmt::Display for Input {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- use Input::*;
- match self {
- Internal(input) => input.fmt(f),
- External(input) => input.fmt(f),
- }
- }
-}
-
-impl Input {
- pub fn type_(&self) -> Type {
- use Input::*;
- match self {
- Internal(input) => input.type_.clone(),
- External(input) => input.type_(),
- }
- }
-
- pub fn identifier(&self) -> Identifier {
- use Input::*;
- match self {
- Internal(input) => input.identifier,
- External(input) => input.identifier,
- }
- }
-
- pub fn mode(&self) -> Mode {
- use Input::*;
- match self {
- Internal(input) => input.mode,
- External(_) => Mode::None,
- }
- }
-}
-
-impl Node for Input {
- fn span(&self) -> Span {
- use Input::*;
- match self {
- Internal(input) => input.span(),
- External(input) => input.span(),
- }
- }
-
- fn set_span(&mut self, span: Span) {
- use Input::*;
- match self {
- Internal(input) => input.set_span(span),
- External(input) => input.set_span(span),
- }
- }
-
- fn id(&self) -> usize {
- use Input::*;
- match self {
- Internal(input) => input.id(),
- External(input) => input.id(),
- }
- }
-
- fn set_id(&mut self, id: usize) {
- use Input::*;
- match self {
- Internal(input) => input.set_id(id),
- External(input) => input.set_id(id),
- }
- }
-}
-
/// A function parameter.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub struct FunctionInput {
+pub struct Input {
/// The name the parameter is accessible as in the function's body.
pub identifier: Identifier,
/// The mode of the function parameter.
@@ -111,16 +35,28 @@ pub struct FunctionInput {
pub id: NodeID,
}
-impl FunctionInput {
+impl Input {
fn format(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{} {}: {}", self.mode, self.identifier, self.type_)
}
+
+ pub fn identifier(&self) -> &Identifier {
+ &self.identifier
+ }
+
+ pub fn mode(&self) -> Mode {
+ self.mode
+ }
+
+ pub fn type_(&self) -> &Type {
+ &self.type_
+ }
}
-impl fmt::Display for FunctionInput {
+impl fmt::Display for Input {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.format(f)
}
}
-crate::simple_node_impl!(FunctionInput);
+crate::simple_node_impl!(Input);
diff --git a/compiler/ast/src/functions/mod.rs b/compiler/ast/src/functions/mod.rs
index 6daee616eb..100e5b84dc 100644
--- a/compiler/ast/src/functions/mod.rs
+++ b/compiler/ast/src/functions/mod.rs
@@ -23,9 +23,6 @@ pub use core_function::*;
pub mod variant;
pub use variant::*;
-pub mod external;
-pub use external::*;
-
pub mod input;
pub use input::*;
@@ -85,16 +82,10 @@ impl Function {
span: Span,
id: NodeID,
) -> Self {
- // Determine the output type of the function
- let get_output_type = |output: &Output| match &output {
- Output::Internal(output) => output.type_.clone(),
- Output::External(output) => output.type_(),
- };
-
let output_type = match output.len() {
0 => Type::Unit,
- 1 => get_output_type(&output[0]),
- _ => Type::Tuple(TupleType::new(output.iter().map(get_output_type).collect())),
+ 1 => output[0].type_.clone(),
+ _ => Type::Tuple(TupleType::new(output.iter().map(|o| o.type_.clone()).collect())),
};
Function { annotations, variant, identifier, input, output, output_type, block, span, id }
diff --git a/compiler/ast/src/functions/output.rs b/compiler/ast/src/functions/output.rs
index 7357b075c9..d35b53dbf4 100644
--- a/compiler/ast/src/functions/output.rs
+++ b/compiler/ast/src/functions/output.rs
@@ -14,81 +14,15 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see .
-use crate::{External, Mode, Node, NodeID, Type};
+use crate::{Mode, Node, NodeID, Type};
use leo_span::Span;
use serde::{Deserialize, Serialize};
use std::fmt;
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub enum Output {
- Internal(FunctionOutput),
- External(External),
-}
-
-impl Output {
- pub fn type_(&self) -> Type {
- match self {
- Output::Internal(output) => output.type_.clone(),
- Output::External(output) => output.type_(),
- }
- }
-
- pub fn mode(&self) -> Mode {
- match self {
- Output::Internal(output) => output.mode,
- Output::External(_) => Mode::None,
- }
- }
-}
-
-impl fmt::Display for Output {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- use Output::*;
- match self {
- Internal(output) => output.fmt(f),
- External(output) => output.fmt(f),
- }
- }
-}
-
-impl Node for Output {
- fn span(&self) -> Span {
- use Output::*;
- match self {
- Internal(output) => output.span(),
- External(output) => output.span(),
- }
- }
-
- fn set_span(&mut self, span: Span) {
- use Output::*;
- match self {
- Internal(output) => output.set_span(span),
- External(output) => output.set_span(span),
- }
- }
-
- fn id(&self) -> NodeID {
- use Output::*;
- match self {
- Internal(output) => output.id(),
- External(output) => output.id(),
- }
- }
-
- fn set_id(&mut self, id: NodeID) {
- use Output::*;
- match self {
- Internal(output) => output.set_id(id),
- External(output) => output.set_id(id),
- }
- }
-}
-
/// A function output.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub struct FunctionOutput {
+pub struct Output {
/// The mode of the function output.
pub mode: Mode,
/// The type of the function output.
@@ -99,10 +33,20 @@ pub struct FunctionOutput {
pub id: NodeID,
}
-impl fmt::Display for FunctionOutput {
+impl Output {
+ pub fn type_(&self) -> &Type {
+ &self.type_
+ }
+
+ pub fn mode(&self) -> Mode {
+ self.mode
+ }
+}
+
+impl fmt::Display for Output {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{} {}", self.mode, self.type_)
}
}
-crate::simple_node_impl!(FunctionOutput);
+crate::simple_node_impl!(Output);
diff --git a/compiler/ast/src/mapping/mod.rs b/compiler/ast/src/mapping/mod.rs
index bd4e379b50..26f151a25a 100644
--- a/compiler/ast/src/mapping/mod.rs
+++ b/compiler/ast/src/mapping/mod.rs
@@ -16,7 +16,7 @@
use crate::{Identifier, Node, NodeID, Type};
-use leo_span::{Span, Symbol};
+use leo_span::Span;
use serde::{Deserialize, Serialize};
use snarkvm::prelude::{Mapping as MappingCore, Network};
@@ -38,11 +38,11 @@ pub struct Mapping {
}
impl Mapping {
- pub fn from_snarkvm(mapping: &MappingCore, program: Symbol) -> Self {
+ pub fn from_snarkvm(mapping: &MappingCore) -> Self {
Self {
identifier: Identifier::from(mapping.name()),
- key_type: Type::from_snarkvm(mapping.key().plaintext_type(), program),
- value_type: Type::from_snarkvm(mapping.value().plaintext_type(), program),
+ key_type: Type::from_snarkvm(mapping.key().plaintext_type(), None),
+ value_type: Type::from_snarkvm(mapping.value().plaintext_type(), None),
span: Default::default(),
id: Default::default(),
}
diff --git a/compiler/ast/src/struct/mod.rs b/compiler/ast/src/struct/mod.rs
index e280bee399..f640401498 100644
--- a/compiler/ast/src/struct/mod.rs
+++ b/compiler/ast/src/struct/mod.rs
@@ -87,9 +87,9 @@ impl Composite {
mode: if input.owner().is_public() { Mode::Public } else { Mode::Private },
identifier: Identifier::from(id),
type_: match entry {
- Public(t) => Type::from_snarkvm(t, external_program),
- Private(t) => Type::from_snarkvm(t, external_program),
- Constant(t) => Type::from_snarkvm(t, external_program),
+ Public(t) => Type::from_snarkvm(t, None),
+ Private(t) => Type::from_snarkvm(t, None),
+ Constant(t) => Type::from_snarkvm(t, None),
},
span: Default::default(),
id: Default::default(),
@@ -104,7 +104,7 @@ impl Composite {
}
}
- pub fn from_snarkvm(input: &StructType, program: Symbol) -> Self {
+ pub fn from_snarkvm(input: &StructType) -> Self {
Self {
identifier: Identifier::from(input.name()),
members: input
@@ -113,12 +113,12 @@ impl Composite {
.map(|(id, type_)| Member {
mode: Mode::None,
identifier: Identifier::from(id),
- type_: Type::from_snarkvm(type_, program),
+ type_: Type::from_snarkvm(type_, None),
span: Default::default(),
id: Default::default(),
})
.collect(),
- external: Some(program),
+ external: None,
is_record: false,
span: Default::default(),
id: Default::default(),
diff --git a/compiler/ast/src/stub/function_stub.rs b/compiler/ast/src/stub/function_stub.rs
index 8f11573074..55b0533529 100644
--- a/compiler/ast/src/stub/function_stub.rs
+++ b/compiler/ast/src/stub/function_stub.rs
@@ -17,10 +17,7 @@
use crate::{
Annotation,
CompositeType,
- External,
Function,
- FunctionInput,
- FunctionOutput,
FutureType,
Identifier,
Input,
@@ -36,7 +33,6 @@ use crate::{
};
use leo_span::{sym, Span, Symbol};
-use crate::Type::Composite;
use itertools::Itertools;
use serde::{Deserialize, Serialize};
use snarkvm::{
@@ -91,16 +87,10 @@ impl FunctionStub {
span: Span,
id: NodeID,
) -> Self {
- // Determine the output type of the function
- let get_output_type = |output: &Output| match &output {
- Output::Internal(output) => output.type_.clone(),
- Output::External(output) => output.type_(),
- };
-
let output_type = match output.len() {
0 => Type::Unit,
- 1 => get_output_type(&output[0]),
- _ => Type::Tuple(TupleType::new(output.iter().map(get_output_type).collect())),
+ 1 => output[0].type_.clone(),
+ _ => Type::Tuple(TupleType::new(output.iter().map(|o| o.type_.clone()).collect())),
};
FunctionStub { annotations, variant, identifier, input, output, output_type, span, id }
@@ -147,58 +137,55 @@ impl FunctionStub {
.outputs()
.iter()
.map(|output| match output.value_type() {
- ValueType::Constant(val) => Output::Internal(FunctionOutput {
+ ValueType::Constant(val) => vec![Output {
mode: Mode::Constant,
- type_: Type::from_snarkvm(val, program),
+ type_: Type::from_snarkvm(val, None),
span: Default::default(),
id: Default::default(),
- }),
- ValueType::Public(val) => Output::Internal(FunctionOutput {
+ }],
+ ValueType::Public(val) => vec![Output {
mode: Mode::Public,
- type_: Type::from_snarkvm(val, program),
+ type_: Type::from_snarkvm(val, None),
span: Default::default(),
id: Default::default(),
- }),
- ValueType::Private(val) => Output::Internal(FunctionOutput {
+ }],
+ ValueType::Private(val) => vec![Output {
mode: Mode::Private,
- type_: Type::from_snarkvm(val, program),
+ type_: Type::from_snarkvm(val, None),
span: Default::default(),
id: Default::default(),
- }),
- ValueType::Record(id) => Output::Internal(FunctionOutput {
+ }],
+ ValueType::Record(id) => vec![Output {
mode: Mode::None,
- type_: Composite(CompositeType { id: Identifier::from(id), program: Some(program) }),
+ type_: Type::Composite(CompositeType { id: Identifier::from(id), program: Some(program) }),
span: Default::default(),
id: Default::default(),
- }),
- ValueType::ExternalRecord(loc) => Output::External(External {
- identifier: Identifier::new(Symbol::intern("dummy"), Default::default()),
- program_name: ProgramId::from(loc.program_id()).name,
- record: Identifier::from(loc.resource()),
+ }],
+ ValueType::ExternalRecord(loc) => {
+ vec![Output {
+ mode: Mode::None,
+ span: Default::default(),
+ id: Default::default(),
+ type_: Type::Composite(CompositeType {
+ id: Identifier::from(loc.resource()),
+ program: Some(ProgramId::from(loc.program_id()).name.name),
+ }),
+ }]
+ }
+ ValueType::Future(_) => vec![Output {
+ mode: Mode::None,
span: Default::default(),
id: Default::default(),
- }),
- ValueType::Future(_) => Output::Internal(FunctionOutput {
- mode: Mode::Public,
type_: Type::Future(FutureType::new(
Vec::new(),
Some(Location::new(Some(program), Identifier::from(function.name()).name)),
false,
)),
- span: Default::default(),
- id: Default::default(),
- }),
+ }],
})
- .collect_vec();
- let output_vec = outputs
- .iter()
- .map(|output| match output {
- Output::Internal(output) => output.type_.clone(),
- Output::External(output) => {
- Type::Composite(CompositeType { id: output.record, program: Some(output.program_name.name) })
- }
- })
- .collect_vec();
+ .collect_vec()
+ .concat();
+ let output_vec = outputs.iter().map(|output| output.type_.clone()).collect_vec();
let output_type = match output_vec.len() {
0 => Type::Unit,
1 => output_vec[0].clone(),
@@ -219,41 +206,44 @@ impl FunctionStub {
.map(|(index, input)| {
let arg_name = Identifier::new(Symbol::intern(&format!("arg{}", index + 1)), Default::default());
match input.value_type() {
- ValueType::Constant(val) => Input::Internal(FunctionInput {
+ ValueType::Constant(val) => Input {
identifier: arg_name,
mode: Mode::Constant,
- type_: Type::from_snarkvm(val, program),
+ type_: Type::from_snarkvm(val, None),
span: Default::default(),
id: Default::default(),
- }),
- ValueType::Public(val) => Input::Internal(FunctionInput {
+ },
+ ValueType::Public(val) => Input {
identifier: arg_name,
mode: Mode::Public,
- type_: Type::from_snarkvm(val, program),
+ type_: Type::from_snarkvm(val, None),
span: Default::default(),
id: Default::default(),
- }),
- ValueType::Private(val) => Input::Internal(FunctionInput {
+ },
+ ValueType::Private(val) => Input {
identifier: arg_name,
mode: Mode::Private,
- type_: Type::from_snarkvm(val, program),
+ type_: Type::from_snarkvm(val, None),
span: Default::default(),
id: Default::default(),
- }),
- ValueType::Record(id) => Input::Internal(FunctionInput {
+ },
+ ValueType::Record(id) => Input {
identifier: arg_name,
mode: Mode::None,
- type_: Composite(CompositeType { id: Identifier::from(id), program: Some(program) }),
+ type_: Type::Composite(CompositeType { id: Identifier::from(id), program: Some(program) }),
span: Default::default(),
id: Default::default(),
- }),
- ValueType::ExternalRecord(loc) => Input::External(External {
- identifier: Identifier::new(Symbol::intern("dummy"), Default::default()),
- program_name: ProgramId::from(loc.program_id()).name,
- record: Identifier::from(loc.resource()),
+ },
+ ValueType::ExternalRecord(loc) => Input {
+ identifier: arg_name,
+ mode: Mode::None,
span: Default::default(),
id: Default::default(),
- }),
+ type_: Type::Composite(CompositeType {
+ id: Identifier::from(loc.name()),
+ program: Some(ProgramId::from(loc.program_id()).name.name),
+ }),
+ },
ValueType::Future(_) => panic!("Functions do not contain futures as inputs"),
}
})
@@ -280,24 +270,22 @@ impl FunctionStub {
.inputs()
.iter()
.enumerate()
- .map(|(index, input)| {
- Input::Internal(FunctionInput {
- identifier: Identifier::new(Symbol::intern(&format!("arg{}", index + 1)), Default::default()),
- mode: Mode::None,
- type_: match input.finalize_type() {
- PlaintextFinalizeType(val) => Type::from_snarkvm(val, key_name),
- FutureFinalizeType(val) => Type::Future(FutureType::new(
- Vec::new(),
- Some(Location::new(
- Some(Identifier::from(val.program_id().name()).name),
- Symbol::intern(&format!("finalize/{}", val.resource())),
- )),
- false,
+ .map(|(index, input)| Input {
+ identifier: Identifier::new(Symbol::intern(&format!("arg{}", index + 1)), Default::default()),
+ mode: Mode::None,
+ type_: match input.finalize_type() {
+ PlaintextFinalizeType(val) => Type::from_snarkvm(val, Some(key_name)),
+ FutureFinalizeType(val) => Type::Future(FutureType::new(
+ Vec::new(),
+ Some(Location::new(
+ Some(Identifier::from(val.program_id().name()).name),
+ Symbol::intern(&format!("finalize/{}", val.resource())),
)),
- },
- span: Default::default(),
- id: Default::default(),
- })
+ false,
+ )),
+ },
+ span: Default::default(),
+ id: Default::default(),
})
.collect_vec(),
output: Vec::new(),
@@ -315,24 +303,18 @@ impl FunctionStub {
.outputs()
.iter()
.map(|output| match output.register_type() {
- Plaintext(val) => Output::Internal(FunctionOutput {
+ Plaintext(val) => Output {
mode: Mode::None,
- type_: Type::from_snarkvm(val, program),
+ type_: Type::from_snarkvm(val, Some(program)),
span: Default::default(),
id: Default::default(),
- }),
+ },
Record(_) => panic!("Closures do not return records"),
ExternalRecord(_) => panic!("Closures do not return external records"),
Future(_) => panic!("Closures do not return futures"),
})
.collect_vec();
- let output_vec = outputs
- .iter()
- .map(|output| match output {
- Output::Internal(output) => output.type_.clone(),
- Output::External(_) => panic!("Closures do not return external records"),
- })
- .collect_vec();
+ let output_vec = outputs.iter().map(|output| output.type_.clone()).collect_vec();
let output_type = match output_vec.len() {
0 => Type::Unit,
1 => output_vec[0].clone(),
@@ -349,13 +331,13 @@ impl FunctionStub {
.map(|(index, input)| {
let arg_name = Identifier::new(Symbol::intern(&format!("arg{}", index + 1)), Default::default());
match input.register_type() {
- Plaintext(val) => Input::Internal(FunctionInput {
+ Plaintext(val) => Input {
identifier: arg_name,
mode: Mode::None,
- type_: Type::from_snarkvm(val, program),
+ type_: Type::from_snarkvm(val, None),
span: Default::default(),
id: Default::default(),
- }),
+ },
Record(_) => panic!("Closures do not contain records as inputs"),
ExternalRecord(_) => panic!("Closures do not contain external records as inputs"),
Future(_) => panic!("Closures do not contain futures as inputs"),
diff --git a/compiler/ast/src/types/array.rs b/compiler/ast/src/types/array.rs
index 47ed170bf7..1e11cf4163 100644
--- a/compiler/ast/src/types/array.rs
+++ b/compiler/ast/src/types/array.rs
@@ -53,7 +53,7 @@ impl ArrayType {
}
}
- pub fn from_snarkvm(array_type: &ConsoleArrayType, program: Symbol) -> Self {
+ pub fn from_snarkvm(array_type: &ConsoleArrayType, program: Option) -> Self {
Self {
element_type: Box::new(Type::from_snarkvm(array_type.next_element_type(), program)),
length: NonNegativeNumber::from(array_type.length().to_string().replace("u32", "")),
diff --git a/compiler/ast/src/types/type_.rs b/compiler/ast/src/types/type_.rs
index 4dd72b618e..39e12f4add 100644
--- a/compiler/ast/src/types/type_.rs
+++ b/compiler/ast/src/types/type_.rs
@@ -110,7 +110,40 @@ impl Type {
}
}
- pub fn from_snarkvm(t: &PlaintextType, program: Symbol) -> Self {
+ ///
+ /// Returns `true` if the self `Type` is equal to the other `Type` in all aspects besides composite program of origin.
+ ///
+ /// Flattens array syntax: `[[u8; 1]; 2] == [u8; (2, 1)] == true`
+ ///
+ pub fn eq_flat_relax_composite(&self, other: &Self) -> bool {
+ match (self, other) {
+ (Type::Address, Type::Address)
+ | (Type::Boolean, Type::Boolean)
+ | (Type::Field, Type::Field)
+ | (Type::Group, Type::Group)
+ | (Type::Scalar, Type::Scalar)
+ | (Type::Signature, Type::Signature)
+ | (Type::String, Type::String)
+ | (Type::Unit, Type::Unit) => true,
+ (Type::Array(left), Type::Array(right)) => {
+ left.element_type().eq_flat_relax_composite(right.element_type()) && left.length() == right.length()
+ }
+ (Type::Identifier(left), Type::Identifier(right)) => left.matches(right),
+ (Type::Integer(left), Type::Integer(right)) => left.eq(right),
+ (Type::Mapping(left), Type::Mapping(right)) => {
+ left.key.eq_flat_relax_composite(&right.key) && left.value.eq_flat(&right.value)
+ }
+ (Type::Tuple(left), Type::Tuple(right)) if left.length() == right.length() => left
+ .elements()
+ .iter()
+ .zip_eq(right.elements().iter())
+ .all(|(left_type, right_type)| left_type.eq_flat_relax_composite(right_type)),
+ (Type::Composite(left), Type::Composite(right)) => left.id.name == right.id.name,
+ _ => false,
+ }
+ }
+
+ pub fn from_snarkvm(t: &PlaintextType, program: Option) -> Self {
match t {
Literal(lit) => match lit {
snarkvm::prelude::LiteralType::Address => Type::Address,
@@ -131,7 +164,7 @@ impl Type {
snarkvm::prelude::LiteralType::Signature => Type::Signature,
snarkvm::prelude::LiteralType::String => Type::String,
},
- Struct(s) => Type::Composite(CompositeType { id: common::Identifier::from(s), program: Some(program) }),
+ Struct(s) => Type::Composite(CompositeType { id: common::Identifier::from(s), program }),
Array(array) => Type::Array(ArrayType::from_snarkvm(array, program)),
}
}
diff --git a/compiler/compiler/Cargo.toml b/compiler/compiler/Cargo.toml
index a73c826429..75d6bd717f 100644
--- a/compiler/compiler/Cargo.toml
+++ b/compiler/compiler/Cargo.toml
@@ -72,7 +72,7 @@ workspace = true
version = "1.10.4"
[dev-dependencies.serde]
-version = "1.0.197"
+version = "1.0.198"
features = [ "derive" ]
[dev-dependencies.serde_yaml]
diff --git a/compiler/compiler/tests/utilities/check_unique_node_ids.rs b/compiler/compiler/tests/utilities/check_unique_node_ids.rs
index 4b357abd2c..4fa10cc806 100644
--- a/compiler/compiler/tests/utilities/check_unique_node_ids.rs
+++ b/compiler/compiler/tests/utilities/check_unique_node_ids.rs
@@ -275,34 +275,14 @@ impl<'a> ProgramVisitor<'a> for CheckUniqueNodeIds<'a> {
self.visit_identifier(identifier, &Default::default());
// Check the inputs.
for in_ in input {
- match in_ {
- Input::Internal(FunctionInput { identifier, type_, id, .. }) => {
- self.visit_identifier(identifier, &Default::default());
- self.check_ty(type_);
- self.check(*id);
- }
- Input::External(External { identifier, program_name, record, id, .. }) => {
- self.visit_identifier(identifier, &Default::default());
- self.visit_identifier(program_name, &Default::default());
- self.visit_identifier(record, &Default::default());
- self.check(*id);
- }
- }
+ self.visit_identifier(in_.identifier(), &Default::default());
+ self.check_ty(&in_.type_);
+ self.check(in_.id);
}
// Check the outputs.
for out in output {
- match out {
- Output::Internal(FunctionOutput { type_, id, .. }) => {
- self.check_ty(type_);
- self.check(*id);
- }
- Output::External(External { identifier, program_name, record, id, .. }) => {
- self.visit_identifier(identifier, &Default::default());
- self.visit_identifier(program_name, &Default::default());
- self.visit_identifier(record, &Default::default());
- self.check(*id);
- }
- }
+ self.check_ty(&out.type_);
+ self.check(out.id);
}
// Check the function body.
self.visit_block(block);
diff --git a/compiler/parser/src/parser/file.rs b/compiler/parser/src/parser/file.rs
index 0795207a7f..46d8fc39cf 100644
--- a/compiler/parser/src/parser/file.rs
+++ b/compiler/parser/src/parser/file.rs
@@ -236,10 +236,13 @@ impl ParserContext<'_> {
self.expect(&Token::LeftCurly)?;
let (members, end) = self.parse_struct_members()?;
+ // Only provide a program name for records.
+ let external = if is_record { self.program_name } else { None };
+
Ok((struct_name.name, Composite {
identifier: struct_name,
members,
- external: self.program_name,
+ external,
is_record,
span: start + end,
id: self.node_builder.next_id(),
@@ -295,84 +298,16 @@ impl ParserContext<'_> {
let name = self.expect_identifier()?;
self.expect(&Token::Colon)?;
- if self.peek_is_external() {
- let external = self.expect_identifier()?;
- let mut span = name.span + external.span;
+ let type_ = self.parse_type()?.0;
- // Parse `.leo/` or `.aleo/`.
- self.eat(&Token::Dot);
- self.eat_any(&[Token::Leo, Token::Aleo]);
- self.eat(&Token::Div);
-
- // Parse record name.
- let record = self.expect_identifier()?;
-
- // Parse `.record`.
- self.eat(&Token::Dot);
- self.eat(&Token::Record);
- span = span + self.prev_token.span;
-
- Ok(functions::Input::External(External {
- identifier: name,
- program_name: external,
- record,
- span,
- id: self.node_builder.next_id(),
- }))
- } else {
- let type_ = self.parse_type()?.0;
-
- Ok(functions::Input::Internal(FunctionInput {
- identifier: name,
- mode,
- type_,
- span: name.span,
- id: self.node_builder.next_id(),
- }))
- }
- }
-
- /// Returns a [`FunctionOutput`] AST node if the next tokens represent a function output.
- fn parse_function_output(&mut self) -> Result {
- // TODO: Could this span be made more accurate?
- let mode = self.parse_mode()?;
- let (type_, span) = self.parse_type()?;
- Ok(FunctionOutput { mode, type_, span, id: self.node_builder.next_id() })
+ Ok(functions::Input { identifier: name, mode, type_, span: name.span, id: self.node_builder.next_id() })
}
/// Returns a [`Output`] AST node if the next tokens represent a function output.
fn parse_output(&mut self) -> Result