From 0149c259bc55329b4cfe1027f48a22cbfe858a53 Mon Sep 17 00:00:00 2001 From: 766C6164 Date: Tue, 16 Aug 2022 18:09:47 -0400 Subject: [PATCH 1/2] Bugfix for ricardian contracts being generated --- .../abigen-pass/ricardian_contract_test.abi | 29 +++++++++++++++++++ .../ricardian_contract_test.clauses.md | 3 ++ .../ricardian_contract_test.contracts.md | 9 ++++++ .../abigen-pass/ricardian_contract_test.cpp | 12 ++++++++ .../abigen-pass/ricardian_contract_test.json | 10 +++++++ tools/include/eosio/abigen.hpp | 8 ++--- tools/toolchain-tester/tests.py | 3 +- 7 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 tests/toolchain/abigen-pass/ricardian_contract_test.abi create mode 100644 tests/toolchain/abigen-pass/ricardian_contract_test.clauses.md create mode 100644 tests/toolchain/abigen-pass/ricardian_contract_test.contracts.md create mode 100644 tests/toolchain/abigen-pass/ricardian_contract_test.cpp create mode 100644 tests/toolchain/abigen-pass/ricardian_contract_test.json diff --git a/tests/toolchain/abigen-pass/ricardian_contract_test.abi b/tests/toolchain/abigen-pass/ricardian_contract_test.abi new file mode 100644 index 0000000000..89e6e22efc --- /dev/null +++ b/tests/toolchain/abigen-pass/ricardian_contract_test.abi @@ -0,0 +1,29 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.2", + "types": [], + "structs": [ + { + "name": "test", + "base": "", + "fields": [] + } + ], + "actions": [ + { + "name": "test", + "type": "test", + "ricardian_contract": "---\nspec-version: 0.0.2\ntitle: test\nsummary: This method does nothing on purpose.\nicon:\n---\n\nThis test checks ricardian contract was generated succesfully." + } + ], + "tables": [], + "kv_tables": {}, + "ricardian_clauses": [ + { + "id": "Disclaimer", + "body": "This test checks ricardian contract was generated succesfully." + } + ], + "variants": [], + "action_results": [] +} \ No newline at end of file diff --git a/tests/toolchain/abigen-pass/ricardian_contract_test.clauses.md b/tests/toolchain/abigen-pass/ricardian_contract_test.clauses.md new file mode 100644 index 0000000000..53993020da --- /dev/null +++ b/tests/toolchain/abigen-pass/ricardian_contract_test.clauses.md @@ -0,0 +1,3 @@ +

Disclaimer

+ +This test checks ricardian contract was generated succesfully. \ No newline at end of file diff --git a/tests/toolchain/abigen-pass/ricardian_contract_test.contracts.md b/tests/toolchain/abigen-pass/ricardian_contract_test.contracts.md new file mode 100644 index 0000000000..16f96295f0 --- /dev/null +++ b/tests/toolchain/abigen-pass/ricardian_contract_test.contracts.md @@ -0,0 +1,9 @@ +

test

+--- +spec-version: 0.0.2 +title: test +summary: This method does nothing on purpose. +icon: +--- + +This test checks ricardian contract was generated succesfully. \ No newline at end of file diff --git a/tests/toolchain/abigen-pass/ricardian_contract_test.cpp b/tests/toolchain/abigen-pass/ricardian_contract_test.cpp new file mode 100644 index 0000000000..e4393a354d --- /dev/null +++ b/tests/toolchain/abigen-pass/ricardian_contract_test.cpp @@ -0,0 +1,12 @@ +#include + +using namespace eosio; + +class [[eosio::contract]] ricardian_contract_test : public contract { + public: + using contract::contract; + + [[eosio::action]] + void test() { + } +}; \ No newline at end of file diff --git a/tests/toolchain/abigen-pass/ricardian_contract_test.json b/tests/toolchain/abigen-pass/ricardian_contract_test.json new file mode 100644 index 0000000000..8e46bd4659 --- /dev/null +++ b/tests/toolchain/abigen-pass/ricardian_contract_test.json @@ -0,0 +1,10 @@ +{ + "tests" : [ + { + "compile_flags" : ["-R={cwd}"], + "expected" : { + "abi-file" : "ricardian_contract_test.abi" + } + } + ] +} diff --git a/tools/include/eosio/abigen.hpp b/tools/include/eosio/abigen.hpp index 3347553402..0a152fe8ca 100644 --- a/tools/include/eosio/abigen.hpp +++ b/tools/include/eosio/abigen.hpp @@ -768,8 +768,8 @@ namespace eosio { namespace cdt { virtual bool VisitCXXMethodDecl(clang::CXXMethodDecl* decl) { if (!has_added_clauses) { - ag.add_clauses(parse_clauses()); - ag.add_contracts(parse_contracts()); + ag.add_clauses(ag.parse_clauses()); + ag.add_contracts(ag.parse_contracts()); has_added_clauses = true; } @@ -784,8 +784,8 @@ namespace eosio { namespace cdt { } virtual bool VisitCXXRecordDecl(clang::CXXRecordDecl* decl) { if (!has_added_clauses) { - ag.add_clauses(parse_clauses()); - ag.add_contracts(parse_contracts()); + ag.add_clauses(ag.parse_clauses()); + ag.add_contracts(ag.parse_contracts()); has_added_clauses = true; } if ((decl->isEosioAction() || decl->isEosioTable()) && ag.is_eosio_contract(decl, ag.get_contract_name())) { diff --git a/tools/toolchain-tester/tests.py b/tools/toolchain-tester/tests.py index 9474777995..d5696e5589 100644 --- a/tools/toolchain-tester/tests.py +++ b/tools/toolchain-tester/tests.py @@ -44,6 +44,7 @@ def _run(self, cdt_cpp: str, args: List[str]): def run(self): cf = self.test_json.get("compile_flags") args = cf if cf else [] + args = [arg.replace("{cwd}", self.test_suite.directory) for arg in args] cdt_cpp = os.path.join(self.test_suite.cdt_path, "cdt-cpp") self._run(cdt_cpp, args) @@ -202,5 +203,5 @@ def _run(self, cdt_cpp, args): command.extend(args) res = subprocess.run(command, capture_output=True) self.handle_test_result(res, expected_pass=False) - + return res From 4f222d9ad99a6d1317701e70503764127fa544b4 Mon Sep 17 00:00:00 2001 From: 766C6164 Date: Tue, 16 Aug 2022 19:50:53 -0400 Subject: [PATCH 2/2] abi-=kv --- tests/toolchain/abigen-pass/ricardian_contract_test.abi | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/toolchain/abigen-pass/ricardian_contract_test.abi b/tests/toolchain/abigen-pass/ricardian_contract_test.abi index 89e6e22efc..a92cd631df 100644 --- a/tests/toolchain/abigen-pass/ricardian_contract_test.abi +++ b/tests/toolchain/abigen-pass/ricardian_contract_test.abi @@ -17,7 +17,6 @@ } ], "tables": [], - "kv_tables": {}, "ricardian_clauses": [ { "id": "Disclaimer",