From ea00bc2daccc2c1b48e89fc2859c085a42b1e253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Tr=C4=85tnowiecki?= Date: Tue, 1 Oct 2024 23:58:50 +0200 Subject: [PATCH 1/3] Update Cairo --- Cargo.lock | 63 ++++++++++--------- Cargo.toml | 48 +++++++------- extensions/scarb-doc/src/lib.rs | 9 ++- .../scarb-snforge-test-collector/Cargo.toml | 1 + .../src/compilation.rs | 1 + .../src/compilation/test_collector.rs | 9 ++- .../src/crate_collection.rs | 5 ++ .../scarb-snforge-test-collector/src/main.rs | 1 + .../compilers/starknet_contract/compiler.rs | 13 +++- scarb/src/compiler/compilers/test.rs | 14 ++++- scarb/src/compiler/db.rs | 8 ++- scarb/src/compiler/helpers.rs | 9 ++- scarb/src/ops/expand.rs | 9 ++- 13 files changed, 119 insertions(+), 71 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 235f9782d..b588c575c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -568,7 +568,7 @@ dependencies = [ [[package]] name = "cairo-lang-casm" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-utils", "indoc", @@ -581,7 +581,7 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "anyhow", "cairo-lang-defs", @@ -606,7 +606,7 @@ dependencies = [ [[package]] name = "cairo-lang-debug" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-utils", ] @@ -614,7 +614,7 @@ dependencies = [ [[package]] name = "cairo-lang-defs" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -630,7 +630,7 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -641,7 +641,7 @@ dependencies = [ [[package]] name = "cairo-lang-doc" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-defs", "cairo-lang-filesystem", @@ -656,7 +656,7 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-utils", "good_lp", @@ -665,7 +665,7 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -680,7 +680,7 @@ dependencies = [ [[package]] name = "cairo-lang-formatter" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "anyhow", "cairo-lang-diagnostics", @@ -700,7 +700,7 @@ dependencies = [ [[package]] name = "cairo-lang-language-server" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -800,7 +800,7 @@ checksum = "c49906d6b1c215e5814be7c5c65ecf2328898b335bee8c2409ec07cfb5530daf" [[package]] name = "cairo-lang-parser" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -837,7 +837,7 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-debug", "quote", @@ -847,7 +847,7 @@ dependencies = [ [[package]] name = "cairo-lang-project" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -860,7 +860,7 @@ dependencies = [ [[package]] name = "cairo-lang-runner" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "ark-ff", "ark-secp256k1", @@ -890,7 +890,7 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -915,7 +915,7 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "anyhow", "cairo-lang-utils", @@ -941,7 +941,7 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -956,7 +956,7 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -971,7 +971,7 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -994,7 +994,7 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "assert_matches", "cairo-lang-casm", @@ -1014,7 +1014,7 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -1023,7 +1023,7 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1052,7 +1052,7 @@ dependencies = [ [[package]] name = "cairo-lang-starknet-classes" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", @@ -1074,7 +1074,7 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -1089,7 +1089,7 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "genco", "xshell", @@ -1098,7 +1098,7 @@ dependencies = [ [[package]] name = "cairo-lang-test-plugin" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1124,7 +1124,7 @@ dependencies = [ [[package]] name = "cairo-lang-test-runner" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1146,7 +1146,7 @@ dependencies = [ [[package]] name = "cairo-lang-test-utils" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "cairo-lang-formatter", "cairo-lang-utils", @@ -1158,7 +1158,7 @@ dependencies = [ [[package]] name = "cairo-lang-utils" version = "2.8.2" -source = "git+https://github.com/starkware-libs/cairo?rev=e4136a412b03aff3ba1dec3eb8d8d22356cd67ae#e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" +source = "git+https://github.com/starkware-libs/cairo?rev=227cea949132c062088d067b9f6b7ea4be9e4d16#227cea949132c062088d067b9f6b7ea4be9e4d16" dependencies = [ "env_logger", "hashbrown 0.14.5", @@ -4789,6 +4789,7 @@ dependencies = [ "scarb-metadata 1.12.0", "scarb-test-support", "scarb-ui", + "semver", "serde", "serde_json", "smol_str", diff --git a/Cargo.toml b/Cargo.toml index 630de62ef..9c37623d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,30 +35,30 @@ anyhow = "1" assert_fs = "1" async-trait = "0.1" axum = { version = "0.6", features = ["http2"] } -cairo-lang-casm = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-compiler = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-debug = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-defs = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-diagnostics = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-doc = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-filesystem = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-formatter = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-language-server = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-lowering = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-parser = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-project = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-runner = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-semantic = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-sierra = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-sierra-generator = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-sierra-to-casm = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-sierra-type-size = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-starknet = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-starknet-classes = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-syntax = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-test-plugin = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-test-runner = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae" } -cairo-lang-utils = { git = "https://github.com/starkware-libs/cairo", rev = "e4136a412b03aff3ba1dec3eb8d8d22356cd67ae", features = ["env_logger"] } +cairo-lang-casm = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-compiler = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-debug = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-defs = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-diagnostics = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-doc = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-filesystem = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-formatter = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-language-server = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-lowering = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-parser = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-project = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-runner = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-semantic = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-sierra = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-sierra-generator = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-sierra-to-casm = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-sierra-type-size = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-starknet = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-starknet-classes = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-syntax = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-test-plugin = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-test-runner = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16" } +cairo-lang-utils = { git = "https://github.com/starkware-libs/cairo", rev = "227cea949132c062088d067b9f6b7ea4be9e4d16", features = ["env_logger"] } camino = { version = "1", features = ["serde1"] } cargo_metadata = ">=0.18" clap = { version = "4", features = ["derive", "env", "string"] } diff --git a/extensions/scarb-doc/src/lib.rs b/extensions/scarb-doc/src/lib.rs index fa14dc9ec..8340d30be 100644 --- a/extensions/scarb-doc/src/lib.rs +++ b/extensions/scarb-doc/src/lib.rs @@ -49,7 +49,7 @@ pub fn generate_packages_information( let project_config = get_project_config(metadata, package_metadata); let crate_ = generate_language_elements_tree_for_package( - package_metadata.name.clone(), + package_metadata, project_config, should_document_private_items, ); @@ -66,13 +66,16 @@ pub fn generate_packages_information( } fn generate_language_elements_tree_for_package( - package_name: String, + package: &PackageMetadata, project_config: ProjectConfig, document_private_items: bool, ) -> Crate { let db = ScarbDocDatabase::new(Some(project_config)); - let main_crate_id = db.intern_crate(CrateLongId::Real(package_name.into())); + let main_crate_id = db.intern_crate(CrateLongId::Real { + name: package.name.clone().into(), + version: Some(package.version.clone()), + }); Crate::new(&db, main_crate_id, document_private_items) } diff --git a/extensions/scarb-snforge-test-collector/Cargo.toml b/extensions/scarb-snforge-test-collector/Cargo.toml index e67101277..a2b160a79 100644 --- a/extensions/scarb-snforge-test-collector/Cargo.toml +++ b/extensions/scarb-snforge-test-collector/Cargo.toml @@ -33,6 +33,7 @@ num-traits.workspace = true rayon.workspace = true scarb-metadata = { path = "../../scarb-metadata" } scarb-ui = { path = "../../utils/scarb-ui" } +semver.workspace = true serde.workspace = true serde_json.workspace = true smol_str.workspace = true diff --git a/extensions/scarb-snforge-test-collector/src/compilation.rs b/extensions/scarb-snforge-test-collector/src/compilation.rs index 92b0e7bf8..636ae09ad 100644 --- a/extensions/scarb-snforge-test-collector/src/compilation.rs +++ b/extensions/scarb-snforge-test-collector/src/compilation.rs @@ -30,6 +30,7 @@ impl TestCompilationTarget { fn compile_tests(&self, compilation_unit: &CompilationUnit) -> Result { let (program_artifact, test_cases) = collect_tests( &self.crate_name, + self.crate_version.clone(), self.crate_root.as_std_path(), &self.lib_content, compilation_unit, diff --git a/extensions/scarb-snforge-test-collector/src/compilation/test_collector.rs b/extensions/scarb-snforge-test-collector/src/compilation/test_collector.rs index 0863c1465..e80634345 100644 --- a/extensions/scarb-snforge-test-collector/src/compilation/test_collector.rs +++ b/extensions/scarb-snforge-test-collector/src/compilation/test_collector.rs @@ -26,6 +26,7 @@ use cairo_lang_sierra_generator::replace_ids::replace_sierra_ids_in_program; use cairo_lang_starknet::starknet_plugin_suite; use cairo_lang_test_plugin::test_plugin_suite; use itertools::Itertools; +use semver::Version; use serde::Serialize; use smol_str::SmolStr; use std::path::Path; @@ -88,6 +89,7 @@ pub struct TestDetails { pub fn collect_tests( crate_name: &str, + crate_version: Version, crate_root: &Path, lib_content: &str, compilation_unit: &CompilationUnit, @@ -119,6 +121,7 @@ pub fn collect_tests( let main_crate_id = insert_lib_entrypoint_content_into_db( db, crate_name, + crate_version, crate_root, lib_content, main_package_crate_settings, @@ -258,11 +261,15 @@ fn build_diagnostics_reporter(compilation_unit: &CompilationUnit) -> Diagnostics fn insert_lib_entrypoint_content_into_db( db: &mut RootDatabase, crate_name: &str, + crate_version: Version, crate_root: &Path, lib_content: &str, main_package_crate_settings: CrateSettings, ) -> CrateId { - let main_crate_id = db.intern_crate(CrateLongId::Real(SmolStr::from(crate_name))); + let main_crate_id = db.intern_crate(CrateLongId::Real { + name: SmolStr::from(crate_name), + version: Some(crate_version), + }); db.set_crate_config( main_crate_id, Some(CrateConfiguration { diff --git a/extensions/scarb-snforge-test-collector/src/crate_collection.rs b/extensions/scarb-snforge-test-collector/src/crate_collection.rs index 998da8985..0cf4db7a6 100644 --- a/extensions/scarb-snforge-test-collector/src/crate_collection.rs +++ b/extensions/scarb-snforge-test-collector/src/crate_collection.rs @@ -1,6 +1,7 @@ use crate::metadata::CompilationUnit; use anyhow::{anyhow, Context, Result}; use camino::{Utf8Path, Utf8PathBuf}; +use semver::Version; use serde::Serialize; use walkdir::WalkDir; @@ -16,12 +17,14 @@ pub enum CrateLocation { pub struct TestCompilationTarget { pub crate_root: Utf8PathBuf, pub crate_name: String, + pub crate_version: Version, pub crate_location: CrateLocation, pub lib_content: String, } pub fn collect_test_compilation_targets( package_name: &str, + package_version: Version, package_path: &Utf8Path, compilation_unit: &CompilationUnit, ) -> Result> { @@ -29,6 +32,7 @@ pub fn collect_test_compilation_targets( let mut compilation_targets = vec![TestCompilationTarget { crate_root: compilation_unit.main_package_source_root(), crate_name: package_name.to_string(), + crate_version: package_version.clone(), crate_location: CrateLocation::Lib, lib_content: std::fs::read_to_string(package_source_file_path) .with_context(|| format!("failed to read = {package_source_file_path}"))?, @@ -38,6 +42,7 @@ pub fn collect_test_compilation_targets( if tests_dir_path.exists() { compilation_targets.push(TestCompilationTarget { crate_name: "tests".to_string(), + crate_version: package_version, crate_location: CrateLocation::Tests, lib_content: get_or_create_test_lib_content(tests_dir_path.as_path())?, crate_root: tests_dir_path, diff --git a/extensions/scarb-snforge-test-collector/src/main.rs b/extensions/scarb-snforge-test-collector/src/main.rs index 3e9f04e30..c9e19f346 100644 --- a/extensions/scarb-snforge-test-collector/src/main.rs +++ b/extensions/scarb-snforge-test-collector/src/main.rs @@ -44,6 +44,7 @@ fn main() -> Result<()> { let compilation_targets = collect_test_compilation_targets( &package_metadata.name, + package_metadata.version.clone(), &package_metadata.root, &compilation_unit, )?; diff --git a/scarb/src/compiler/compilers/starknet_contract/compiler.rs b/scarb/src/compiler/compilers/starknet_contract/compiler.rs index 915085beb..de75ab178 100644 --- a/scarb/src/compiler/compilers/starknet_contract/compiler.rs +++ b/scarb/src/compiler/compilers/starknet_contract/compiler.rs @@ -105,6 +105,7 @@ impl Compiler for StarknetContractCompiler { main_crate_ids, props.build_external_contracts.clone(), compiler_config, + &unit, db, ws, )?; @@ -150,12 +151,14 @@ pub fn get_compiled_contracts( main_crate_ids: Vec, build_external_contracts: Option>, compiler_config: CompilerConfig<'_>, + unit: &CairoCompilationUnit, db: &mut RootDatabase, ws: &Workspace<'_>, ) -> Result { let contracts = find_project_contracts( db.upcast_mut(), ws.config().ui(), + unit, main_crate_ids, build_external_contracts, )?; @@ -180,6 +183,7 @@ pub fn get_compiled_contracts( fn find_project_contracts( mut db: &dyn SemanticGroup, ui: Ui, + unit: &CairoCompilationUnit, main_crate_ids: Vec, external_contracts: Option>, ) -> Result> { @@ -197,9 +201,14 @@ fn find_project_contracts( .iter() .map(|selector| selector.package().into()) .unique() - .map(|package_name: SmolStr| { + .map(|name: SmolStr| { + let version = unit + .components() + .iter() + .find(|component| component.package.id.name.to_smol_str() == name) + .map(|component| component.package.id.version.clone()); db.upcast_mut() - .intern_crate(CrateLongId::Real(package_name)) + .intern_crate(CrateLongId::Real { name, version }) }) .collect::>(); let contracts = find_contracts(db, crate_ids.as_ref()); diff --git a/scarb/src/compiler/compilers/test.rs b/scarb/src/compiler/compilers/test.rs index 6772f8a83..30c5a5e98 100644 --- a/scarb/src/compiler/compilers/test.rs +++ b/scarb/src/compiler/compilers/test.rs @@ -38,7 +38,7 @@ impl Compiler for TestCompiler { let test_crate_ids = collect_main_crate_ids(&unit, db); // Search for all contracts in deps specified with `build-external-contracts`. let all_crate_ids = - get_contract_crate_ids(&build_external_contracts, test_crate_ids.clone(), db); + get_contract_crate_ids(&build_external_contracts, test_crate_ids.clone(), &unit, db); let starknet = unit.cairo_plugins.iter().any(|plugin| { plugin.package.id.name == PackageName::STARKNET @@ -125,6 +125,7 @@ fn compile_contracts( main_crate_ids, props.build_external_contracts.clone(), compiler_config, + &unit, db, ws, )?; @@ -147,6 +148,7 @@ fn external_contracts_selectors( fn get_contract_crate_ids( build_external_contracts: &Option>, test_crate_ids: Vec, + unit: &CairoCompilationUnit, db: &mut RootDatabase, ) -> Vec { let mut all_crate_ids = build_external_contracts @@ -157,7 +159,15 @@ fn get_contract_crate_ids( .map(|selector| selector.package()) .sorted() .unique() - .map(|package_name| db.intern_crate(CrateLongId::Real(package_name.to_smolstr()))) + .map(|package_name| { + let version = unit + .components() + .iter() + .find(|component| component.package.id.name == package_name) + .map(|component| component.package.id.version.clone()); + let name = package_name.to_smolstr(); + db.intern_crate(CrateLongId::Real { name, version }) + }) .collect_vec() }) .unwrap_or_default(); diff --git a/scarb/src/compiler/db.rs b/scarb/src/compiler/db.rs index 2adbabfc6..196ee109a 100644 --- a/scarb/src/compiler/db.rs +++ b/scarb/src/compiler/db.rs @@ -89,8 +89,12 @@ fn inject_virtual_wrapper_lib(db: &mut RootDatabase, unit: &CairoCompilationUnit .collect(); for component in components { - let crate_name = component.cairo_package_name(); - let crate_id = db.intern_crate(CrateLongId::Real(crate_name)); + let name = component.cairo_package_name(); + let version = component.package.id.version.clone(); + let crate_id = db.intern_crate(CrateLongId::Real { + name, + version: Some(version), + }); let file_stems = component .targets .iter() diff --git a/scarb/src/compiler/helpers.rs b/scarb/src/compiler/helpers.rs index c4b072596..e6b1ea82e 100644 --- a/scarb/src/compiler/helpers.rs +++ b/scarb/src/compiler/helpers.rs @@ -90,9 +90,12 @@ impl From for InliningStrategy { } pub fn collect_main_crate_ids(unit: &CairoCompilationUnit, db: &RootDatabase) -> Vec { - vec![db.intern_crate(CrateLongId::Real( - unit.main_component().cairo_package_name(), - ))] + let name = unit.main_component().cairo_package_name(); + let version = unit.main_component().package.id.version.clone(); + vec![db.intern_crate(CrateLongId::Real { + name, + version: Some(version), + })] } pub fn write_json( diff --git a/scarb/src/ops/expand.rs b/scarb/src/ops/expand.rs index 76861250a..e8d2c287f 100644 --- a/scarb/src/ops/expand.rs +++ b/scarb/src/ops/expand.rs @@ -160,9 +160,12 @@ fn do_expand( ws: &Workspace<'_>, ) -> Result<()> { let ScarbDatabase { db, .. } = build_scarb_root_database(compilation_unit, ws)?; - let main_crate_id = db.intern_crate(CrateLongId::Real( - compilation_unit.main_component().cairo_package_name(), - )); + let name = compilation_unit.main_component().cairo_package_name(); + let version = compilation_unit.main_component().package.id.version.clone(); + let main_crate_id = db.intern_crate(CrateLongId::Real { + name, + version: Some(version), + }); let mut compiler_config = build_compiler_config(&db, compilation_unit, &[main_crate_id], ws); // Report diagnostics, but do not fail. let _ = compiler_config.diagnostics_reporter.check(&db); From 0dbfad5b8b4d0e8bd5527df2c5b39dc0d7f1cf61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Tr=C4=85tnowiecki?= Date: Wed, 2 Oct 2024 01:21:01 +0200 Subject: [PATCH 2/3] Fix dep version for corelib --- extensions/scarb-doc/src/metadata/compilation.rs | 6 ++++-- extensions/scarb-snforge-test-collector/src/metadata.rs | 8 +++++--- scarb/src/compiler/db.rs | 8 ++++++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/extensions/scarb-doc/src/metadata/compilation.rs b/extensions/scarb-doc/src/metadata/compilation.rs index 74570dc45..f8f70c7b7 100644 --- a/extensions/scarb-doc/src/metadata/compilation.rs +++ b/extensions/scarb-doc/src/metadata/compilation.rs @@ -152,7 +152,9 @@ fn get_crate_settings_for_package( .iter() .find(|package| package.name == compilation_unit_metadata_component.name) .map(|package| package.version.clone()); - + let version = (dependency.name != *CORELIB_CRATE_NAME) + .then_some(version) + .flatten(); (dependency.name.clone(), DependencySettings { version }) }) }) @@ -162,7 +164,7 @@ fn get_crate_settings_for_package( dependencies.insert( package.name.clone(), DependencySettings { - version: Some(package.version.clone()), + version: (package.name != *CORELIB_CRATE_NAME).then_some(package.version.clone()), }, ); diff --git a/extensions/scarb-snforge-test-collector/src/metadata.rs b/extensions/scarb-snforge-test-collector/src/metadata.rs index 292274e5b..a574fd3fc 100644 --- a/extensions/scarb-snforge-test-collector/src/metadata.rs +++ b/extensions/scarb-snforge-test-collector/src/metadata.rs @@ -1,7 +1,7 @@ use anyhow::{anyhow, ensure, Context, Result}; use cairo_lang_filesystem::cfg::{Cfg, CfgSet}; use cairo_lang_filesystem::db::{ - CrateSettings, DependencySettings, Edition, ExperimentalFeaturesConfig, + CrateSettings, DependencySettings, Edition, ExperimentalFeaturesConfig, CORELIB_CRATE_NAME, }; use cairo_lang_project::AllCratesConfig; use cairo_lang_utils::ordered_hash_map::OrderedHashMap; @@ -249,7 +249,9 @@ fn get_crate_settings_for_package( .iter() .find(|package| package.name == compilation_unit_metadata_component.name) .map(|package| package.version.clone()); - + let version = (dependency.name != *CORELIB_CRATE_NAME) + .then_some(version) + .flatten(); (dependency.name.clone(), DependencySettings { version }) }) }) @@ -259,7 +261,7 @@ fn get_crate_settings_for_package( dependencies.insert( package.name.clone(), DependencySettings { - version: Some(package.version.clone()), + version: (package.name != *CORELIB_CRATE_NAME).then_some(package.version.clone()), }, ); diff --git a/scarb/src/compiler/db.rs b/scarb/src/compiler/db.rs index 196ee109a..cf9384529 100644 --- a/scarb/src/compiler/db.rs +++ b/scarb/src/compiler/db.rs @@ -6,6 +6,7 @@ use cairo_lang_defs::ids::ModuleId; use cairo_lang_defs::plugin::MacroPlugin; use cairo_lang_filesystem::db::{ AsFilesGroupMut, CrateSettings, DependencySettings, FilesGroup, FilesGroupEx, + CORELIB_CRATE_NAME, }; use cairo_lang_filesystem::ids::{CrateLongId, Directory}; use cairo_lang_utils::ordered_hash_map::OrderedHashMap; @@ -174,7 +175,9 @@ fn build_project_config(unit: &CairoCompilationUnit) -> Result { ( compilation_unit_component.package.id.name.to_string(), DependencySettings { - version: Some(compilation_unit_component.package.id.version.clone()), + version: (compilation_unit_component.package.id.name.to_string() + != *CORELIB_CRATE_NAME) + .then_some(compilation_unit_component.package.id.version.clone()), }, ) }) @@ -184,7 +187,8 @@ fn build_project_config(unit: &CairoCompilationUnit) -> Result { dependencies.insert( component.package.id.name.to_string(), DependencySettings { - version: Some(component.package.id.version.clone()), + version: (component.package.id.name.to_string() != *CORELIB_CRATE_NAME) + .then_some(component.package.id.version.clone()), }, ); From 2d1da54455a70b387857f7f1538314a8fa42d38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Tr=C4=85tnowiecki?= Date: Wed, 2 Oct 2024 13:55:33 +0200 Subject: [PATCH 3/3] Fix corelib compilation --- scarb/src/compiler/helpers.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scarb/src/compiler/helpers.rs b/scarb/src/compiler/helpers.rs index e6b1ea82e..c8e1b9d7c 100644 --- a/scarb/src/compiler/helpers.rs +++ b/scarb/src/compiler/helpers.rs @@ -8,7 +8,7 @@ use cairo_lang_compiler::db::RootDatabase; use cairo_lang_compiler::diagnostics::DiagnosticsReporter; use cairo_lang_compiler::CompilerConfig; use cairo_lang_diagnostics::{FormattedDiagnosticEntry, Severity}; -use cairo_lang_filesystem::db::FilesGroup; +use cairo_lang_filesystem::db::{FilesGroup, CORELIB_CRATE_NAME}; use cairo_lang_filesystem::ids::{CrateId, CrateLongId}; use itertools::Itertools; use serde::Serialize; @@ -93,8 +93,8 @@ pub fn collect_main_crate_ids(unit: &CairoCompilationUnit, db: &RootDatabase) -> let name = unit.main_component().cairo_package_name(); let version = unit.main_component().package.id.version.clone(); vec![db.intern_crate(CrateLongId::Real { + version: (name != CORELIB_CRATE_NAME).then_some(version), name, - version: Some(version), })] }