mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-02 18:23:24 +01:00
On Darwin platforms, this fixes the following problem: indexstore-db by itself returns realpaths but the build system might be using standardized Darwin paths (eg. realpath is `/private/tmp` but the standardized path is `/tmp`). Because of this, when inferring the main file for a file, we might get a URI that the build system doesn’t know about. To fix this, if the realpath that indexstore-db returns could not be found in the build system's source files but the standardized path is part of the source files, use the standardized path instead.
33 lines
1.2 KiB
Swift
33 lines
1.2 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#if compiler(>=6)
|
|
package import LanguageServerProtocol
|
|
#else
|
|
import LanguageServerProtocol
|
|
#endif
|
|
|
|
/// A type that can provide the set of main files that include a particular file.
|
|
package protocol MainFilesProvider: Sendable {
|
|
/// Returns all the files that (transitively) include the header file at the given path.
|
|
///
|
|
/// If `crossLanguage` is set to `true`, Swift files that import a header through a module will also be reported.
|
|
///
|
|
/// ### Examples
|
|
///
|
|
/// ```
|
|
/// mainFilesContainingFile("foo.cpp") == Set(["foo.cpp"])
|
|
/// mainFilesContainingFile("foo.h") == Set(["foo.cpp", "bar.cpp"])
|
|
/// ```
|
|
func mainFiles(containing uri: DocumentURI, crossLanguage: Bool) async -> Set<DocumentURI>
|
|
}
|