mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-02 18:23:24 +01:00
This fixes two issues:
1. The SwiftPM build system was setup without passing through whether it
should prepare or not. This meant that we lost eg. the argument to
allow compiler errors when building the AST (even though it was set
when building the modules)
2. The compiler argument adjustment to remove harmful and unnecessary
flags only applied to indexing arguments, not those passed to the AST
builds
Resolves rdar://141508656.
(cherry picked from commit ab12429651)
52 lines
1.5 KiB
Swift
52 lines
1.5 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)
|
|
import Foundation
|
|
package import LanguageServerProtocol
|
|
#else
|
|
import Foundation
|
|
import LanguageServerProtocol
|
|
#endif
|
|
|
|
extension Language {
|
|
package enum SemanticKind {
|
|
case clang
|
|
case swift
|
|
}
|
|
|
|
package var semanticKind: SemanticKind? {
|
|
switch self {
|
|
case .swift:
|
|
return .swift
|
|
case .c, .cpp, .objective_c, .objective_cpp:
|
|
return .clang
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
|
|
package init?(inferredFromFileExtension uri: DocumentURI) {
|
|
// URL.pathExtension is only set for file URLs but we want to also infer a file extension for non-file URLs like
|
|
// untitled:file.cpp
|
|
let pathExtension = uri.fileURL?.pathExtension ?? (uri.pseudoPath as NSString).pathExtension
|
|
switch pathExtension {
|
|
case "c": self = .c
|
|
case "cpp", "cc", "cxx", "hpp": self = .cpp
|
|
case "m": self = .objective_c
|
|
case "mm", "h": self = .objective_cpp
|
|
case "swift": self = .swift
|
|
default: return nil
|
|
}
|
|
}
|
|
}
|