|
47 | 47 | #include "swift/Basic/SourceManager.h" |
48 | 48 | #include "swift/Basic/Statistic.h" |
49 | 49 | #include "swift/Basic/StringExtras.h" |
50 | | -#include "swift/Bridging/ASTGen.h" |
51 | 50 | #include "swift/Demangling/ManglingMacros.h" |
52 | 51 | #include "swift/Parse/Token.h" |
53 | 52 | #include "swift/Strings.h" |
@@ -2968,76 +2967,6 @@ void SourceFile::recordIfConfigClauseRangeInfo( |
2968 | 2967 | #endif |
2969 | 2968 | } |
2970 | 2969 |
|
2971 | | -ArrayRef<IfConfigClauseRangeInfo> SourceFile::getIfConfigClauseRanges() const { |
2972 | | -#if SWIFT_BUILD_SWIFT_SYNTAX |
2973 | | - if (!IfConfigClauseRanges.IsSorted) { |
2974 | | - IfConfigClauseRanges.Ranges.clear(); |
2975 | | - |
2976 | | - BridgedIfConfigClauseRangeInfo *regions; |
2977 | | - intptr_t numRegions = swift_ASTGen_configuredRegions( |
2978 | | - getASTContext(), getExportedSourceFile(), ®ions); |
2979 | | - IfConfigClauseRanges.Ranges.reserve(numRegions); |
2980 | | - for (intptr_t i = 0; i != numRegions; ++i) |
2981 | | - IfConfigClauseRanges.Ranges.push_back(regions[i].unbridged()); |
2982 | | - free(regions); |
2983 | | - |
2984 | | - IfConfigClauseRanges.IsSorted = true; |
2985 | | - } |
2986 | | -#else |
2987 | | - if (!IfConfigClauseRanges.IsSorted) { |
2988 | | - auto &SM = getASTContext().SourceMgr; |
2989 | | - // Sort the ranges if we need to. |
2990 | | - llvm::sort( |
2991 | | - IfConfigClauseRanges.Ranges, [&](const IfConfigClauseRangeInfo &lhs, |
2992 | | - const IfConfigClauseRangeInfo &rhs) { |
2993 | | - return SM.isBeforeInBuffer(lhs.getStartLoc(), rhs.getStartLoc()); |
2994 | | - }); |
2995 | | - |
2996 | | - // Be defensive and eliminate duplicates in case we've parsed twice. |
2997 | | - auto newEnd = llvm::unique( |
2998 | | - IfConfigClauseRanges.Ranges, [&](const IfConfigClauseRangeInfo &lhs, |
2999 | | - const IfConfigClauseRangeInfo &rhs) { |
3000 | | - if (lhs.getStartLoc() != rhs.getStartLoc()) |
3001 | | - return false; |
3002 | | - assert(lhs.getBodyRange(SM) == rhs.getBodyRange(SM) && |
3003 | | - "range changed on a re-parse?"); |
3004 | | - return true; |
3005 | | - }); |
3006 | | - IfConfigClauseRanges.Ranges.erase(newEnd, |
3007 | | - IfConfigClauseRanges.Ranges.end()); |
3008 | | - IfConfigClauseRanges.IsSorted = true; |
3009 | | - } |
3010 | | -#endif |
3011 | | - |
3012 | | - return IfConfigClauseRanges.Ranges; |
3013 | | -} |
3014 | | - |
3015 | | -ArrayRef<IfConfigClauseRangeInfo> |
3016 | | -SourceFile::getIfConfigClausesWithin(SourceRange outer) const { |
3017 | | - auto &SM = getASTContext().SourceMgr; |
3018 | | - assert(SM.getRangeForBuffer(BufferID).contains(outer.Start) && |
3019 | | - "Range not within this file?"); |
3020 | | - |
3021 | | - // First let's find the first #if that is after the outer start loc. |
3022 | | - auto ranges = getIfConfigClauseRanges(); |
3023 | | - auto lower = llvm::lower_bound( |
3024 | | - ranges, outer.Start, |
3025 | | - [&](const IfConfigClauseRangeInfo &range, SourceLoc loc) { |
3026 | | - return SM.isBeforeInBuffer(range.getStartLoc(), loc); |
3027 | | - }); |
3028 | | - if (lower == ranges.end() || |
3029 | | - SM.isBeforeInBuffer(outer.End, lower->getStartLoc())) { |
3030 | | - return {}; |
3031 | | - } |
3032 | | - // Next let's find the first #if that's after the outer end loc. |
3033 | | - auto upper = llvm::upper_bound( |
3034 | | - ranges, outer.End, |
3035 | | - [&](SourceLoc loc, const IfConfigClauseRangeInfo &range) { |
3036 | | - return SM.isBeforeInBuffer(loc, range.getStartLoc()); |
3037 | | - }); |
3038 | | - return llvm::ArrayRef(lower, upper - lower); |
3039 | | -} |
3040 | | - |
3041 | 2970 | void ModuleDecl::setPackageName(Identifier name) { |
3042 | 2971 | Package = PackageUnit::create(name, *this, getASTContext()); |
3043 | 2972 | } |
|
0 commit comments