@@ -497,6 +497,10 @@ class SLocEntry {
497
497
bool isFile () const { return !isExpansion (); }
498
498
499
499
const FileInfo &getFile () const {
500
+ return const_cast <SLocEntry *>(this )->getFile ();
501
+ }
502
+
503
+ FileInfo &getFile () {
500
504
assert (isFile () && " Not a file SLocEntry!" );
501
505
return File;
502
506
}
@@ -1120,12 +1124,12 @@ class SourceManager : public RefCountedBase<SourceManager> {
1120
1124
// / Set the number of FileIDs (files and macros) that were created
1121
1125
// / during preprocessing of \p FID, including it.
1122
1126
void setNumCreatedFIDsForFileID (FileID FID, unsigned NumFIDs,
1123
- bool Force = false ) const {
1127
+ bool Force = false ) {
1124
1128
auto *Entry = getSLocEntryForFile (FID);
1125
1129
if (!Entry)
1126
1130
return ;
1127
1131
assert ((Force || Entry->getFile ().NumCreatedFIDs == 0 ) && " Already set!" );
1128
- const_cast <SrcMgr::FileInfo &>( Entry->getFile () ).NumCreatedFIDs = NumFIDs;
1132
+ Entry->getFile ().NumCreatedFIDs = NumFIDs;
1129
1133
}
1130
1134
1131
1135
// ===--------------------------------------------------------------------===//
@@ -1730,6 +1734,11 @@ class SourceManager : public RefCountedBase<SourceManager> {
1730
1734
1731
1735
// / Get a local SLocEntry. This is exposed for indexing.
1732
1736
const SrcMgr::SLocEntry &getLocalSLocEntry (unsigned Index) const {
1737
+ return const_cast <SourceManager *>(this )->getLocalSLocEntry (Index);
1738
+ }
1739
+
1740
+ // / Get a local SLocEntry. This is exposed for indexing.
1741
+ SrcMgr::SLocEntry &getLocalSLocEntry (unsigned Index) {
1733
1742
assert (Index < LocalSLocEntryTable.size () && " Invalid index" );
1734
1743
return LocalSLocEntryTable[Index];
1735
1744
}
@@ -1740,6 +1749,13 @@ class SourceManager : public RefCountedBase<SourceManager> {
1740
1749
// / Get a loaded SLocEntry. This is exposed for indexing.
1741
1750
const SrcMgr::SLocEntry &getLoadedSLocEntry (unsigned Index,
1742
1751
bool *Invalid = nullptr ) const {
1752
+ return const_cast <SourceManager *>(this )->getLoadedSLocEntry (Index,
1753
+ Invalid);
1754
+ }
1755
+
1756
+ // / Get a loaded SLocEntry. This is exposed for indexing.
1757
+ SrcMgr::SLocEntry &getLoadedSLocEntry (unsigned Index,
1758
+ bool *Invalid = nullptr ) {
1743
1759
assert (Index < LoadedSLocEntryTable.size () && " Invalid index" );
1744
1760
if (SLocEntryLoaded[Index])
1745
1761
return LoadedSLocEntryTable[Index];
@@ -1748,6 +1764,10 @@ class SourceManager : public RefCountedBase<SourceManager> {
1748
1764
1749
1765
const SrcMgr::SLocEntry &getSLocEntry (FileID FID,
1750
1766
bool *Invalid = nullptr ) const {
1767
+ return const_cast <SourceManager *>(this )->getSLocEntry (FID, Invalid);
1768
+ }
1769
+
1770
+ SrcMgr::SLocEntry &getSLocEntry (FileID FID, bool *Invalid = nullptr ) {
1751
1771
if (FID.ID == 0 || FID.ID == -1 ) {
1752
1772
if (Invalid) *Invalid = true ;
1753
1773
return LocalSLocEntryTable[0 ];
@@ -1821,14 +1841,23 @@ class SourceManager : public RefCountedBase<SourceManager> {
1821
1841
SrcMgr::ContentCache &getFakeContentCacheForRecovery () const ;
1822
1842
1823
1843
const SrcMgr::SLocEntry &loadSLocEntry (unsigned Index, bool *Invalid) const ;
1844
+ SrcMgr::SLocEntry &loadSLocEntry (unsigned Index, bool *Invalid);
1824
1845
1825
1846
const SrcMgr::SLocEntry *getSLocEntryOrNull (FileID FID) const {
1847
+ return const_cast <SourceManager *>(this )->getSLocEntryOrNull (FID);
1848
+ }
1849
+
1850
+ SrcMgr::SLocEntry *getSLocEntryOrNull (FileID FID) {
1826
1851
bool Invalid = false ;
1827
- const SrcMgr::SLocEntry &Entry = getSLocEntry (FID, &Invalid);
1852
+ SrcMgr::SLocEntry &Entry = getSLocEntry (FID, &Invalid);
1828
1853
return Invalid ? nullptr : &Entry;
1829
1854
}
1830
1855
1831
1856
const SrcMgr::SLocEntry *getSLocEntryForFile (FileID FID) const {
1857
+ return const_cast <SourceManager *>(this )->getSLocEntryForFile (FID);
1858
+ }
1859
+
1860
+ SrcMgr::SLocEntry *getSLocEntryForFile (FileID FID) {
1832
1861
if (auto *Entry = getSLocEntryOrNull (FID))
1833
1862
if (Entry->isFile ())
1834
1863
return Entry;
@@ -1839,6 +1868,10 @@ class SourceManager : public RefCountedBase<SourceManager> {
1839
1868
// / Invalid will not be modified for Local IDs.
1840
1869
const SrcMgr::SLocEntry &getSLocEntryByID (int ID,
1841
1870
bool *Invalid = nullptr ) const {
1871
+ return const_cast <SourceManager *>(this )->getSLocEntryByID (ID, Invalid);
1872
+ }
1873
+
1874
+ SrcMgr::SLocEntry &getSLocEntryByID (int ID, bool *Invalid = nullptr ) {
1842
1875
assert (ID != -1 && " Using FileID sentinel value" );
1843
1876
if (ID < 0 )
1844
1877
return getLoadedSLocEntryByID (ID, Invalid);
@@ -1847,6 +1880,11 @@ class SourceManager : public RefCountedBase<SourceManager> {
1847
1880
1848
1881
const SrcMgr::SLocEntry &
1849
1882
getLoadedSLocEntryByID (int ID, bool *Invalid = nullptr ) const {
1883
+ return const_cast <SourceManager *>(this )->getLoadedSLocEntryByID (ID,
1884
+ Invalid);
1885
+ }
1886
+
1887
+ SrcMgr::SLocEntry &getLoadedSLocEntryByID (int ID, bool *Invalid = nullptr ) {
1850
1888
return getLoadedSLocEntry (static_cast <unsigned >(-ID - 2 ), Invalid);
1851
1889
}
1852
1890
0 commit comments