@@ -1071,8 +1071,6 @@ package actor BuildServerManager: QueueBasedMessageHandler {
10711071
10721072 /// Returns the build settings for the given file in the given target.
10731073 ///
1074- /// If no target is given, this always returns fallback build settings.
1075- ///
10761074 /// Only call this method if it is known that `document` is a main file. Prefer `buildSettingsInferredFromMainFile`
10771075 /// otherwise. If `document` is a header file, this will most likely return fallback settings because header files
10781076 /// don't have build settings by themselves.
@@ -1081,42 +1079,30 @@ package actor BuildServerManager: QueueBasedMessageHandler {
10811079 /// `SourceKitLSPOptions.buildSettingsTimeoutOrDefault`.
10821080 package func buildSettings(
10831081 for document: DocumentURI ,
1084- in target: BuildTargetIdentifier ? ,
1082+ in target: BuildTargetIdentifier ,
10851083 language: Language ,
10861084 fallbackAfterTimeout: Bool
10871085 ) async -> FileBuildSettings ? {
1088- if let target {
1089- let buildSettingsFromBuildServer = await orLog ( " Getting build settings " ) {
1090- if fallbackAfterTimeout {
1091- try await withTimeout ( options. buildSettingsTimeoutOrDefault) {
1092- return try await self . buildSettingsFromBuildServer ( for: document, in: target, language: language)
1093- } resultReceivedAfterTimeout: { _ in
1094- await self . filesBuildSettingsChangedDebouncer. scheduleCall ( [ document] )
1095- }
1096- } else {
1097- try await self . buildSettingsFromBuildServer ( for: document, in: target, language: language)
1086+ let buildSettingsFromBuildServer = await orLog ( " Getting build settings " ) {
1087+ if fallbackAfterTimeout {
1088+ try await withTimeout ( options. buildSettingsTimeoutOrDefault) {
1089+ return try await self . buildSettingsFromBuildServer ( for: document, in: target, language: language)
1090+ } resultReceivedAfterTimeout: { _ in
1091+ await self . filesBuildSettingsChangedDebouncer. scheduleCall ( [ document] )
10981092 }
1099- }
1100- if let buildSettingsFromBuildServer {
1101- return buildSettingsFromBuildServer
1093+ } else {
1094+ try await self . buildSettingsFromBuildServer ( for: document, in: target, language: language)
11021095 }
11031096 }
1104-
1105- guard
1106- var settings = fallbackBuildSettings (
1097+ guard let buildSettingsFromBuildServer else {
1098+ return fallbackBuildSettings (
11071099 for: document,
11081100 language: language,
11091101 options: options. fallbackBuildSystemOrDefault
11101102 )
1111- else {
1112- return nil
1113- }
1114- if buildServerAdapter == nil {
1115- // If there is no build server and we only have the fallback build server, we will never get real build settings.
1116- // Consider the build settings non-fallback.
1117- settings. isFallback = false
11181103 }
1119- return settings
1104+ return buildSettingsFromBuildServer
1105+
11201106 }
11211107
11221108 /// Try finding a source file with the same language as `document` in the same directory as `document` and patch its
@@ -1196,6 +1182,25 @@ package actor BuildServerManager: QueueBasedMessageHandler {
11961182 fallbackAfterTimeout: Bool ,
11971183 allowInferenceFromSiblingFile: Bool = true
11981184 ) async -> FileBuildSettings ? {
1185+ if buildServerAdapter == nil {
1186+ guard let language = language ?? Language ( inferredFromFileExtension: document) else {
1187+ return nil
1188+ }
1189+ guard
1190+ var settings = fallbackBuildSettings (
1191+ for: document,
1192+ language: language,
1193+ options: options. fallbackBuildSystemOrDefault
1194+ )
1195+ else {
1196+ return nil
1197+ }
1198+ // If there is no build server and we only have the fallback build server, we will never get real build settings.
1199+ // Consider the build settings non-fallback.
1200+ settings. isFallback = false
1201+ return settings
1202+ }
1203+
11991204 func mainFileAndSettings(
12001205 basedOn document: DocumentURI
12011206 ) async -> ( mainFile: DocumentURI , settings: FileBuildSettings ) ? {
@@ -1223,6 +1228,13 @@ package actor BuildServerManager: QueueBasedMessageHandler {
12231228 // settings.
12241229 return nil
12251230 }
1231+ guard let target else {
1232+ return fallbackBuildSettings (
1233+ for: document,
1234+ language: languageForFile,
1235+ options: options. fallbackBuildSystemOrDefault
1236+ )
1237+ }
12261238 return await self . buildSettings (
12271239 for: mainFile,
12281240 in: target,
0 commit comments