Skip to content

Commit

Permalink
Made crates references be looked up only on dependencies. (#6405)
Browse files Browse the repository at this point in the history
  • Loading branch information
orizi authored Sep 24, 2024
1 parent 0876e2f commit 3280677
Show file tree
Hide file tree
Showing 22 changed files with 56 additions and 58 deletions.
10 changes: 4 additions & 6 deletions crates/cairo-lang-semantic/src/resolve/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use cairo_lang_defs::ids::{
ModuleFileId, ModuleId, TraitId, TraitItemId,
};
use cairo_lang_diagnostics::Maybe;
use cairo_lang_filesystem::db::CrateSettings;
use cairo_lang_filesystem::db::{CrateSettings, CORELIB_CRATE_NAME};
use cairo_lang_filesystem::ids::{CrateId, CrateLongId};
use cairo_lang_proc_macros::DebugWithDb;
use cairo_lang_syntax as syntax;
Expand Down Expand Up @@ -993,12 +993,10 @@ impl<'db> Resolver<'db> {
return ResolvedBase::Crate(self.owning_crate_id);
}
// If the first segment is a name of a crate, use the crate's root module as the base
// module.
let crate_id = CrateLongId::Real(ident).intern(self.db);
if self.db.crate_config(crate_id).is_some() {
return ResolvedBase::Crate(crate_id);
// module. Currently `core` is always considered as a dependency.
if self.settings.dependencies.contains_key(ident.as_str()) || ident == CORELIB_CRATE_NAME {
return ResolvedBase::Crate(CrateLongId::Real(ident).intern(self.db));
}
// Last resort, use the `prelude` module as the base module.
ResolvedBase::Module(self.prelude_submodule())
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ pub mod mintable {
StoragePointerReadAccess, StoragePointerWriteAccess, StorageMapWriteAccess,
StorageMapReadAccess
};
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use ownable_comp::OwnableHelperImpl;

#[storage]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ pub mod upgradable {
use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
use starknet::ClassHash;
use starknet::syscalls::replace_class_syscall;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::ownable::ownable as ownable_comp;
use ownable_comp::OwnableHelperImpl;
#[storage]
pub struct Storage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ trait GetSupply<TContractState> {
#[starknet::contract]
mod mintable_erc20_ownable {
use starknet::ContractAddress;
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use cairo_level_tests::components::mintable::mintable as mintable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use crate::components::mintable::mintable as mintable_comp;
#[storage]
struct Storage {
#[substorage(v0)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ pub trait GetSupply<TContractState> {
#[starknet::contract]
pub mod contract_with_4_components {
use starknet::ContractAddress;
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use cairo_level_tests::components::mintable::mintable as mintable_comp;
use cairo_level_tests::components::upgradable::upgradable as upgradable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use crate::components::mintable::mintable as mintable_comp;
use crate::components::upgradable::upgradable as upgradable_comp;
#[storage]
struct Storage {
#[substorage(v0)]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#[starknet::contract]
mod ownable_erc20_contract {
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ trait ICounterContract<TContractState> {
#[starknet::contract]
mod counter_contract {
use starknet::storage::{StoragePointerWriteAccess, StoragePointerReadAccess};
use cairo_level_tests::components::upgradable::upgradable as upgradable_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::upgradable::upgradable as upgradable_comp;
use crate::components::ownable::ownable as ownable_comp;
component!(path: upgradable_comp, storage: upgradable, event: UpgradableEvent);
component!(path: ownable_comp, storage: ownable, event: OwnableEvent);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#[starknet::contract]
mod erc20_contract {
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use crate::components::erc20::erc20 as erc20_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#[starknet::contract]
mod erc20_mini_contract {
use cairo_level_tests::components::erc20_mini;
use crate::components::erc20_mini;
use starknet::ContractAddress;
use starknet::storage::{StorageTraitMut, StorageTrait};
#[storage]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#[starknet::contract]
mod ownable_balance {
use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::ownable::ownable as ownable_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#[starknet::contract]
mod ownable_mini_contract {
use cairo_level_tests::components::ownable_mini;
use crate::components::ownable_mini;
use starknet::ContractAddress;
use starknet::storage::{
StorageAsPath, StorageNode, StorageNodeMut, StoragePointerReadAccess,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use cairo_level_tests::contracts::erc20::{erc_20, IERC20LibraryDispatcher, IERC20DispatcherTrait};
use crate::contracts::erc20::{erc_20, IERC20LibraryDispatcher, IERC20DispatcherTrait};
use starknet::testing::set_caller_address;

use starknet::contract_address::contract_address_const;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use super::utils::serialized;
use cairo_level_tests::components::mintable::{MintTraitDispatcherTrait, MintTraitDispatcher};
use cairo_level_tests::contracts::multi_component::{
use crate::components::mintable::{MintTraitDispatcherTrait, MintTraitDispatcher};
use crate::contracts::multi_component::{
contract_with_4_components, GetSupplyDispatcher, GetSupplyDispatcherTrait
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ trait GetSupply<TContractState> {
#[starknet::contract]
mod mintable_erc20_ownable {
use starknet::ContractAddress;
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use cairo_level_tests::components::mintable::mintable as mintable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use crate::components::mintable::mintable as mintable_comp;
#[storage]
struct Storage {
#[substorage(v0)]
Expand Down Expand Up @@ -840,9 +840,9 @@ impl GetSupplySafeDispatcherSubPointersMutDrop of core::traits::Drop::<GetSupply
impl GetSupplySafeDispatcherSubPointersMutCopy of core::traits::Copy::<GetSupplySafeDispatcherSubPointersMut>;

use starknet::ContractAddress;
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use cairo_level_tests::components::mintable::mintable as mintable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use crate::components::mintable::mintable as mintable_comp;
#[storage]
struct Storage {
#[substorage(v0)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ pub trait GetSupply<TContractState> {
#[starknet::contract]
pub mod contract_with_4_components {
use starknet::ContractAddress;
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use cairo_level_tests::components::mintable::mintable as mintable_comp;
use cairo_level_tests::components::upgradable::upgradable as upgradable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use crate::components::mintable::mintable as mintable_comp;
use crate::components::upgradable::upgradable as upgradable_comp;
#[storage]
struct Storage {
#[substorage(v0)]
Expand Down Expand Up @@ -897,10 +897,10 @@ impl GetSupplySafeDispatcherSubPointersMutDrop of core::traits::Drop::<GetSupply
impl GetSupplySafeDispatcherSubPointersMutCopy of core::traits::Copy::<GetSupplySafeDispatcherSubPointersMut>;

use starknet::ContractAddress;
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use cairo_level_tests::components::mintable::mintable as mintable_comp;
use cairo_level_tests::components::upgradable::upgradable as upgradable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use crate::components::mintable::mintable as mintable_comp;
use crate::components::upgradable::upgradable as upgradable_comp;
#[storage]
struct Storage {
#[substorage(v0)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ cairo_level_tests/contracts/ownable_erc20.cairo
//! > generated_cairo_code
#[starknet::contract]
mod ownable_erc20_contract {
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down Expand Up @@ -309,8 +309,8 @@ impl StorageStorageBaseMutDrop of core::traits::Drop::<StorageStorageBaseMut>;
impl StorageStorageBaseMutCopy of core::traits::Copy::<StorageStorageBaseMut>;
}

use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::erc20::erc20 as erc20_comp;
use crate::components::ownable::ownable as ownable_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ trait ICounterContract<TContractState> {
#[starknet::contract]
mod counter_contract {
use starknet::storage::{StoragePointerWriteAccess, StoragePointerReadAccess};
use cairo_level_tests::components::upgradable::upgradable as upgradable_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::upgradable::upgradable as upgradable_comp;
use crate::components::ownable::ownable as ownable_comp;

#[storage]
struct Storage {
Expand Down Expand Up @@ -971,8 +971,8 @@ impl ICounterContractSafeDispatcherSubPointersMutDrop of core::traits::Drop::<IC
impl ICounterContractSafeDispatcherSubPointersMutCopy of core::traits::Copy::<ICounterContractSafeDispatcherSubPointersMut>;

use starknet::storage::{StoragePointerWriteAccess, StoragePointerReadAccess};
use cairo_level_tests::components::upgradable::upgradable as upgradable_comp;
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::upgradable::upgradable as upgradable_comp;
use crate::components::ownable::ownable as ownable_comp;

#[storage]
struct Storage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ cairo_level_tests/contracts/with_erc20.cairo
//! > generated_cairo_code
#[starknet::contract]
mod erc20_contract {
use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use crate::components::erc20::erc20 as erc20_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down Expand Up @@ -243,7 +243,7 @@ impl StorageStorageBaseMutDrop of core::traits::Drop::<StorageStorageBaseMut>;
impl StorageStorageBaseMutCopy of core::traits::Copy::<StorageStorageBaseMut>;
}

use cairo_level_tests::components::erc20::erc20 as erc20_comp;
use crate::components::erc20::erc20 as erc20_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ cairo_level_tests/contracts/with_erc20_mini.cairo
//! > generated_cairo_code
#[starknet::contract]
mod erc20_mini_contract {
use cairo_level_tests::components::erc20_mini;
use crate::components::erc20_mini;
use starknet::ContractAddress;
use starknet::storage::{StorageTraitMut, StorageTrait};
#[storage]
Expand Down Expand Up @@ -233,7 +233,7 @@ impl StorageStorageBaseMutDrop of core::traits::Drop::<StorageStorageBaseMut>;
impl StorageStorageBaseMutCopy of core::traits::Copy::<StorageStorageBaseMut>;
}

use cairo_level_tests::components::erc20_mini;
use crate::components::erc20_mini;
use starknet::ContractAddress;
use starknet::storage::{StorageTraitMut, StorageTrait};
#[storage]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ cairo_level_tests/contracts/with_ownable.cairo
#[starknet::contract]
mod ownable_balance {
use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::ownable::ownable as ownable_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down Expand Up @@ -282,7 +282,7 @@ impl StorageStorageBaseMutCopy of core::traits::Copy::<StorageStorageBaseMut>;
}

use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
use cairo_level_tests::components::ownable::ownable as ownable_comp;
use crate::components::ownable::ownable as ownable_comp;
use starknet::ContractAddress;
#[storage]
struct Storage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ cairo_level_tests/contracts/with_ownable_mini.cairo
//! > generated_cairo_code
#[starknet::contract]
mod ownable_mini_contract {
use cairo_level_tests::components::ownable_mini;
use crate::components::ownable_mini;
use starknet::ContractAddress;
use starknet::storage::{
StorageAsPath, StorageNode, StorageNodeMut, StoragePointerReadAccess,
Expand Down Expand Up @@ -255,7 +255,7 @@ impl StorageStorageBaseMutDrop of core::traits::Drop::<StorageStorageBaseMut>;
impl StorageStorageBaseMutCopy of core::traits::Copy::<StorageStorageBaseMut>;
}

use cairo_level_tests::components::ownable_mini;
use crate::components::ownable_mini;
use starknet::ContractAddress;
use starknet::storage::{
StorageAsPath, StorageNode, StorageNodeMut, StoragePointerReadAccess,
Expand Down
2 changes: 1 addition & 1 deletion examples/fib_caller.cairo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use examples::fib::fib as fib2;
use crate::fib::fib as fib2;
fn fib_caller() {
fib2(1, 1, 4);
}

0 comments on commit 3280677

Please sign in to comment.