solidity/test/libsolidity/syntaxTests/experimental/inference/callgraph.sol
2023-10-02 12:01:38 +02:00

114 lines
3.6 KiB
Solidity

// fallback---------->f----------+
// | |
// | |
// | |
// | |
// v v
// g h
//
//
// add
//
// unreferenced
pragma experimental solidity;
type uint256 = __builtin("word");
instantiation uint256: + {
function add(x, y) -> uint256 {
let a = uint256.rep(x);
let b = uint256.rep(y);
assembly {
a := add(a,b)
}
return uint256.abs(a);
}
}
function unreferenced(x:uint256) -> uint256
{
return x;
}
function f(x:uint256) -> uint256
{
return g(h(x));
}
function g(x:uint256) -> uint256
{
return x;
}
function h(x:uint256) -> uint256
{
return x;
}
contract C {
fallback() external {
let a: uint256->uint256 = f;
}
}
// ====
// EVMVersion: >=constantinople
// ----
// Warning 2264: (278-307): Experimental features are turned on. Do not use experimental features on live deployments.
// Info 4164: (309-342): Inferred type: word:(type, +)
// Info 4164: (344-564): Inferred type: void
// Info 4164: (375-562): Inferred type: (word, word) -> word
// Info 4164: (387-393): Inferred type: (word, word)
// Info 4164: (388-389): Inferred type: word
// Info 4164: (391-392): Inferred type: word
// Info 4164: (397-404): Inferred type: word
// Info 4164: (419-420): Inferred type: word
// Info 4164: (423-437): Inferred type: word
// Info 4164: (423-434): Inferred type: word -> word
// Info 4164: (423-430): Inferred type: word
// Info 4164: (435-436): Inferred type: word
// Info 4164: (451-452): Inferred type: word
// Info 4164: (455-469): Inferred type: word
// Info 4164: (455-466): Inferred type: word -> word
// Info 4164: (455-462): Inferred type: word
// Info 4164: (467-468): Inferred type: word
// Info 4164: (541-555): Inferred type: word
// Info 4164: (541-552): Inferred type: word -> word
// Info 4164: (541-548): Inferred type: word
// Info 4164: (553-554): Inferred type: word
// Info 4164: (566-627): Inferred type: word -> word
// Info 4164: (587-598): Inferred type: word
// Info 4164: (588-597): Inferred type: word
// Info 4164: (590-597): Inferred type: word
// Info 4164: (602-609): Inferred type: word
// Info 4164: (623-624): Inferred type: word
// Info 4164: (629-685): Inferred type: word -> word
// Info 4164: (639-650): Inferred type: word
// Info 4164: (640-649): Inferred type: word
// Info 4164: (642-649): Inferred type: word
// Info 4164: (654-661): Inferred type: word
// Info 4164: (675-682): Inferred type: word
// Info 4164: (675-676): Inferred type: word -> word
// Info 4164: (677-681): Inferred type: word
// Info 4164: (677-678): Inferred type: word -> word
// Info 4164: (679-680): Inferred type: word
// Info 4164: (687-737): Inferred type: word -> word
// Info 4164: (697-708): Inferred type: word
// Info 4164: (698-707): Inferred type: word
// Info 4164: (700-707): Inferred type: word
// Info 4164: (712-719): Inferred type: word
// Info 4164: (733-734): Inferred type: word
// Info 4164: (739-789): Inferred type: word -> word
// Info 4164: (749-760): Inferred type: word
// Info 4164: (750-759): Inferred type: word
// Info 4164: (752-759): Inferred type: word
// Info 4164: (764-771): Inferred type: word
// Info 4164: (785-786): Inferred type: word
// Info 4164: (808-872): Inferred type: () -> ()
// Info 4164: (816-818): Inferred type: ()
// Info 4164: (842-861): Inferred type: word -> word
// Info 4164: (845-861): Inferred type: word -> word
// Info 4164: (845-852): Inferred type: word
// Info 4164: (854-861): Inferred type: word
// Info 4164: (864-865): Inferred type: word -> word