[object Object]

← back to Exo

Treat Swift/Xcode build warnings as errors (#1322)

7cc313b22a97fbdd944fb8ee724bc2591a45c30e · 2026-01-29 09:15:49 -0800 · Alex Cheema

## Motivation

Warnings that go unchecked tend to accumulate and hide real issues.
Treating them as errors ensures they are addressed immediately, both
locally during development and in CI.

## Changes

Added `SWIFT_TREAT_WARNINGS_AS_ERRORS = YES` and
`GCC_TREAT_WARNINGS_AS_ERRORS = YES` to the **project-level** Debug and
Release build configurations in `project.pbxproj`. This applies to all
targets (EXO, EXOTests, EXOUITests).

## Why It Works

Xcode's `SWIFT_TREAT_WARNINGS_AS_ERRORS` and
`GCC_TREAT_WARNINGS_AS_ERRORS` build settings promote Swift and C/ObjC
warnings to errors at compile time. Setting them at the project level
means all targets inherit the policy without needing per-target or
CI-level overrides.

## Test Plan

### Manual Testing
- Built the EXO scheme in Release configuration with `xcodebuild` — no
warning-as-error failures from Swift or C/ObjC sources.

### Automated Testing
- CI already builds with `-configuration Release`, so it will
automatically enforce warnings-as-errors via the inherited project
settings — no CI changes needed.

Files touched

Diff

commit 7cc313b22a97fbdd944fb8ee724bc2591a45c30e
Author: Alex Cheema <41707476+AlexCheema@users.noreply.github.com>
Date:   Thu Jan 29 09:15:49 2026 -0800

    Treat Swift/Xcode build warnings as errors (#1322)
    
    ## Motivation
    
    Warnings that go unchecked tend to accumulate and hide real issues.
    Treating them as errors ensures they are addressed immediately, both
    locally during development and in CI.
    
    ## Changes
    
    Added `SWIFT_TREAT_WARNINGS_AS_ERRORS = YES` and
    `GCC_TREAT_WARNINGS_AS_ERRORS = YES` to the **project-level** Debug and
    Release build configurations in `project.pbxproj`. This applies to all
    targets (EXO, EXOTests, EXOUITests).
    
    ## Why It Works
    
    Xcode's `SWIFT_TREAT_WARNINGS_AS_ERRORS` and
    `GCC_TREAT_WARNINGS_AS_ERRORS` build settings promote Swift and C/ObjC
    warnings to errors at compile time. Setting them at the project level
    means all targets inherit the policy without needing per-target or
    CI-level overrides.
    
    ## Test Plan
    
    ### Manual Testing
    - Built the EXO scheme in Release configuration with `xcodebuild` — no
    warning-as-error failures from Swift or C/ObjC sources.
    
    ### Automated Testing
    - CI already builds with `-configuration Release`, so it will
    automatically enforce warnings-as-errors via the inherited project
    settings — no CI changes needed.
---
 app/EXO/EXO.xcodeproj/project.pbxproj | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/app/EXO/EXO.xcodeproj/project.pbxproj b/app/EXO/EXO.xcodeproj/project.pbxproj
index bd593086..4427289a 100644
--- a/app/EXO/EXO.xcodeproj/project.pbxproj
+++ b/app/EXO/EXO.xcodeproj/project.pbxproj
@@ -342,6 +342,8 @@
 				SDKROOT = macosx;
 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
 			};
 			name = Debug;
 		};
@@ -397,6 +399,8 @@
 				MTL_FAST_MATH = YES;
 				SDKROOT = macosx;
 				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
 			};
 			name = Release;
 		};

← 2837225d Load pipeline layers sequentially (#1329)  ·  back to Exo  ·  Ciaran/image non streaming (#1328) a31942ce →