difftreelog
feat regenerate solidity stubs
in: master
15 files changed
.maintain/scripts/compile_stub.shdiffbeforeafterboth--- a/.maintain/scripts/compile_stub.sh
+++ b/.maintain/scripts/compile_stub.sh
@@ -6,9 +6,9 @@
tmp=$(mktemp -d)
cd $tmp
cp $dir/$INPUT input.sol
-solcjs --optimize --bin input.sol
+solcjs --optimize --bin input.sol -o $PWD
mv input_sol_$(basename $OUTPUT .raw).bin out.bin
xxd -r -p out.bin out.raw
-mv out.raw $dir/$OUTPUT
\ No newline at end of file
+mv out.raw $dir/$OUTPUT
.maintain/scripts/generate_api.shdiffbeforeafterboth--- a/.maintain/scripts/generate_api.sh
+++ b/.maintain/scripts/generate_api.sh
@@ -9,4 +9,4 @@
prettier --use-tabs $raw > $formatted
solhint --fix $formatted
-mv $formatted $OUTPUT
\ No newline at end of file
+mv $formatted $OUTPUT
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -8,25 +8,26 @@
.PHONY: regenerate_solidity
regenerate_solidity:
- PACKAGE=pallet-nft NAME=eth::erc::fungible_iface OUTPUT=./tests/src/eth/api/UniqueFungible.sol ./.maintain/scripts/generate_api.sh
- PACKAGE=pallet-nft NAME=eth::erc::nft_iface OUTPUT=./tests/src/eth/api/UniqueNFT.sol ./.maintain/scripts/generate_api.sh
+ PACKAGE=pallet-fungible NAME=erc::gen_iface OUTPUT=./tests/src/eth/api/UniqueFungible.sol ./.maintain/scripts/generate_api.sh
+ PACKAGE=pallet-nonfungible NAME=erc::gen_iface OUTPUT=./tests/src/eth/api/UniqueNFT.sol ./.maintain/scripts/generate_api.sh
PACKAGE=pallet-evm-contract-helpers NAME=eth::contract_helpers_iface OUTPUT=./tests/src/eth/api/ContractHelpers.sol ./.maintain/scripts/generate_api.sh
- PACKAGE=pallet-nft NAME=eth::erc::fungible_impl OUTPUT=./pallets/nft/src/eth/stubs/UniqueFungible.sol ./.maintain/scripts/generate_api.sh
- PACKAGE=pallet-nft NAME=eth::erc::nft_impl OUTPUT=./pallets/nft/src/eth/stubs/UniqueNFT.sol ./.maintain/scripts/generate_api.sh
+ PACKAGE=pallet-fungible NAME=erc::gen_impl OUTPUT=./pallets/fungible/src/stubs/UniqueFungible.sol ./.maintain/scripts/generate_api.sh
+ PACKAGE=pallet-nonfungible NAME=erc::gen_impl OUTPUT=./pallets/nonfungible/src/stubs/UniqueNFT.sol ./.maintain/scripts/generate_api.sh
PACKAGE=pallet-evm-contract-helpers NAME=eth::contract_helpers_impl OUTPUT=./pallets/evm-contract-helpers/src/stubs/ContractHelpers.sol ./.maintain/scripts/generate_api.sh
-NFT_EVM_STUBS=./pallets/nft/src/eth/stubs
+FUNGIBLE_EVM_STUBS=./pallets/fungible/src/stubs
+NONFUNGIBLE_EVM_STUBS=./pallets/nonfungible/src/stubs
CONTRACT_HELPERS_STUBS=./pallets/evm-contract-helpers/src/stubs/
-$(NFT_EVM_STUBS)/UniqueFungible.raw: $(NFT_EVM_STUBS)/UniqueFungible.sol
+$(FUNGIBLE_EVM_STUBS)/UniqueFungible.raw: $(FUNGIBLE_EVM_STUBS)/UniqueFungible.sol
INPUT=$< OUTPUT=$@ ./.maintain/scripts/compile_stub.sh
-$(NFT_EVM_STUBS)/UniqueNFT.raw: $(NFT_EVM_STUBS)/UniqueNFT.sol
+$(NONFUNGIBLE_EVM_STUBS)/UniqueNFT.raw: $(NONFUNGIBLE_EVM_STUBS)/UniqueNFT.sol
INPUT=$< OUTPUT=$@ ./.maintain/scripts/compile_stub.sh
$(CONTRACT_HELPERS_STUBS)/ContractHelpers.raw: $(CONTRACT_HELPERS_STUBS)/ContractHelpers.sol
INPUT=$< OUTPUT=$@ ./.maintain/scripts/compile_stub.sh
-evm_stubs: $(NFT_EVM_STUBS)/UniqueFungible.raw $(NFT_EVM_STUBS)/UniqueNFT.raw $(CONTRACT_HELPERS_STUBS)/ContractHelpers.raw
+evm_stubs: $(FUNGIBLE_EVM_STUBS)/UniqueFungible.raw $(NONFUNGIBLE_EVM_STUBS)/UniqueNFT.raw $(CONTRACT_HELPERS_STUBS)/ContractHelpers.raw
.PHONY: _bench
_bench:
crates/evm-coder-macros/src/solidity_interface.rsdiffbeforeafterboth--- a/crates/evm-coder-macros/src/solidity_interface.rs
+++ b/crates/evm-coder-macros/src/solidity_interface.rs
@@ -714,9 +714,9 @@
)*),
};
if is_impl {
- tc.collect("// Common stubs holder\ncontract Dummy {\n\tuint8 dummy;\n\tstring stub_error = \"this contract is implemented in native\";\n}\ninterface ERC165 {\n\tfunction supportsInterface(bytes4 interfaceID) external view returns (bool) {\n\t\trequire(false, stub_error);\n\t\tinterfaceID;\n\t\treturn true;\n\t}\n}\n".into());
+ tc.collect("// Common stubs holder\ncontract Dummy {\n\tuint8 dummy;\n\tstring stub_error = \"this contract is implemented in native\";\n}\ncontract ERC165 is Dummy {\n\tfunction supportsInterface(bytes4 interfaceID) external view returns (bool) {\n\t\trequire(false, stub_error);\n\t\tinterfaceID;\n\t\treturn true;\n\t}\n}\n".into());
} else {
- tc.collect("// Common stubs holder\ninterface Dummy {\n}\ninterface ERC165 {\n\tfunction supportsInterface(bytes4 interfaceID) external view returns (bool);\n}\n".into());
+ tc.collect("// Common stubs holder\ninterface Dummy {\n}\ninterface ERC165 is Dummy {\n\tfunction supportsInterface(bytes4 interfaceID) external view returns (bool);\n}\n".into());
}
#(
#solidity_generators
pallets/evm-contract-helpers/src/stubs/ContractHelpers.rawdiffbeforeafterbothbinary blob — no preview
pallets/evm-contract-helpers/src/stubs/ContractHelpers.soldiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/stubs/ContractHelpers.sol
+++ b/pallets/evm-contract-helpers/src/stubs/ContractHelpers.sol
@@ -9,7 +9,19 @@
string stub_error = "this contract is implemented in native";
}
-contract ContractHelpers is Dummy {
+contract ERC165 is Dummy {
+ function supportsInterface(bytes4 interfaceID)
+ external
+ view
+ returns (bool)
+ {
+ require(false, stub_error);
+ interfaceID;
+ return true;
+ }
+}
+
+contract ContractHelpers is Dummy, ERC165 {
// Selector: contractOwner(address) 5152b14c
function contractOwner(address contractAddress)
public
pallets/fungible/Cargo.tomldiffbeforeafterboth--- a/pallets/fungible/Cargo.toml
+++ b/pallets/fungible/Cargo.toml
@@ -18,8 +18,8 @@
pallet-common = { default-features = false, path = '../common' }
nft-data-structs = { default-features = false, path = '../../primitives/nft' }
evm-coder = { default-features = false, path = '../../crates/evm-coder' }
+pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' }
ethereum = { git = "https://github.com/purestake/ethereum", branch = "joshy-scale-info", default-features = false }
-pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' }
frame-benchmarking = { default-features = false, optional = true, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.12' }
scale-info = { version = "1.0.0", default-features = false, features = [
"derive",
@@ -36,6 +36,7 @@
"pallet-common/std",
"evm-coder/std",
"ethereum/std",
+ "pallet-evm-coder-substrate/std",
'frame-benchmarking/std',
]
runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks']
pallets/fungible/src/erc.rsdiffbeforeafterboth--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -111,7 +111,7 @@
#[solidity_interface(name = "UniqueFungible", is(ERC20))]
impl<T: Config> FungibleHandle<T> {}
-generate_stubgen!(get_impl, UniqueFungibleCall, true);
+generate_stubgen!(gen_impl, UniqueFungibleCall, true);
generate_stubgen!(gen_iface, UniqueFungibleCall, false);
impl<T: Config> CommonEvmHandler for FungibleHandle<T> {
pallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterbothbinary blob — no preview
pallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -9,6 +9,18 @@
string stub_error = "this contract is implemented in native";
}
+contract ERC165 is Dummy {
+ function supportsInterface(bytes4 interfaceID)
+ external
+ view
+ returns (bool)
+ {
+ require(false, stub_error);
+ interfaceID;
+ return true;
+ }
+}
+
// Inline
contract ERC20Events {
event Transfer(address indexed from, address indexed to, uint256 value);
@@ -19,8 +31,7 @@
);
}
-// Inline
-contract InlineNameSymbol is Dummy {
+contract ERC20 is Dummy, ERC165, ERC20Events {
// Selector: name() 06fdde03
function name() public view returns (string memory) {
require(false, stub_error);
@@ -34,29 +45,14 @@
dummy;
return "";
}
-}
-// Inline
-contract InlineTotalSupply is Dummy {
// Selector: totalSupply() 18160ddd
function totalSupply() public view returns (uint256) {
require(false, stub_error);
dummy;
return 0;
}
-}
-contract ERC165 is Dummy {
- // Selector: supportsInterface(bytes4) 01ffc9a7
- function supportsInterface(uint32 interfaceId) public view returns (bool) {
- require(false, stub_error);
- interfaceId;
- dummy;
- return false;
- }
-}
-
-contract ERC20 is Dummy, InlineNameSymbol, InlineTotalSupply, ERC20Events {
// Selector: decimals() 313ce567
function decimals() public view returns (uint8) {
require(false, stub_error);
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth1// SPDX-License-Identifier: OTHER2// This code is automatically generated34pragma solidity >=0.8.0 <0.9.0;56// Anonymous struct7struct Tuple0 {8 uint256 field_0;9 string field_1;10}1112// Common stubs holder13contract Dummy {14 uint8 dummy;15 string stub_error = "this contract is implemented in native";16}1718// Inline19contract ERC721Events {20 event Transfer(21 address indexed from,22 address indexed to,23 uint256 indexed tokenId24 );25 event Approval(26 address indexed owner,27 address indexed approved,28 uint256 indexed tokenId29 );30 event ApprovalForAll(31 address indexed owner,32 address indexed operator,33 bool approved34 );35}3637// Inline38contract ERC721MintableEvents {39 event MintingFinished();40}4142// Inline43contract InlineNameSymbol is Dummy {44 // Selector: name() 06fdde0345 function name() public view returns (string memory) {46 require(false, stub_error);47 dummy;48 return "";49 }5051 // Selector: symbol() 95d89b4152 function symbol() public view returns (string memory) {53 require(false, stub_error);54 dummy;55 return "";56 }57}5859// Inline60contract InlineTotalSupply is Dummy {61 // Selector: totalSupply() 18160ddd62 function totalSupply() public view returns (uint256) {63 require(false, stub_error);64 dummy;65 return 0;66 }67}6869contract ERC165 is Dummy {70 // Selector: supportsInterface(bytes4) 01ffc9a771 function supportsInterface(uint32 interfaceId) public view returns (bool) {72 require(false, stub_error);73 interfaceId;74 dummy;75 return false;76 }77}7879contract ERC721 is Dummy, ERC165, ERC721Events {80 // Selector: balanceOf(address) 70a0823181 function balanceOf(address owner) public view returns (uint256) {82 require(false, stub_error);83 owner;84 dummy;85 return 0;86 }8788 // Selector: ownerOf(uint256) 6352211e89 function ownerOf(uint256 tokenId) public view returns (address) {90 require(false, stub_error);91 tokenId;92 dummy;93 return 0x0000000000000000000000000000000000000000;94 }9596 // Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a1167297 function safeTransferFromWithData(98 address from,99 address to,100 uint256 tokenId,101 bytes memory data102 ) public {103 require(false, stub_error);104 from;105 to;106 tokenId;107 data;108 dummy = 0;109 }110111 // Selector: safeTransferFrom(address,address,uint256) 42842e0e112 function safeTransferFrom(113 address from,114 address to,115 uint256 tokenId116 ) public {117 require(false, stub_error);118 from;119 to;120 tokenId;121 dummy = 0;122 }123124 // Selector: transferFrom(address,address,uint256) 23b872dd125 function transferFrom(126 address from,127 address to,128 uint256 tokenId129 ) public {130 require(false, stub_error);131 from;132 to;133 tokenId;134 dummy = 0;135 }136137 // Selector: approve(address,uint256) 095ea7b3138 function approve(address approved, uint256 tokenId) public {139 require(false, stub_error);140 approved;141 tokenId;142 dummy = 0;143 }144145 // Selector: setApprovalForAll(address,bool) a22cb465146 function setApprovalForAll(address operator, bool approved) public {147 require(false, stub_error);148 operator;149 approved;150 dummy = 0;151 }152153 // Selector: getApproved(uint256) 081812fc154 function getApproved(uint256 tokenId) public view returns (address) {155 require(false, stub_error);156 tokenId;157 dummy;158 return 0x0000000000000000000000000000000000000000;159 }160161 // Selector: isApprovedForAll(address,address) e985e9c5162 function isApprovedForAll(address owner, address operator)163 public164 view165 returns (address)166 {167 require(false, stub_error);168 owner;169 operator;170 dummy;171 return 0x0000000000000000000000000000000000000000;172 }173}174175contract ERC721Burnable is Dummy {176 // Selector: burn(uint256) 42966c68177 function burn(uint256 tokenId) public {178 require(false, stub_error);179 tokenId;180 dummy = 0;181 }182}183184contract ERC721Enumerable is Dummy, InlineTotalSupply {185 // Selector: tokenByIndex(uint256) 4f6ccce7186 function tokenByIndex(uint256 index) public view returns (uint256) {187 require(false, stub_error);188 index;189 dummy;190 return 0;191 }192193 // Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59194 function tokenOfOwnerByIndex(address owner, uint256 index)195 public196 view197 returns (uint256)198 {199 require(false, stub_error);200 owner;201 index;202 dummy;203 return 0;204 }205}206207contract ERC721Metadata is Dummy, InlineNameSymbol {208 // Selector: tokenURI(uint256) c87b56dd209 function tokenURI(uint256 tokenId) public view returns (string memory) {210 require(false, stub_error);211 tokenId;212 dummy;213 return "";214 }215}216217contract ERC721Mintable is Dummy, ERC721MintableEvents {218 // Selector: mintingFinished() 05d2035b219 function mintingFinished() public view returns (bool) {220 require(false, stub_error);221 dummy;222 return false;223 }224225 // Selector: mint(address,uint256) 40c10f19226 function mint(address to, uint256 tokenId) public returns (bool) {227 require(false, stub_error);228 to;229 tokenId;230 dummy = 0;231 return false;232 }233234 // Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f235 function mintWithTokenURI(236 address to,237 uint256 tokenId,238 string memory tokenUri239 ) public returns (bool) {240 require(false, stub_error);241 to;242 tokenId;243 tokenUri;244 dummy = 0;245 return false;246 }247248 // Selector: finishMinting() 7d64bcb4249 function finishMinting() public returns (bool) {250 require(false, stub_error);251 dummy = 0;252 return false;253 }254}255256contract ERC721UniqueExtensions is Dummy {257 // Selector: transfer(address,uint256) a9059cbb258 function transfer(address to, uint256 tokenId) public {259 require(false, stub_error);260 to;261 tokenId;262 dummy = 0;263 }264265 // Selector: nextTokenId() 75794a3c266 function nextTokenId() public view returns (uint256) {267 require(false, stub_error);268 dummy;269 return 0;270 }271272 // Selector: setVariableMetadata(uint256,bytes) d4eac26d273 function setVariableMetadata(uint256 tokenId, bytes memory data) public {274 require(false, stub_error);275 tokenId;276 data;277 dummy = 0;278 }279280 // Selector: getVariableMetadata(uint256) e6c5ce6f281 function getVariableMetadata(uint256 tokenId)282 public283 view284 returns (bytes memory)285 {286 require(false, stub_error);287 tokenId;288 dummy;289 return hex"";290 }291292 // Selector: mintBulk(address,uint256[]) 44a9945e293 function mintBulk(address to, uint256[] memory tokenIds)294 public295 returns (bool)296 {297 require(false, stub_error);298 to;299 tokenIds;300 dummy = 0;301 return false;302 }303304 // Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006305 function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)306 public307 returns (bool)308 {309 require(false, stub_error);310 to;311 tokens;312 dummy = 0;313 return false;314 }315}316317contract UniqueNFT is318 Dummy,319 ERC165,320 ERC721,321 ERC721Metadata,322 ERC721Enumerable,323 ERC721UniqueExtensions,324 ERC721Mintable,325 ERC721Burnable326{}1// SPDX-License-Identifier: OTHER2// This code is automatically generated34pragma solidity >=0.8.0 <0.9.0;56// Anonymous struct7struct Tuple0 {8 uint256 field_0;9 string field_1;10}1112// Common stubs holder13contract Dummy {14 uint8 dummy;15 string stub_error = "this contract is implemented in native";16}1718contract ERC165 is Dummy {19 function supportsInterface(bytes4 interfaceID)20 external21 view22 returns (bool)23 {24 require(false, stub_error);25 interfaceID;26 return true;27 }28}2930// Inline31contract ERC721Events {32 event Transfer(33 address indexed from,34 address indexed to,35 uint256 indexed tokenId36 );37 event Approval(38 address indexed owner,39 address indexed approved,40 uint256 indexed tokenId41 );42 event ApprovalForAll(43 address indexed owner,44 address indexed operator,45 bool approved46 );47}4849// Inline50contract ERC721MintableEvents {51 event MintingFinished();52}5354contract ERC721 is Dummy, ERC165, ERC721Events {55 // Selector: balanceOf(address) 70a0823156 function balanceOf(address owner) public view returns (uint256) {57 require(false, stub_error);58 owner;59 dummy;60 return 0;61 }6263 // Selector: ownerOf(uint256) 6352211e64 function ownerOf(uint256 tokenId) public view returns (address) {65 require(false, stub_error);66 tokenId;67 dummy;68 return 0x0000000000000000000000000000000000000000;69 }7071 // Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a1167272 function safeTransferFromWithData(73 address from,74 address to,75 uint256 tokenId,76 bytes memory data77 ) public {78 require(false, stub_error);79 from;80 to;81 tokenId;82 data;83 dummy = 0;84 }8586 // Selector: safeTransferFrom(address,address,uint256) 42842e0e87 function safeTransferFrom(88 address from,89 address to,90 uint256 tokenId91 ) public {92 require(false, stub_error);93 from;94 to;95 tokenId;96 dummy = 0;97 }9899 // Selector: transferFrom(address,address,uint256) 23b872dd100 function transferFrom(101 address from,102 address to,103 uint256 tokenId104 ) public {105 require(false, stub_error);106 from;107 to;108 tokenId;109 dummy = 0;110 }111112 // Selector: approve(address,uint256) 095ea7b3113 function approve(address approved, uint256 tokenId) public {114 require(false, stub_error);115 approved;116 tokenId;117 dummy = 0;118 }119120 // Selector: setApprovalForAll(address,bool) a22cb465121 function setApprovalForAll(address operator, bool approved) public {122 require(false, stub_error);123 operator;124 approved;125 dummy = 0;126 }127128 // Selector: getApproved(uint256) 081812fc129 function getApproved(uint256 tokenId) public view returns (address) {130 require(false, stub_error);131 tokenId;132 dummy;133 return 0x0000000000000000000000000000000000000000;134 }135136 // Selector: isApprovedForAll(address,address) e985e9c5137 function isApprovedForAll(address owner, address operator)138 public139 view140 returns (address)141 {142 require(false, stub_error);143 owner;144 operator;145 dummy;146 return 0x0000000000000000000000000000000000000000;147 }148}149150contract ERC721Burnable is Dummy, ERC165 {151 // Selector: burn(uint256) 42966c68152 function burn(uint256 tokenId) public {153 require(false, stub_error);154 tokenId;155 dummy = 0;156 }157}158159contract ERC721Enumerable is Dummy, ERC165 {160 // Selector: tokenByIndex(uint256) 4f6ccce7161 function tokenByIndex(uint256 index) public view returns (uint256) {162 require(false, stub_error);163 index;164 dummy;165 return 0;166 }167168 // Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59169 function tokenOfOwnerByIndex(address owner, uint256 index)170 public171 view172 returns (uint256)173 {174 require(false, stub_error);175 owner;176 index;177 dummy;178 return 0;179 }180181 // Selector: totalSupply() 18160ddd182 function totalSupply() public view returns (uint256) {183 require(false, stub_error);184 dummy;185 return 0;186 }187}188189contract ERC721Metadata is Dummy, ERC165 {190 // Selector: name() 06fdde03191 function name() public view returns (string memory) {192 require(false, stub_error);193 dummy;194 return "";195 }196197 // Selector: symbol() 95d89b41198 function symbol() public view returns (string memory) {199 require(false, stub_error);200 dummy;201 return "";202 }203204 // Selector: tokenURI(uint256) c87b56dd205 function tokenURI(uint256 tokenId) public view returns (string memory) {206 require(false, stub_error);207 tokenId;208 dummy;209 return "";210 }211}212213contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {214 // Selector: mintingFinished() 05d2035b215 function mintingFinished() public view returns (bool) {216 require(false, stub_error);217 dummy;218 return false;219 }220221 // Selector: mint(address,uint256) 40c10f19222 function mint(address to, uint256 tokenId) public returns (bool) {223 require(false, stub_error);224 to;225 tokenId;226 dummy = 0;227 return false;228 }229230 // Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f231 function mintWithTokenURI(232 address to,233 uint256 tokenId,234 string memory tokenUri235 ) public returns (bool) {236 require(false, stub_error);237 to;238 tokenId;239 tokenUri;240 dummy = 0;241 return false;242 }243244 // Selector: finishMinting() 7d64bcb4245 function finishMinting() public returns (bool) {246 require(false, stub_error);247 dummy = 0;248 return false;249 }250}251252contract ERC721UniqueExtensions is Dummy, ERC165 {253 // Selector: transfer(address,uint256) a9059cbb254 function transfer(address to, uint256 tokenId) public {255 require(false, stub_error);256 to;257 tokenId;258 dummy = 0;259 }260261 // Selector: burnFrom(address,uint256) 79cc6790262 function burnFrom(address from, uint256 tokenId) public {263 require(false, stub_error);264 from;265 tokenId;266 dummy = 0;267 }268269 // Selector: nextTokenId() 75794a3c270 function nextTokenId() public view returns (uint256) {271 require(false, stub_error);272 dummy;273 return 0;274 }275276 // Selector: setVariableMetadata(uint256,bytes) d4eac26d277 function setVariableMetadata(uint256 tokenId, bytes memory data) public {278 require(false, stub_error);279 tokenId;280 data;281 dummy = 0;282 }283284 // Selector: getVariableMetadata(uint256) e6c5ce6f285 function getVariableMetadata(uint256 tokenId)286 public287 view288 returns (bytes memory)289 {290 require(false, stub_error);291 tokenId;292 dummy;293 return hex"";294 }295296 // Selector: mintBulk(address,uint256[]) 44a9945e297 function mintBulk(address to, uint256[] memory tokenIds)298 public299 returns (bool)300 {301 require(false, stub_error);302 to;303 tokenIds;304 dummy = 0;305 return false;306 }307308 // Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006309 function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)310 public311 returns (bool)312 {313 require(false, stub_error);314 to;315 tokens;316 dummy = 0;317 return false;318 }319}320321contract UniqueNFT is322 Dummy,323 ERC165,324 ERC721,325 ERC721Metadata,326 ERC721Enumerable,327 ERC721UniqueExtensions,328 ERC721Mintable,329 ERC721Burnable330{}tests/src/eth/api/ContractHelpers.soldiffbeforeafterboth--- a/tests/src/eth/api/ContractHelpers.sol
+++ b/tests/src/eth/api/ContractHelpers.sol
@@ -8,7 +8,11 @@
}
-interface ContractHelpers is Dummy {
+interface ERC165 is Dummy {
+ function supportsInterface(bytes4 interfaceID) external view returns (bool);
+}
+
+interface ContractHelpers is Dummy, ERC165 {
// Selector: contractOwner(address) 5152b14c
function contractOwner(address contractAddress)
external
tests/src/eth/api/UniqueFungible.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -8,6 +8,10 @@
}
+interface ERC165 is Dummy {
+ function supportsInterface(bytes4 interfaceID) external view returns (bool);
+}
+
// Inline
interface ERC20Events {
event Transfer(address indexed from, address indexed to, uint256 value);
@@ -18,27 +22,16 @@
);
}
-// Inline
-interface InlineNameSymbol is Dummy {
+interface ERC20 is Dummy, ERC165, ERC20Events {
// Selector: name() 06fdde03
function name() external view returns (string memory);
// Selector: symbol() 95d89b41
function symbol() external view returns (string memory);
-}
-// Inline
-interface InlineTotalSupply is Dummy {
// Selector: totalSupply() 18160ddd
function totalSupply() external view returns (uint256);
-}
-
-interface ERC165 is Dummy {
- // Selector: supportsInterface(bytes4) 01ffc9a7
- function supportsInterface(uint32 interfaceId) external view returns (bool);
-}
-interface ERC20 is Dummy, InlineNameSymbol, InlineTotalSupply, ERC20Events {
// Selector: decimals() 313ce567
function decimals() external view returns (uint8);
tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -14,6 +14,10 @@
}
+interface ERC165 is Dummy {
+ function supportsInterface(bytes4 interfaceID) external view returns (bool);
+}
+
// Inline
interface ERC721Events {
event Transfer(
@@ -36,26 +40,6 @@
// Inline
interface ERC721MintableEvents {
event MintingFinished();
-}
-
-// Inline
-interface InlineNameSymbol is Dummy {
- // Selector: name() 06fdde03
- function name() external view returns (string memory);
-
- // Selector: symbol() 95d89b41
- function symbol() external view returns (string memory);
-}
-
-// Inline
-interface InlineTotalSupply is Dummy {
- // Selector: totalSupply() 18160ddd
- function totalSupply() external view returns (uint256);
-}
-
-interface ERC165 is Dummy {
- // Selector: supportsInterface(bytes4) 01ffc9a7
- function supportsInterface(uint32 interfaceId) external view returns (bool);
}
interface ERC721 is Dummy, ERC165, ERC721Events {
@@ -103,12 +87,12 @@
returns (address);
}
-interface ERC721Burnable is Dummy {
+interface ERC721Burnable is Dummy, ERC165 {
// Selector: burn(uint256) 42966c68
function burn(uint256 tokenId) external;
}
-interface ERC721Enumerable is Dummy, InlineTotalSupply {
+interface ERC721Enumerable is Dummy, ERC165 {
// Selector: tokenByIndex(uint256) 4f6ccce7
function tokenByIndex(uint256 index) external view returns (uint256);
@@ -117,14 +101,23 @@
external
view
returns (uint256);
+
+ // Selector: totalSupply() 18160ddd
+ function totalSupply() external view returns (uint256);
}
-interface ERC721Metadata is Dummy, InlineNameSymbol {
+interface ERC721Metadata is Dummy, ERC165 {
+ // Selector: name() 06fdde03
+ function name() external view returns (string memory);
+
+ // Selector: symbol() 95d89b41
+ function symbol() external view returns (string memory);
+
// Selector: tokenURI(uint256) c87b56dd
function tokenURI(uint256 tokenId) external view returns (string memory);
}
-interface ERC721Mintable is Dummy, ERC721MintableEvents {
+interface ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {
// Selector: mintingFinished() 05d2035b
function mintingFinished() external view returns (bool);
@@ -142,10 +135,13 @@
function finishMinting() external returns (bool);
}
-interface ERC721UniqueExtensions is Dummy {
+interface ERC721UniqueExtensions is Dummy, ERC165 {
// Selector: transfer(address,uint256) a9059cbb
function transfer(address to, uint256 tokenId) external;
+ // Selector: burnFrom(address,uint256) 79cc6790
+ function burnFrom(address from, uint256 tokenId) external;
+
// Selector: nextTokenId() 75794a3c
function nextTokenId() external view returns (uint256);