resolc 0.3.0

Solidity frontend for the revive compiler
//! The Solidity compiler unit tests for IR artifacts.
//! The tests check if the IR artifacts are kept in the final output.

#![cfg(test)]

use std::collections::BTreeMap;

#[test]
fn yul() {
    let source_code = r#"
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Test {
    function main() public view returns (uint) {
        return 42;
    }
}
    "#;

    let mut sources = BTreeMap::new();
    sources.insert("test.sol".to_owned(), source_code.to_owned());

    let build = super::build_solidity(
        sources,
        BTreeMap::new(),
        None,
        revive_llvm_context::OptimizerSettings::cycles(),
    )
    .expect("Test failure");

    assert!(
        build
            .contracts
            .as_ref()
            .expect("Always exists")
            .get("test.sol")
            .expect("Always exists")
            .get("Test")
            .expect("Always exists")
            .ir_optimized
            .is_some(),
        "Yul IR is missing"
    );
}