Home / Notes

公開日
最終確認日

Xcode 27 「The compiler is unable to type-check this expression in reasonable time」のエラーを解消する(2026年8月)

Xcode 27以前はビルドできていた箇所だが、Xcode 27にアップデート後は実行エラーが出るようになった。

環境

  • Xcode 27.0 Beta
  • macOS 27.0 Beta

エラー内容

The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions

原因

SwiftUIの1つの式が複雑すぎて、型推論を時間内に終えられないことが原因。

SwiftUIをしていると稀によく出会うエラーだが、Xcode 27にアップデートすることで今まで出ていなかった箇所で発生するようになった。

調査

次のような View で発生。Group を書かないと View の中で switch 文が書けなかった時代。

var body: some View {
	HStack(alignment: .top, spacing: 0) {
		HogeView(viewModel: hogeViewModel)

		Divider()
			.background(Color(.white))

		Group {
			switch contentType { 
			case .hoge: 
				HogeView()
			case .fuga:
				 FugaView()
			default:
				fatalError("正しいタイプを設定してください")
			 }
		}
	}
	.background(Color(.gray))
}

まずは切り出してみる。

var body: some View {
	HStack(alignment: .top, spacing: 0) {
		HogeView(viewModel: hogeViewModel)

		Divider()
			.background(Color(.white))

		contentView()
	}
	.background(Color(.gray))
}

@ViewBuilder
private func contentView() -> some View {
	switch hogeType { 
	case .hoge: 
		HogeView()
	case .fuga:
		 FugaView()
	default:
		fatalError("正しいタイプを設定してください")
	 }
}

これでもエラーは消えず。

AIに聞いてみたら @ViewBuilderfatalError の組み合わせが怪しいとのこと。次のように修正する。

@ViewBuilder
private func contentView() -> some View {
	switch hogeType { 
	case .hoge: 
		 HogeView()
	case .fuga:
		 FugaView()
	default:
		 EmptyView()
	 }
}

これでエラーは出なくなった。

原因

@ViewBuilder の分岐内に fatalError() があり、View ではなく Never を返す経路が存在していたため。

おわりに

ほぼはじめてのSwiftUIプロジェクトのコードなので許してクレメンス

© 2015 うるおいらんど
とじる