@@ -1392,7 +1392,8 @@ class CursorRangeInfoConsumer : public SwiftASTConsumer {
1392
1392
protected:
1393
1393
SwiftLangSupport ⟪
1394
1394
SwiftInvocationRef ASTInvok;
1395
- std::string InputFile;
1395
+ std::string PrimaryFilePath;
1396
+ std::string InputBufferName;
1396
1397
unsigned Offset;
1397
1398
unsigned Length;
1398
1399
@@ -1408,11 +1409,13 @@ class CursorRangeInfoConsumer : public SwiftASTConsumer {
1408
1409
}
1409
1410
1410
1411
public:
1411
- CursorRangeInfoConsumer (StringRef InputFile, unsigned Offset, unsigned Length,
1412
+ CursorRangeInfoConsumer (StringRef PrimaryFilePath, StringRef InputBufferName,
1413
+ unsigned Offset, unsigned Length,
1412
1414
SwiftLangSupport &Lang, SwiftInvocationRef ASTInvok,
1413
1415
bool TryExistingAST, bool CancelOnSubsequentRequest)
1414
- : Lang(Lang), ASTInvok(ASTInvok), InputFile(InputFile.str()),
1415
- Offset (Offset), Length(Length), TryExistingAST(TryExistingAST),
1416
+ : Lang(Lang), ASTInvok(ASTInvok), PrimaryFilePath(PrimaryFilePath.str()),
1417
+ InputBufferName (InputBufferName.str()), Offset(Offset), Length(Length),
1418
+ TryExistingAST(TryExistingAST),
1416
1419
CancelOnSubsequentRequest(CancelOnSubsequentRequest) {}
1417
1420
1418
1421
bool canUseASTWithSnapshots (ArrayRef<ImmutableTextSnapshotRef> Snapshots) override {
@@ -1429,7 +1432,7 @@ class CursorRangeInfoConsumer : public SwiftASTConsumer {
1429
1432
1430
1433
ImmutableTextSnapshotRef InputSnap;
1431
1434
if (auto EditorDoc = Lang.getEditorDocuments ()->findByPath (
1432
- InputFile , /* IsRealpath=*/ true ))
1435
+ PrimaryFilePath , /* IsRealpath=*/ true ))
1433
1436
InputSnap = EditorDoc->getLatestSnapshot ();
1434
1437
if (!InputSnap)
1435
1438
return false ;
@@ -1498,8 +1501,8 @@ static SourceFile *retrieveInputFile(StringRef inputBufferName,
1498
1501
}
1499
1502
1500
1503
static void resolveCursor (
1501
- SwiftLangSupport &Lang, StringRef InputFile, unsigned Offset ,
1502
- unsigned Length, bool Actionables, bool SymbolGraph,
1504
+ SwiftLangSupport &Lang, StringRef PrimaryFile, StringRef InputBufferName ,
1505
+ unsigned Offset, unsigned Length, bool Actionables, bool SymbolGraph,
1503
1506
SwiftInvocationRef Invok, bool TryExistingAST,
1504
1507
bool CancelOnSubsequentRequest,
1505
1508
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> fileSystem,
@@ -1516,20 +1519,22 @@ static void resolveCursor(
1516
1519
1517
1520
public:
1518
1521
CursorInfoConsumer (
1519
- StringRef InputFile, unsigned Offset, unsigned Length, bool Actionables,
1520
- bool SymbolGraph, SwiftLangSupport &Lang, SwiftInvocationRef ASTInvok,
1522
+ StringRef PrimaryFile, StringRef InputBufferName, unsigned Offset,
1523
+ unsigned Length, bool Actionables, bool SymbolGraph,
1524
+ SwiftLangSupport &Lang, SwiftInvocationRef ASTInvok,
1521
1525
bool TryExistingAST, bool CancelOnSubsequentRequest,
1522
1526
SourceKitCancellationToken CancellationToken,
1523
1527
std::function<void (const RequestResult<CursorInfoData> &)> Receiver)
1524
- : CursorRangeInfoConsumer(InputFile, Offset, Length, Lang, ASTInvok,
1525
- TryExistingAST, CancelOnSubsequentRequest),
1528
+ : CursorRangeInfoConsumer(PrimaryFile, InputBufferName, Offset, Length,
1529
+ Lang, ASTInvok, TryExistingAST,
1530
+ CancelOnSubsequentRequest),
1526
1531
Actionables (Actionables), SymbolGraph(SymbolGraph),
1527
1532
CancellationToken(CancellationToken), Receiver(std::move(Receiver)) {}
1528
1533
1529
1534
void handlePrimaryAST (ASTUnitRef AstUnit) override {
1530
1535
auto &CompIns = AstUnit->getCompilerInstance ();
1531
1536
1532
- SourceFile *SF = retrieveInputFile (InputFile , CompIns);
1537
+ SourceFile *SF = retrieveInputFile (InputBufferName , CompIns);
1533
1538
if (!SF) {
1534
1539
Receiver (RequestResult<CursorInfoData>::fromError (
1535
1540
" Unable to find input file" ));
@@ -1608,10 +1613,10 @@ static void resolveCursor(
1608
1613
if (!Success) {
1609
1614
if (!getPreviousASTSnaps ().empty ()) {
1610
1615
// Attempt again using the up-to-date AST.
1611
- resolveCursor (Lang, InputFile, Offset, Length, Actionables ,
1612
- SymbolGraph, ASTInvok, /* TryExistingAST= */ false ,
1613
- CancelOnSubsequentRequest, SM. getFileSystem () ,
1614
- CancellationToken, Receiver);
1616
+ resolveCursor (Lang, PrimaryFilePath, InputBufferName, Offset ,
1617
+ Length, Actionables, SymbolGraph, ASTInvok ,
1618
+ /* TryExistingAST= */ false , CancelOnSubsequentRequest ,
1619
+ SM. getFileSystem (), CancellationToken, Receiver);
1615
1620
} else {
1616
1621
CursorInfoData Info;
1617
1622
Info.InternalDiagnostic = Diagnostic;
@@ -1662,8 +1667,9 @@ static void resolveCursor(
1662
1667
};
1663
1668
1664
1669
auto Consumer = std::make_shared<CursorInfoConsumer>(
1665
- InputFile, Offset, Length, Actionables, SymbolGraph, Lang, Invok,
1666
- TryExistingAST, CancelOnSubsequentRequest, CancellationToken, Receiver);
1670
+ PrimaryFile, InputBufferName, Offset, Length, Actionables, SymbolGraph,
1671
+ Lang, Invok, TryExistingAST, CancelOnSubsequentRequest, CancellationToken,
1672
+ Receiver);
1667
1673
1668
1674
// / FIXME: When request cancellation is implemented and Xcode adopts it,
1669
1675
// / don't use 'OncePerASTToken'.
@@ -1710,8 +1716,9 @@ static void computeDiagnostics(
1710
1716
}
1711
1717
1712
1718
static void resolveName (
1713
- SwiftLangSupport &Lang, StringRef InputFile, unsigned Offset,
1714
- SwiftInvocationRef Invok, bool TryExistingAST, NameTranslatingInfo &Input,
1719
+ SwiftLangSupport &Lang, StringRef PrimaryFilePath,
1720
+ StringRef InputBufferName, unsigned Offset, SwiftInvocationRef Invok,
1721
+ bool TryExistingAST, NameTranslatingInfo &Input,
1715
1722
SourceKitCancellationToken CancellationToken,
1716
1723
std::function<void (const RequestResult<NameTranslatingInfo> &)> Receiver) {
1717
1724
assert (Invok);
@@ -1723,21 +1730,22 @@ static void resolveName(
1723
1730
1724
1731
public:
1725
1732
NameInfoConsumer (
1726
- StringRef InputFile, unsigned Offset, SwiftLangSupport &Lang,
1727
- SwiftInvocationRef ASTInvok, bool TryExistingAST,
1728
- NameTranslatingInfo Input, SourceKitCancellationToken CancellationToken,
1733
+ StringRef PrimaryFilePath, StringRef InputBufferName, unsigned Offset,
1734
+ SwiftLangSupport &Lang, SwiftInvocationRef ASTInvok,
1735
+ bool TryExistingAST, NameTranslatingInfo Input,
1736
+ SourceKitCancellationToken CancellationToken,
1729
1737
std::function<void (const RequestResult<NameTranslatingInfo> &)>
1730
1738
Receiver)
1731
- : CursorRangeInfoConsumer(InputFile, Offset, 0 , Lang, ASTInvok ,
1732
- TryExistingAST,
1739
+ : CursorRangeInfoConsumer(PrimaryFilePath, InputBufferName, Offset, 0 ,
1740
+ Lang, ASTInvok, TryExistingAST,
1733
1741
/* CancelOnSubsequentRequest=*/ false ),
1734
1742
Input (std::move(Input)), CancellationToken(CancellationToken),
1735
1743
Receiver(std::move(Receiver)) {}
1736
1744
1737
1745
void handlePrimaryAST (ASTUnitRef AstUnit) override {
1738
1746
auto &CompIns = AstUnit->getCompilerInstance ();
1739
1747
1740
- SourceFile *SF = retrieveInputFile (InputFile , CompIns);
1748
+ SourceFile *SF = retrieveInputFile (InputBufferName , CompIns);
1741
1749
if (!SF) {
1742
1750
Receiver (RequestResult<NameTranslatingInfo>::fromError (
1743
1751
" Unable to find input file" ));
@@ -1778,9 +1786,9 @@ static void resolveName(
1778
1786
if (!Success) {
1779
1787
if (!getPreviousASTSnaps ().empty ()) {
1780
1788
// Attempt again using the up-to-date AST.
1781
- resolveName (Lang, InputFile, Offset, ASTInvok,
1782
- /* TryExistingAST= */ false , Input, CancellationToken ,
1783
- Receiver);
1789
+ resolveName (
1790
+ Lang, PrimaryFilePath, InputBufferName, Offset, ASTInvok ,
1791
+ /* TryExistingAST= */ false , Input, CancellationToken, Receiver);
1784
1792
} else {
1785
1793
NameTranslatingInfo Info;
1786
1794
Info.InternalDiagnostic = Diagnostic;
@@ -1813,17 +1821,18 @@ static void resolveName(
1813
1821
};
1814
1822
1815
1823
auto Consumer = std::make_shared<NameInfoConsumer>(
1816
- InputFile, Offset, Lang, Invok, TryExistingAST, Input, CancellationToken ,
1817
- Receiver);
1824
+ PrimaryFilePath, InputBufferName, Offset, Lang, Invok, TryExistingAST,
1825
+ Input, CancellationToken, Receiver);
1818
1826
1819
1827
Lang.getASTManager()->processASTAsync (
1820
1828
Invok, std::move(Consumer), /* OncePerASTToken=*/ nullptr,
1821
1829
CancellationToken, llvm::vfs::getRealFileSystem());
1822
1830
}
1823
1831
1824
1832
static void
1825
- resolveRange (SwiftLangSupport &Lang, StringRef InputFile, unsigned Offset,
1826
- unsigned Length, SwiftInvocationRef Invok, bool TryExistingAST,
1833
+ resolveRange (SwiftLangSupport &Lang, StringRef PrimaryFilePath,
1834
+ StringRef InputBufferName, unsigned Offset, unsigned Length,
1835
+ SwiftInvocationRef Invok, bool TryExistingAST,
1827
1836
bool CancelOnSubsequentRequest,
1828
1837
SourceKitCancellationToken CancellationToken,
1829
1838
std::function<void (const RequestResult<RangeInfo> &)> Receiver) {
@@ -1835,20 +1844,21 @@ resolveRange(SwiftLangSupport &Lang, StringRef InputFile, unsigned Offset,
1835
1844
1836
1845
public:
1837
1846
RangeInfoConsumer (
1838
- StringRef InputFile, unsigned Offset , unsigned Length ,
1839
- SwiftLangSupport &Lang, SwiftInvocationRef ASTInvok,
1847
+ StringRef PrimaryFilePath, StringRef InputBufferName , unsigned Offset ,
1848
+ unsigned Length, SwiftLangSupport &Lang, SwiftInvocationRef ASTInvok,
1840
1849
bool TryExistingAST, bool CancelOnSubsequentRequest,
1841
1850
SourceKitCancellationToken CancellationToken,
1842
1851
std::function<void (const RequestResult<RangeInfo> &)> Receiver)
1843
- : CursorRangeInfoConsumer(InputFile, Offset, Length, Lang, ASTInvok,
1844
- TryExistingAST, CancelOnSubsequentRequest),
1852
+ : CursorRangeInfoConsumer(PrimaryFilePath, InputBufferName, Offset,
1853
+ Length, Lang, ASTInvok, TryExistingAST,
1854
+ CancelOnSubsequentRequest),
1845
1855
CancellationToken (CancellationToken), Receiver(std::move(Receiver)) {}
1846
1856
1847
1857
void handlePrimaryAST (ASTUnitRef AstUnit) override {
1848
1858
// FIXME: Implement tracing
1849
1859
auto &CompIns = AstUnit->getCompilerInstance ();
1850
1860
1851
- SourceFile *SF = retrieveInputFile (InputFile , CompIns);
1861
+ SourceFile *SF = retrieveInputFile (InputBufferName , CompIns);
1852
1862
if (!SF) {
1853
1863
Receiver (
1854
1864
RequestResult<RangeInfo>::fromError (" Unable to find input file" ));
@@ -1892,7 +1902,8 @@ resolveRange(SwiftLangSupport &Lang, StringRef InputFile, unsigned Offset,
1892
1902
case RangeKind::Invalid:
1893
1903
if (!getPreviousASTSnaps ().empty ()) {
1894
1904
// Attempt again using the up-to-date AST.
1895
- resolveRange (Lang, InputFile, Offset, Length, ASTInvok,
1905
+ resolveRange (Lang, PrimaryFilePath, InputBufferName, Offset, Length,
1906
+ ASTInvok,
1896
1907
/* TryExistingAST=*/ false , CancelOnSubsequentRequest,
1897
1908
CancellationToken, Receiver);
1898
1909
} else {
@@ -1913,8 +1924,8 @@ resolveRange(SwiftLangSupport &Lang, StringRef InputFile, unsigned Offset,
1913
1924
};
1914
1925
1915
1926
auto Consumer = std::make_shared<RangeInfoConsumer>(
1916
- InputFile, Offset, Length, Lang, Invok, TryExistingAST ,
1917
- CancelOnSubsequentRequest, CancellationToken, Receiver);
1927
+ PrimaryFilePath, InputBufferName, Offset, Length, Lang, Invok,
1928
+ TryExistingAST, CancelOnSubsequentRequest, CancellationToken, Receiver);
1918
1929
// / FIXME: When request cancellation is implemented and Xcode adopts it,
1919
1930
// / don't use 'OncePerASTToken'.
1920
1931
static const char OncePerASTToken = 0 ;
@@ -2097,8 +2108,8 @@ void SwiftLangSupport::getCursorInfo(
2097
2108
}
2098
2109
};
2099
2110
2100
- resolveCursor (*this , InputBufferName, Offset, Length, Actionables ,
2101
- SymbolGraph, Invok, /* TryExistingAST=*/ true ,
2111
+ resolveCursor (*this , PrimaryFilePath, InputBufferName, Offset, Length,
2112
+ Actionables, SymbolGraph, Invok, /* TryExistingAST=*/ true ,
2102
2113
CancelOnSubsequentRequest, fileSystem, CancellationToken,
2103
2114
ASTBasedReceiver);
2104
2115
}
@@ -2152,17 +2163,18 @@ void SwiftLangSupport::getRangeInfo(
2152
2163
Receiver (RequestResult<RangeInfo>::fromError (" Invalid range length." ));
2153
2164
return ;
2154
2165
}
2155
- resolveRange (*this , InputBufferName, Offset, Length, Invok,
2166
+ resolveRange (*this , PrimaryFilePath, InputBufferName, Offset, Length, Invok,
2156
2167
/* TryExistingAST=*/ true , CancelOnSubsequentRequest,
2157
2168
CancellationToken, Receiver);
2158
2169
}
2159
2170
2160
2171
void SwiftLangSupport::getNameInfo (
2161
- StringRef InputFile, unsigned Offset, NameTranslatingInfo &Input,
2162
- ArrayRef<const char *> Args, SourceKitCancellationToken CancellationToken,
2172
+ StringRef PrimaryFilePath, StringRef InputBufferName, unsigned Offset,
2173
+ NameTranslatingInfo &Input, ArrayRef<const char *> Args,
2174
+ SourceKitCancellationToken CancellationToken,
2163
2175
std::function<void (const RequestResult<NameTranslatingInfo> &)> Receiver) {
2164
2176
2165
- if (auto IFaceGenRef = IFaceGenContexts.get (InputFile )) {
2177
+ if (auto IFaceGenRef = IFaceGenContexts.get (PrimaryFilePath )) {
2166
2178
IFaceGenRef->accessASTAsync ([IFaceGenRef, Offset, Input, Receiver] {
2167
2179
SwiftInterfaceGenContext::ResolvedEntity Entity;
2168
2180
Entity = IFaceGenRef->resolveEntityForOffset (Offset);
@@ -2187,15 +2199,15 @@ void SwiftLangSupport::getNameInfo(
2187
2199
2188
2200
std::string Error;
2189
2201
SwiftInvocationRef Invok =
2190
- ASTMgr->getTypecheckInvocation (Args, InputFile , Error);
2202
+ ASTMgr->getTypecheckInvocation (Args, PrimaryFilePath , Error);
2191
2203
if (!Invok) {
2192
2204
LOG_WARN_FUNC (" failed to create an ASTInvocation: " << Error);
2193
2205
Receiver (RequestResult<NameTranslatingInfo>::fromError (Error));
2194
2206
return ;
2195
2207
}
2196
2208
2197
- resolveName (*this , InputFile, Offset, Invok, /* TryExistingAST= */ true , Input ,
2198
- CancellationToken, Receiver);
2209
+ resolveName (*this , PrimaryFilePath, InputBufferName, Offset, Invok ,
2210
+ /* TryExistingAST= */ true , Input, CancellationToken, Receiver);
2199
2211
}
2200
2212
2201
2213
static void resolveCursorFromUSR (
0 commit comments