Hive Hive
Sign in

swiftLanguageMode adds -swift-version to OTHER_SWIFT_FLAGS, which triggers a warning in Xcode 27

GitHub issue · Open

Metadata
Source
tuist/tuist #13752
Updated
Oct 1, 2026
Details

What happened?

When a Swift package target declares .swiftLanguageMode(...), Tuist sets both SWIFT_VERSION and a -swift-version flag in OTHER_SWIFT_FLAGS. Xcode 27 warns about the flag:

language mode was overridden by extra Swift flags and may be inconsistent with code generated during the build

For example, FirebaseAuth (firebase-ios-sdk 12.19.2) declares .swiftLanguageMode(.v5). The generated project contains:

SWIFT_VERSION = 5
OTHER_SWIFT_FLAGS = "$(inherited) -swift-version 5 ..."

The flag comes from SettingsMapper.swift:

case (.swift, .swiftLanguageMode):
// TODO: Use -language-mode instead of -swift-version when Xcode 15 support is removed.
swiftFlags.append("-swift-version \(setting.value[0])")
settingsDictionary["SWIFT_VERSION"] = "\(setting.value[0])"

Expected

Only SWIFT_VERSION is set. The extra -swift-version flag isn’t needed and causes the warning.

How to reproduce

  1. Add firebase-ios-sdk 12.19.2 as an external dependency in Tuist/Package.swift and use FirebaseAuth.
  2. Run tuist install and tuist generate.
  3. Build with Xcode 27. The FirebaseAuth target shows the warning above.

Environment

  • Tuist 4.210.0
  • Xcode 27, Swift 6.4
  • macOS 27.0
Flights

Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.

New Flights are paused Configure model inference, GitHub, and a sandbox provider to start another Flight. Existing results remain available below.
No Flights yet

Start a Flight and preserve its objective, outcome, and session here.

Comments

No GitHub comments yet.