Skip to content

test(tester): migrate the solx-solidity MLIR semantic tests - #674

Open
PavelKopyl wants to merge 1 commit into
app-slang-inline-assemblyfrom
kpv-move-mlir-semantic-tests
Open

test(tester): migrate the solx-solidity MLIR semantic tests#674
PavelKopyl wants to merge 1 commit into
app-slang-inline-assemblyfrom
kpv-move-mlir-semantic-tests

Conversation

@PavelKopyl

@PavelKopyl PavelKopyl commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Convert the isoltest files of solx-solidity's semanticTests/mlir into solx-tester files under tests/solidity/mlir.

Tests run under the EVMLA pipeline (modes: ["E"]) per their origin, except nine files forced to via-IR because the legacy codegen cannot compile them (nested calldata-to-storage and recursive struct copies) or because they assert the IR allocator model (memory-alloc-rounding).
This also exposes the storage-emptiness check through the #storage_empty method which asserts that every storage word of every account is zero.

@PavelKopyl
PavelKopyl requested a lite review from Copilot August 24, 2026 20:13
@PavelKopyl
PavelKopyl marked this pull request as draft August 24, 2026 20:13
@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown

Coverage Summary

Crate Line Coverage Function Coverage
solx 🟡 72.7% 🔴 40.0%
solx-benchmark-converter 🔴 0.0% 🔴 0.0%
solx-codegen-evm 🟡 61.4% 🟡 62.2%
solx-compiler-downloader 🔴 0.0% 🔴 0.0%
solx-core 🟡 50.3% 🟡 62.8%
solx-dev 🔴 2.4% 🔴 3.0%
solx-evm-assembly 🟡 50.9% 🟡 54.5%
solx-solc-test-adapter 🔴 1.7% 🔴 2.1%
solx-standard-json 🟡 53.9% 🟡 57.5%
solx-tester 🔴 38.0% 🔴 35.7%
solx-utils 🟡 61.6% 🟡 60.0%
solx-yul 🟡 54.0% 🟡 60.4%
Total 🔴 36.9% 🔴 36.8%

Codecov Report | HTML Report | Workflow Run

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates era-solidity MLIR semantic tests into solx-tester and registers the new test directory.

Changes:

  • Adds 211 Solidity semantic tests with tester metadata.
  • Defines EVMLA/via-IR modes and expected execution results.
  • Registers tests/solidity/mlir with solx-tester.

Reviewed changes

