From 39c4ead6cb242c66abf6fc056ac9c5b66f4351aa Mon Sep 17 00:00:00 2001 From: loothero Date: Sun, 8 Mar 2026 11:41:22 -0700 Subject: [PATCH 1/2] fix: resolve compiler warnings and add CI warning detection Fix unused imports in objectives, entry_requirement, prize, and ticket_booth. Handle #[must_use] return in entry_fee mock. Intentionally leave one unused import (Fixed in math/tests.cairo) to verify CI catches warnings. Will be fixed in follow-up push. Add warning detection to both CI workflows: build and test steps now fail when source-located compiler warnings are found. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main-ci.yml | 23 +++++++++++++++---- .github/workflows/pr-ci.yml | 23 +++++++++++++++---- .../interfaces/src/minigame/objectives.cairo | 2 +- .../tests/mocks/entry_fee_mock.cairo | 2 +- .../entry_requirement_component.cairo | 6 ++--- packages/metagame/src/prize/structs.cairo | 1 - .../ticket_booth/ticket_booth_component.cairo | 2 +- 7 files changed, 43 insertions(+), 16 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 47f0f5c..0756e24 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -140,8 +140,14 @@ jobs: - name: Warm snforge plugin cache run: snforge --version - - name: Verify workspace compiles - run: scarb build --workspace + - name: Verify workspace compiles (no warnings) + run: | + scarb build --workspace 2>&1 | tee /tmp/build.log + if grep -qE '^ --> .*\.cairo:[0-9]+:[0-9]+' /tmp/build.log; then + echo "::error::Build produced compiler warnings. Fix all warnings before merging." + grep -B1 -E '^ --> .*\.cairo:[0-9]+:[0-9]+' /tmp/build.log + exit 1 + fi test: name: test (${{ matrix.module }}) @@ -284,9 +290,18 @@ jobs: - name: Run tests with coverage run: | if [ "${{ matrix.package }}" = "game_components_${{ matrix.module }}" ]; then - snforge test -p ${{ matrix.package }} --fuzzer-runs ${{ matrix.fuzzer_runs }} --coverage + snforge test -p ${{ matrix.package }} --fuzzer-runs ${{ matrix.fuzzer_runs }} --coverage 2>&1 | tee /tmp/test.log else - snforge test -p ${{ matrix.package }} "::${{ matrix.module }}::" --fuzzer-runs ${{ matrix.fuzzer_runs }} --coverage + snforge test -p ${{ matrix.package }} "::${{ matrix.module }}::" --fuzzer-runs ${{ matrix.fuzzer_runs }} --coverage 2>&1 | tee /tmp/test.log + fi + + - name: Check for compiler warnings + if: always() && steps.cache-tools.outcome != 'failure' + run: | + if [ -f /tmp/test.log ] && grep -qE '^ --> .*\.cairo:[0-9]+:[0-9]+' /tmp/test.log; then + echo "::error::Test compilation produced warnings. Fix all warnings before merging." + grep -B1 -E '^ --> .*\.cairo:[0-9]+:[0-9]+' /tmp/test.log + exit 1 fi - name: Upload coverage to Codecov diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index a5177e3..699bd76 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -362,8 +362,14 @@ jobs: - name: Warm snforge plugin cache run: snforge --version - - name: Verify workspace compiles - run: scarb build --workspace + - name: Verify workspace compiles (no warnings) + run: | + scarb build --workspace 2>&1 | tee /tmp/build.log + if grep -qE '^ --> .*\.cairo:[0-9]+:[0-9]+' /tmp/build.log; then + echo "::error::Build produced compiler warnings. Fix all warnings before merging." + grep -B1 -E '^ --> .*\.cairo:[0-9]+:[0-9]+' /tmp/build.log + exit 1 + fi test: name: test (${{ matrix.module }}) @@ -434,9 +440,18 @@ jobs: - name: Run tests with coverage run: | if [ "${{ matrix.package }}" = "game_components_${{ matrix.module }}" ]; then - snforge test -p ${{ matrix.package }} --fuzzer-runs ${{ matrix.fuzzer_runs }} --coverage + snforge test -p ${{ matrix.package }} --fuzzer-runs ${{ matrix.fuzzer_runs }} --coverage 2>&1 | tee /tmp/test.log else - snforge test -p ${{ matrix.package }} "::${{ matrix.module }}::" --fuzzer-runs ${{ matrix.fuzzer_runs }} --coverage + snforge test -p ${{ matrix.package }} "::${{ matrix.module }}::" --fuzzer-runs ${{ matrix.fuzzer_runs }} --coverage 2>&1 | tee /tmp/test.log + fi + + - name: Check for compiler warnings + if: always() && steps.cache-tools.outcome != 'failure' + run: | + if [ -f /tmp/test.log ] && grep -qE '^ --> .*\.cairo:[0-9]+:[0-9]+' /tmp/test.log; then + echo "::error::Test compilation produced warnings. Fix all warnings before merging." + grep -B1 -E '^ --> .*\.cairo:[0-9]+:[0-9]+' /tmp/test.log + exit 1 fi - name: Upload coverage to Codecov diff --git a/packages/interfaces/src/minigame/objectives.cairo b/packages/interfaces/src/minigame/objectives.cairo index dc4f127..6148833 100644 --- a/packages/interfaces/src/minigame/objectives.cairo +++ b/packages/interfaces/src/minigame/objectives.cairo @@ -1,5 +1,5 @@ // Minigame objectives extension interface -use crate::structs::minigame::{GameObjective, GameObjectiveDetails}; +use crate::structs::minigame::GameObjectiveDetails; /// SNIP-5 interface ID derived via src5_rs: XOR of extended function selectors /// - objective_exists(u32)->E((),()) diff --git a/packages/metagame/src/entry_fee/tests/mocks/entry_fee_mock.cairo b/packages/metagame/src/entry_fee/tests/mocks/entry_fee_mock.cairo index 10fe984..a1b9277 100644 --- a/packages/metagame/src/entry_fee/tests/mocks/entry_fee_mock.cairo +++ b/packages/metagame/src/entry_fee/tests/mocks/entry_fee_mock.cairo @@ -38,7 +38,7 @@ pub mod EntryFeeMock { #[external(v0)] fn set_entry_fee(ref self: ContractState, context_id: u64, entry_fee: EntryFee) { - self.entry_fee.set_entry_fee(context_id, entry_fee); + let _ = self.entry_fee.set_entry_fee(context_id, entry_fee); } #[external(v0)] diff --git a/packages/metagame/src/entry_requirement/entry_requirement_component.cairo b/packages/metagame/src/entry_requirement/entry_requirement_component.cairo index 864c43d..4d87182 100644 --- a/packages/metagame/src/entry_requirement/entry_requirement_component.cairo +++ b/packages/metagame/src/entry_requirement/entry_requirement_component.cairo @@ -10,9 +10,7 @@ pub mod EntryRequirementComponent { use core::num::traits::Zero; use game_components_interfaces::entry_requirement::{IENTRY_REQUIREMENT_ID, IEntryRequirement}; - use interfaces::entry_requirement_extension::{ - IENTRY_REQUIREMENT_EXTENSION_ID, IEntryValidatorDispatcher, IEntryValidatorDispatcherTrait, - }; + use interfaces::entry_requirement_extension::IENTRY_REQUIREMENT_EXTENSION_ID; use openzeppelin_interfaces::erc721::IERC721_ID; use openzeppelin_interfaces::introspection::{ISRC5Dispatcher, ISRC5DispatcherTrait}; use openzeppelin_introspection::src5::SRC5Component; @@ -29,7 +27,7 @@ pub mod EntryRequirementComponent { use crate::entry_requirement::store::Store; use crate::entry_requirement::structs::{ EntryRequirement, EntryRequirementMeta, EntryRequirementMetaStorePacking, - EntryRequirementType, ExtensionConfig, QualificationEntries, QualificationProof, + EntryRequirementType, QualificationEntries, QualificationProof, }; #[storage] diff --git a/packages/metagame/src/prize/structs.cairo b/packages/metagame/src/prize/structs.cairo index 30c5a24..8e3898c 100644 --- a/packages/metagame/src/prize/structs.cairo +++ b/packages/metagame/src/prize/structs.cairo @@ -280,7 +280,6 @@ pub impl CustomSharesImpl of CustomSharesTrait { #[cfg(test)] mod packed_erc20_data_tests { - use starknet::storage_access::StorePacking; use super::{PackedERC20Data, PackedERC20DataPacking}; // ------------------------------------------------------------------------- diff --git a/packages/metagame/src/ticket_booth/ticket_booth_component.cairo b/packages/metagame/src/ticket_booth/ticket_booth_component.cairo index 2d14b64..00298c5 100644 --- a/packages/metagame/src/ticket_booth/ticket_booth_component.cairo +++ b/packages/metagame/src/ticket_booth/ticket_booth_component.cairo @@ -25,7 +25,7 @@ pub mod TicketBoothComponent { StoragePointerWriteAccess, }; use starknet::{get_block_timestamp, get_caller_address}; - use crate::ticket_booth::structs::{GameExpiration, GoldenPass, GoldenPassInfo, PaymentType}; + use crate::ticket_booth::structs::{GoldenPass, PaymentType}; use crate::ticket_booth::ticket_booth; #[starknet::interface] From 09140e0681be6ccf6cf9482cba0177557eff4091 Mon Sep 17 00:00:00 2001 From: loothero Date: Sun, 8 Mar 2026 11:47:42 -0700 Subject: [PATCH 2/2] fix: remove remaining unused Fixed import in math/tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI correctly detected the intentional warning — remove it now. Co-Authored-By: Claude Opus 4.6 --- packages/utilities/src/math/tests.cairo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utilities/src/math/tests.cairo b/packages/utilities/src/math/tests.cairo index f635419..53893cf 100644 --- a/packages/utilities/src/math/tests.cairo +++ b/packages/utilities/src/math/tests.cairo @@ -1,5 +1,5 @@ use crate::math::lut; -use crate::math::types::{Fixed, FixedTrait, ONE}; +use crate::math::types::{FixedTrait, ONE}; // ============================================================================ // LUT exp2 tests - cover all 33 branches (x=0..32)