Skip to content

Commit 47b079b

Browse files
committed
Don’t include SourceLoc.h when USED_IN_CPP_SOURCE is not set
1 parent f408619 commit 47b079b

File tree

6 files changed

+52
-23
lines changed

6 files changed

+52
-23
lines changed

include/swift/Basic/BasicBridging.h

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,15 @@
2222
//
2323
#include "swift/Basic/BridgedSwiftObject.h"
2424
#include "swift/Basic/Compiler.h"
25-
#include "swift/Basic/SourceLoc.h"
26-
// Workaround to avoid a compiler error because `cas::ObjectRef` is not defined
27-
// when including VirtualFileSystem.h
28-
#include "llvm/CAS/CASReference.h"
2925

3026
#include <stddef.h>
3127
#include <stdint.h>
3228
#include <vector>
3329
#ifdef USED_IN_CPP_SOURCE
30+
// Workaround to avoid a compiler error because `cas::ObjectRef` is not defined
31+
// when including VirtualFileSystem.h
3432
#include <cassert>
33+
#include "llvm/CAS/CASReference.h"
3534

3635
#include "swift/Basic/SourceLoc.h"
3736
#include "llvm/ADT/StringRef.h"
@@ -347,21 +346,26 @@ BridgedCharSourceRange_byteLength(BridgedCharSourceRange range) {
347346
// MARK: std::vector<CharSourceRange>
348347
//===----------------------------------------------------------------------===//
349348

350-
typedef std::vector<swift::CharSourceRange> CharSourceRangeVector;
349+
typedef std::vector<BridgedCharSourceRange> BridgedCharSourceRangeVector;
351350

352351
/// Create an empty `std::vector<ResolvedLoc>`.
353352
///
354353
/// - Note: This can't be imported as an initializer on
355354
/// `BridgedResolvedLocVector`
356355
/// because initializers without any arguments aren't imported to Swift
357-
SWIFT_NAME("CharSourceRangeVector.empty()")
358-
CharSourceRangeVector CharSourceRangeVector_createEmpty();
359-
360-
/// Convert the `BridgedCharSourceRange` to a `CharSourceRange` and append it
361-
/// to `vector`.
362-
SWIFT_NAME("CharSourceRangeVector.push_back(self:_:)")
363-
void CharSourceRangeVector_push_back_BridgedCharSourceRange(
364-
CharSourceRangeVector &vector, BridgedCharSourceRange range);
356+
SWIFT_NAME("BridgedCharSourceRangeVector.empty()")
357+
BridgedCharSourceRangeVector BridgedCharSourceRangeVector_createEmpty();
358+
359+
/// Append the given `BridgedCharSourceRange` to `vector`.
360+
SWIFT_NAME("BridgedCharSourceRangeVector.push_back(self:_:)")
361+
void BridgedCharSourceRangeVector_push_back_BridgedCharSourceRange(
362+
BridgedCharSourceRangeVector &vector, BridgedCharSourceRange range);
363+
364+
#ifdef USED_IN_CPP_SOURCE
365+
/// Convert the `BridgedCharSourceRange` to a `CharSourceRange`.
366+
std::vector<swift::CharSourceRange> BridgedCharSourceRangeVector_unbridged(
367+
const BridgedCharSourceRangeVector &vector);
368+
#endif
365369

366370
//===----------------------------------------------------------------------===//
367371
// MARK: Plugins

include/swift/IDE/IDEBridging.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ struct ResolvedLoc {
6767

6868
SWIFT_NAME(
6969
"init(range:labelRanges:firstTrailingLabel:labelType:isActive:context:)")
70-
ResolvedLoc(BridgedCharSourceRange range, CharSourceRangeVector labelRanges,
70+
ResolvedLoc(BridgedCharSourceRange range,
71+
BridgedCharSourceRangeVector labelRanges,
7172
unsigned firstTrailingLabel, LabelRangeType labelType,
7273
bool isActive, ResolvedLocContext context);
7374

include/swift/SILOptimizer/OptimizerBridging.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,17 @@
2424

2525
#include "swift/SILOptimizer/Analysis/BasicCalleeAnalysis.h"
2626

27+
#else // USED_IN_CPP_SOURCE
28+
29+
#error "should not include swift headers into bridging header"
30+
31+
#ifdef SWIFT_SIL_SILVALUE_H
32+
#error "should not include swift headers into bridging header"
33+
#endif
34+
#ifdef LLVM_SUPPORT_COMPILER_H
35+
#error "should not include llvm headers into bridging header"
36+
#endif
37+
2738
#endif // USED_IN_CPP_SOURCE
2839

2940
SWIFT_BEGIN_NULLABILITY_ANNOTATIONS

lib/ASTGen/Sources/SwiftIDEUtilsBridging/NameMatcherBridging.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fileprivate extension BridgedCharSourceRange {
2626
}
2727
}
2828

29-
fileprivate extension CharSourceRangeVector {
29+
fileprivate extension BridgedCharSourceRangeVector {
3030
init(from ranges: some Sequence<Range<AbsolutePosition>>, in sourceFile: ExportedSourceFile) {
3131
self = .empty()
3232
for range in ranges {
@@ -74,7 +74,7 @@ extension IDEBridging.ResolvedLoc {
7474
}
7575
self.init(
7676
range: BridgedCharSourceRange(from: resolvedLoc.baseNameRange, in: sourceFile),
77-
labelRanges: CharSourceRangeVector(from: arguments.map { $0.range }, in: sourceFile),
77+
labelRanges: BridgedCharSourceRangeVector(from: arguments.map { $0.range }, in: sourceFile),
7878
firstTrailingLabel: firstTrailingClosureIndex,
7979
labelType: LabelRangeType(resolvedLoc.arguments),
8080
isActive: resolvedLoc.isActive,

lib/Basic/BasicBridging.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,27 @@ void BridgedData_free(BridgedData data) {
6161
// MARK: std::vector<CharSourceRange>
6262
//===----------------------------------------------------------------------===//
6363

64-
CharSourceRangeVector CharSourceRangeVector_createEmpty() {
65-
return CharSourceRangeVector();
64+
BridgedCharSourceRangeVector BridgedCharSourceRangeVector_createEmpty() {
65+
return BridgedCharSourceRangeVector();
6666
}
6767

68-
void CharSourceRangeVector_push_back_BridgedCharSourceRange(
69-
CharSourceRangeVector &vector, BridgedCharSourceRange range) {
70-
vector.push_back(range.unbridged());
68+
void BridgedCharSourceRangeVector_push_back_BridgedCharSourceRange(
69+
BridgedCharSourceRangeVector &vector, BridgedCharSourceRange range) {
70+
vector.push_back(range);
7171
}
7272

73+
#ifdef USED_IN_CPP_SOURCE
74+
std::vector<swift::CharSourceRange> BridgedCharSourceRangeVector_unbridged(
75+
const BridgedCharSourceRangeVector &vector) {
76+
std::vector<swift::CharSourceRange> unbridged;
77+
unbridged.reserve(vector.size());
78+
for (auto bridgedCharSourceRange : vector) {
79+
unbridged.push_back(bridgedCharSourceRange.unbridged());
80+
}
81+
return unbridged;
82+
}
83+
#endif
84+
7385
//===----------------------------------------------------------------------===//
7486
// MARK: JSON
7587
//===----------------------------------------------------------------------===//

lib/IDE/IDEBridging.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@
1515
#include <climits>
1616

1717
ResolvedLoc::ResolvedLoc(BridgedCharSourceRange range,
18-
CharSourceRangeVector labelRanges,
18+
BridgedCharSourceRangeVector labelRanges,
1919
unsigned firstTrailingLabel, LabelRangeType labelType,
2020
bool isActive, ResolvedLocContext context)
21-
: range(range.unbridged()), labelRanges(labelRanges),
21+
: range(range.unbridged()),
22+
labelRanges(BridgedCharSourceRangeVector_unbridged(labelRanges)),
2223
firstTrailingLabel(firstTrailingLabel == UINT_MAX
2324
? llvm::None
2425
: llvm::Optional<unsigned>(firstTrailingLabel)),

0 commit comments

Comments
 (0)