Copilot reviewed 50 out of 212 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
tests/solidity/mlir/uninit-fn-ptr.sol Updated as part of this pull request.
tests/solidity/mlir/type-runtime-code.sol Updated as part of this pull request.
tests/solidity/mlir/type-name.sol Updated as part of this pull request.
tests/solidity/mlir/type-interface-id.sol Updated as part of this pull request.
tests/solidity/mlir/type-creation-code.sol Updated as part of this pull request.
tests/solidity/mlir/tx_origin.sol Updated as part of this pull request.
tests/solidity/mlir/tx_gasprice.sol Updated as part of this pull request.
tests/solidity/mlir/try.sol Updated as part of this pull request.
tests/solidity/mlir/struct-constructor.sol Updated as part of this pull request.
tests/solidity/mlir/string_concat_nested.sol Updated as part of this pull request.
tests/solidity/mlir/string_concat_empty_strings.sol Updated as part of this pull request.
tests/solidity/mlir/string_concat_empty_argument_list.sol Updated as part of this pull request.
tests/solidity/mlir/string_and_bytes.sol Updated as part of this pull request.
tests/solidity/mlir/state-var.sol Updated as part of this pull request.
tests/solidity/mlir/shift_bytes_cleanup.sol Updated as part of this pull request.
tests/solidity/mlir/send-transfer.sol Updated as part of this pull request.
tests/solidity/mlir/selector.sol Updated as part of this pull request.
tests/solidity/mlir/revert.sol Updated as part of this pull request.
tests/solidity/mlir/return-void-call.sol Updated as part of this pull request.
tests/solidity/mlir/require.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_string_member.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_return_memory.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_push_mem_arg.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_pop_clears.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_packed_copy.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_mutual.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_mapping.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_internal_recursion.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_delete_element.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_copy_mem_to_storage.sol Updated as part of this pull request.
tests/solidity/mlir/recursive_struct_copy_mem_to_storage_deep.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_uint8_partial_slot.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_uint8_alone_in_slot.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_uint72_partial_slot.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_uint72_alone_in_slot.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_uint256_element.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_with_string_member.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_with_fixed_arr_of_dyn.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_with_dyn_member.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_packed_fixed.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_packed_fields.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_nested_struct.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_fixed_arr_member.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_c_inner.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_c_dyn_fields.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_bytes_member.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_struct_all_packed.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_string_element.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_packed_fixed_arr.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_nested_dyn_array.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_nested_dyn_array_multi_elem.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_fixed_array_element.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_fixed_arr_of_struct.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_fixed_arr_of_string.sol Updated as part of this pull request.
tests/solidity/mlir/pop_clears_fixed_arr_of_dyn_arr.sol Updated as part of this pull request.
tests/solidity/mlir/override-getter.sol Updated as part of this pull request.
tests/solidity/mlir/new.sol Updated as part of this pull request.
tests/solidity/mlir/new-string-array.sol Updated as part of this pull request.
tests/solidity/mlir/msg-data.sol Updated as part of this pull request.
tests/solidity/mlir/msg_value.sol Updated as part of this pull request.
tests/solidity/mlir/msg_sig.sol Updated as part of this pull request.
tests/solidity/mlir/msg_sender.sol Updated as part of this pull request.
tests/solidity/mlir/modifier.sol Updated as part of this pull request.
tests/solidity/mlir/modifier-ref-return.sol Updated as part of this pull request.
tests/solidity/mlir/modifier-param-mutation.sol Updated as part of this pull request.
tests/solidity/mlir/modifier-multi-return-paths.sol Updated as part of this pull request.
tests/solidity/mlir/modifier-multi-result.sol Updated as part of this pull request.
tests/solidity/mlir/modifier-library-call.sol Updated as part of this pull request.
tests/solidity/mlir/modifier-arg-side-effect.sol Updated as part of this pull request.
tests/solidity/mlir/mapping-key-cleanup.sol Updated as part of this pull request.
tests/solidity/mlir/mapping_storage_string_key.sol Updated as part of this pull request.
tests/solidity/mlir/library.sol Updated as part of this pull request.
tests/solidity/mlir/library-storage-ref-abi.sol Updated as part of this pull request.
tests/solidity/mlir/library-public-internal-call.sol Updated as part of this pull request.
tests/solidity/mlir/library-2.sol Updated as part of this pull request.
tests/solidity/mlir/internal-fn-ref-cmp.sol Updated as part of this pull request.
tests/solidity/mlir/internal-fn-ptr.sol Updated as part of this pull request.
tests/solidity/mlir/interface.sol Updated as part of this pull request.
tests/solidity/mlir/inline-shifts.sol Updated as part of this pull request.
tests/solidity/mlir/inheritance.sol Updated as part of this pull request.
tests/solidity/mlir/inheritance-3.sol Updated as part of this pull request.
tests/solidity/mlir/inheritance-2.sol Updated as part of this pull request.
tests/solidity/mlir/immutable.sol Updated as part of this pull request.
tests/solidity/mlir/ignored-tuple-decl.sol Updated as part of this pull request.
tests/solidity/mlir/getter_bounds_revert.sol Updated as part of this pull request.
tests/solidity/mlir/getter_arrays.sol Updated as part of this pull request.
tests/solidity/mlir/gasleft.sol Updated as part of this pull request.
tests/solidity/mlir/free-fn-inline-asm.sol Updated as part of this pull request.
tests/solidity/mlir/free_func_ptr.sol Updated as part of this pull request.
tests/solidity/mlir/free_func_multi_callsite.sol Updated as part of this pull request.
tests/solidity/mlir/for-stepless.sol Updated as part of this pull request.
tests/solidity/mlir/fixedbytes-memory-store.sol Updated as part of this pull request.
tests/solidity/mlir/event.sol Updated as part of this pull request.
tests/solidity/mlir/error.sol Updated as part of this pull request.
tests/solidity/mlir/ecrecover-invalid.sol Updated as part of this pull request.
tests/solidity/mlir/dirty-slice-bounds.sol Updated as part of this pull request.
tests/solidity/mlir/dirty-memory-static-array.sol Updated as part of this pull request.
tests/solidity/mlir/dirty-memory-allocation-cleanup.sol Updated as part of this pull request.
tests/solidity/mlir/custom-storage-layout.sol Updated as part of this pull request.
tests/solidity/mlir/ctor.sol Updated as part of this pull request.
tests/solidity/mlir/ctor-2.sol Updated as part of this pull request.
tests/solidity/mlir/create-fail.sol Updated as part of this pull request.
tests/solidity/mlir/copy_recursive_struct_to_memory.sol Updated as part of this pull request.
tests/solidity/mlir/copy_recursive_struct_storage.sol Updated as part of this pull request.
tests/solidity/mlir/contract-cmp.sol Updated as part of this pull request.
tests/solidity/mlir/contract-cast.sol Updated as part of this pull request.
tests/solidity/mlir/code.sol Updated as part of this pull request.
tests/solidity/mlir/calldata-bytes.sol Updated as part of this pull request.
tests/solidity/mlir/calldata_struct_multi_fixed_arr.sol Updated as part of this pull request.
tests/solidity/mlir/calldata_struct_fixed_arr_member.sol Updated as part of this pull request.
tests/solidity/mlir/call-targets.sol Updated as part of this pull request.
tests/solidity/mlir/bytes_literal_from_string.sol Updated as part of this pull request.
tests/solidity/mlir/bytes_concat_nested.sol Updated as part of this pull request.
tests/solidity/mlir/bytes_concat_empty_argument_list.sol Updated as part of this pull request.
tests/solidity/mlir/bytes_concat_as_argument.sol Updated as part of this pull request.
tests/solidity/mlir/bytes_concat_3_args.sol Updated as part of this pull request.
tests/solidity/mlir/block_timestamp.sol Updated as part of this pull request.
tests/solidity/mlir/block_prevrandao.sol Updated as part of this pull request.
tests/solidity/mlir/block_number.sol Updated as part of this pull request.
tests/solidity/mlir/block_gaslimit.sol Updated as part of this pull request.
tests/solidity/mlir/block_difficulty.sol Updated as part of this pull request.
tests/solidity/mlir/block_difficulty_post_paris.sol Updated as part of this pull request.
tests/solidity/mlir/block_coinbase.sol Updated as part of this pull request.
tests/solidity/mlir/block_chainid.sol Updated as part of this pull request.
tests/solidity/mlir/block_blobbasefee.sol Updated as part of this pull request.
tests/solidity/mlir/block_basefee.sol Updated as part of this pull request.
tests/solidity/mlir/balance.sol Updated as part of this pull request.
tests/solidity/mlir/assert.sol Updated as part of this pull request.
tests/solidity/mlir/asm_local_storage_ref_slot_write.sol Updated as part of this pull request.
tests/solidity/mlir/array-decode.sol Updated as part of this pull request.
tests/solidity/mlir/array_pop_packed.sol Updated as part of this pull request.
tests/solidity/mlir/array_lit_narrow_elt.sol Updated as part of this pull request.
tests/solidity/mlir/address-literal.sol Updated as part of this pull request.
tests/solidity/mlir/abi-decode-string-tail-cleanup.sol Updated as part of this pull request.
solx-tester/src/lib.rs Updated as part of this pull request.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread tests/solidity/mlir/array_copy_packed_p1.sol Outdated
Comment thread tests/solidity/mlir/pop_clears_fixed_arr_of_string.sol
Comment thread tests/solidity/mlir/pop_clears_string_element.sol
Comment thread tests/solidity/mlir/pop_clears_struct_c_dyn_fields.sol
Comment thread tests/solidity/mlir/pop_clears_struct_with_string_member.sol
@PavelKopyl
PavelKopyl force-pushed the kpv-move-mlir-semantic-tests branch from ebb390b to 5112750 Compare August 26, 2026 14:38
Convert the isoltest files of era-solidity's semanticTests/mlir into
solx-tester files under tests/solidity/mlir.
Tests run under the EVMLA pipeline (`modes: ["E"]`) per their origin,
except nine files forced to via-IR because the legacy codegen cannot
compile them (nested calldata-to-storage and recursive struct copies)
or because they assert the IR allocator model (memory-alloc-rounding).

This also exposes the storage-emptiness check to Matter Labs tests
through the `#storage_empty` method which asserts that every storage
word of every account is zero.
@PavelKopyl
PavelKopyl changed the base branch from main to app-slang-inline-assembly August 27, 2026 14:12
@PavelKopyl
PavelKopyl force-pushed the kpv-move-mlir-semantic-tests branch from 5112750 to 9fdb02d Compare August 27, 2026 14:13
@PavelKopyl
PavelKopyl marked this pull request as ready for review August 27, 2026 14:14

@hedgar2017 hedgar2017 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I will review first thing next week.

One nit: by era-solidity do you mean solx-solidity? Let's use up-to-date names for things as I believe we've gotten rid of all Matter Labs era leftovers by now.

@PavelKopyl PavelKopyl changed the title test(tester): migrate the era-solidity MLIR semantic tests test(tester): migrate the solx-solidity MLIR semantic tests Aug 28, 2026
@PavelKopyl

Copy link
Copy Markdown
Contributor Author

Thanks! I will review first thing next week.

One nit: by era-solidity do you mean solx-solidity? Let's use up-to-date names for things as I believe we've gotten rid of all Matter Labs era leftovers by now.

Yes, I meant solx-solidity. Thanks, I've updated that. By the way, the name "Matter Labs" is still mentioned several times in the code as a test format type.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants