mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-11-03 17:31:11 +00:00
Separate compilation and linker phases (#376)
Separate between compilation and linker phases to allow deploy time linking and back-porting era compiler changes to fix #91. Unlinked contract binaries (caused by missing libraries or missing factory dependencies in turn) are emitted as raw ELF object. Few drive by fixes: - #98 - A compiler panic on missing libraries definitions. - Fixes some incosistent type forwarding in JSON output (empty string vs. null object). - Remove the unused fallback for size optimization setting. - Remove the broken `--lvm-ir` mode. - CI workflow fixes. --------- Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com> Signed-off-by: xermicus <bigcyrill@hotmail.com> Signed-off-by: xermicus <cyrill@parity.io>
This commit is contained in:
1 parent
13faedf08a
commit
94ec34c4d5
169 files changed
+6288
-5206
No files matched your search
@@ -1,8 +1,6 @@
|
||||
//! The tests for running resolc with combined JSON option.
|
||||
|
||||
#![cfg(test)]
|
||||
|
||||
use revive_common;
|
||||
use revive_solc_json_interface::CombinedJsonInvalidSelectorMessage;
|
||||
|
||||
use crate::tests::cli::utils;
|
||||
|
||||
@@ -53,10 +51,9 @@ fn fails_with_invalid_json_argument() {
|
||||
let resolc_result = utils::execute_resolc(arguments);
|
||||
utils::assert_command_failure(&resolc_result, "Providing an invalid json argument");
|
||||
|
||||
assert!(
|
||||
resolc_result.stdout.contains("Invalid option"),
|
||||
"Expected the output to contain a specific error message."
|
||||
);
|
||||
assert!(resolc_result
|
||||
.stderr
|
||||
.contains(CombinedJsonInvalidSelectorMessage));
|
||||
|
||||
let solc_result = utils::execute_solc(arguments);
|
||||
utils::assert_equal_exit_codes(&solc_result, &resolc_result);
|
||||
@@ -73,16 +70,12 @@ fn fails_with_multiple_json_arguments() {
|
||||
let resolc_result = utils::execute_resolc(arguments);
|
||||
utils::assert_command_failure(&resolc_result, "Providing multiple json arguments");
|
||||
|
||||
assert!(
|
||||
resolc_result
|
||||
.stderr
|
||||
.contains("reading error: No such file or directory"),
|
||||
"Expected the output to contain a specific error message."
|
||||
);
|
||||
assert!(resolc_result
|
||||
.stderr
|
||||
.contains(&format!("Error: \"{}\" is not found.", JSON_ARGUMENTS[1])),);
|
||||
|
||||
// FIX: Resolc exit code == 101
|
||||
// let solc_result = utils::execute_solc(arguments);
|
||||
// utils::assert_equal_exit_codes(&solc_result, &resolc_result);
|
||||
let solc_result = utils::execute_solc(arguments);
|
||||
utils::assert_equal_exit_codes(&solc_result, &resolc_result);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -91,12 +84,9 @@ fn fails_without_json_argument() {
|
||||
let resolc_result = utils::execute_resolc(arguments);
|
||||
utils::assert_command_failure(&resolc_result, "Omitting a JSON argument");
|
||||
|
||||
assert!(
|
||||
resolc_result.stderr.contains(
|
||||
"a value is required for '--combined-json <COMBINED_JSON>' but none was supplied"
|
||||
),
|
||||
"Expected the output to contain a specific error message."
|
||||
);
|
||||
assert!(resolc_result.stderr.contains(
|
||||
"a value is required for '--combined-json <COMBINED_JSON>' but none was supplied"
|
||||
));
|
||||
|
||||
let solc_result = utils::execute_solc(arguments);
|
||||
utils::assert_equal_exit_codes(&solc_result, &resolc_result);
|
||||
@@ -108,10 +98,7 @@ fn fails_without_solidity_input_file() {
|
||||
let resolc_result = utils::execute_resolc(arguments);
|
||||
utils::assert_command_failure(&resolc_result, "Omitting a Solidity input file");
|
||||
|
||||
assert!(
|
||||
resolc_result.stderr.contains("No input sources specified"),
|
||||
"Expected the output to contain a specific error message."
|
||||
);
|
||||
assert!(resolc_result.stderr.contains("Error: No input files given"),);
|
||||
|
||||
let solc_result = utils::execute_solc(arguments);
|
||||
utils::assert_equal_exit_codes(&solc_result, &resolc_result);
|
||||
@@ -124,12 +111,9 @@ fn fails_with_yul_input_file() {
|
||||
let resolc_result = utils::execute_resolc(arguments);
|
||||
utils::assert_command_failure(&resolc_result, "Providing a Yul input file");
|
||||
|
||||
assert!(
|
||||
resolc_result
|
||||
.stderr
|
||||
.contains("ParserError: Expected identifier"),
|
||||
"Expected the output to contain a specific error message."
|
||||
);
|
||||
assert!(resolc_result
|
||||
.stderr
|
||||
.contains("Error: Expected identifier but got 'StringLiteral'"));
|
||||
|
||||
let solc_result = utils::execute_solc(arguments);
|
||||
utils::assert_equal_exit_codes(&solc_result, &resolc_result);
|
||||
|
||||
Reference in new issue
Block a user