-
Notifications
You must be signed in to change notification settings - Fork 342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
remove import console in Script.sol #104
Comments
Gm, @tonypig. There should be no issues with importing/using The only case I can think of when you would get a |
Hi @ZeroEkkusu My scenario is simple: two contract: While import console in ContractA.sol, then forge build/test will throw an DeclarationError that because forge-std/Test.sol also import the console (through Script.sol) |
@tonypig, like so? I can't reproduce the error.
import "forge-std/console.sol";
import "forge-std/console2.sol";
contract ContractA {
function f() external {
console.log("gm with console");
console2.log("gm with console2");
}
}
import "forge-std/Test.sol";
import "src/ContractA.sol";
contract ContractATest is Test {
ContractA cA;
function setUp() public {
cA = new ContractA();
}
function testExample() public {
cA.f();
console.log("test");
console2.log("test 2");
}
} |
Hi @ZeroEkkusu Sorry, I just found the real problem. that because forge is not case sensitive, and I import the console file withs "Console.sol" in ContactA.sol, then the error reproduce. Maybe it’s not a big problem, thanks for your time |
I think this still could be an issue for users who use Hardhat console in their production contracts, and use Forge Test in their test contracts. import "hardhat/console.sol";
contract MyContract {} import "forge-std/Test.sol";
import "contracts/MyContract.sol";
contract MyContractTest is Test {} Compile it will throw Is there a way to import the library so that it only affects current file and it's child-contracts, but not sibling contracts in the inheritance chain? |
@ranmocy, import import "forge-std/console.sol"; Another option is to use selective imports to import only import {MyContract} from "contracts/MyContract.sol"; |
I also cannot get foundry.toml remappings
having trouble importing in both // have tried
import "forge-std/console2.sol";
// as well as
import {console2} from "forge-std/console2.sol";
// as well as
import {Script} from "forge-std/Script.sol";
import {console2} from "forge-std/console2.sol";
import {MyContract} from "../src/MyContract.sol"; getting this error on Error (7576): Undeclared identifier. Did you mean "console"?
script/PriceOracle.s.sol:19:9: DeclarationError: Undeclared identifier. Did you mean "console"?
console2.log("initializing price oracle...");
^------^ |
I think the issue I was running into had to do with Solidity and my was able to resolve the error using |
Btw, no need to use |
Hi guys,
in the Script.sol, console and console2 were imported:
but then if I want use console.log in the contract, I need use alias like:
import {console as clg} "forge-std/console.sol"
otherwise there would be DeclarationError (because Test.sol import Script).
I don't know why the console imported in Script.sol, and Test.sol not use that.
So I wonder if it's possible to be more autonomous, Thanks for your time
The text was updated successfully, but these errors were encountered: