Skip to content

Commit 5fc8831

Browse files
committed
Merge remote-tracking branch 'origin/master' into master-next
2 parents 5fc1d17 + a27521d commit 5fc8831

File tree

3 files changed

+15
-67
lines changed

3 files changed

+15
-67
lines changed

tools/SourceKit/lib/SwiftLang/SwiftLangSupport.cpp

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -911,36 +911,10 @@ void SwiftLangSupport::printMemberDeclDescription(const swift::ValueDecl *VD,
911911

912912
std::string SwiftLangSupport::resolvePathSymlinks(StringRef FilePath) {
913913
std::string InputPath = FilePath;
914-
#if !defined(_WIN32)
915-
char full_path[MAXPATHLEN];
916-
if (const char *path = realpath(InputPath.c_str(), full_path))
917-
return path;
918-
919-
return InputPath;
920-
#else
921-
wchar_t full_path[MAX_PATH] = {0};
922-
llvm::SmallVector<llvm::UTF16, 50> utf16Path;
923-
llvm::convertUTF8ToUTF16String(InputPath.c_str(), utf16Path);
924-
925-
HANDLE fileHandle = CreateFileW(
926-
(LPCWSTR)utf16Path.data(), 0, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr,
927-
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, nullptr);
928-
929-
if (fileHandle == INVALID_HANDLE_VALUE)
914+
llvm::SmallString<256> output;
915+
if (llvm::sys::fs::real_path(InputPath, output))
930916
return InputPath;
931-
932-
DWORD numChars = GetFinalPathNameByHandleW(fileHandle, full_path, MAX_PATH,
933-
FILE_NAME_NORMALIZED);
934-
CloseHandle(fileHandle);
935-
std::string utf8Path;
936-
if (numChars > 0 && numChars <= MAX_PATH) {
937-
llvm::ArrayRef<char> pathRef((const char *)full_path,
938-
(const char *)(full_path + numChars));
939-
return llvm::convertUTF16ToUTF8String(pathRef, utf8Path) ? utf8Path
940-
: InputPath;
941-
}
942-
return InputPath;
943-
#endif
917+
return output.str();
944918
}
945919

946920
void SwiftLangSupport::getStatistics(StatisticsReceiver receiver) {

tools/SourceKit/tools/sourcekitd-test/sourcekitd-test.cpp

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -49,35 +49,6 @@ using namespace sourcekitd_test;
4949
#if defined(_WIN32)
5050
namespace {
5151
int STDOUT_FILENO = _fileno(stdout);
52-
const constexpr size_t MAXPATHLEN = MAX_PATH + 1;
53-
char *realpath(const char *path, char *resolved_path) {
54-
wchar_t full_path[MAXPATHLEN] = {0};
55-
llvm::SmallVector<llvm::UTF16, 50> utf16Path;
56-
llvm::convertUTF8ToUTF16String(path, utf16Path);
57-
58-
HANDLE fileHandle = CreateFileW(
59-
(LPCWSTR)utf16Path.data(), 0, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr,
60-
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, nullptr);
61-
62-
if (fileHandle == INVALID_HANDLE_VALUE)
63-
return nullptr;
64-
DWORD success = GetFinalPathNameByHandleW(fileHandle, full_path, MAX_PATH,
65-
FILE_NAME_NORMALIZED);
66-
CloseHandle(fileHandle);
67-
if (!success) return nullptr;
68-
69-
std::string utf8Path;
70-
llvm::ArrayRef<char> pathRef((const char *)full_path,
71-
(const char *)(full_path + MAX_PATH));
72-
if (!llvm::convertUTF16ToUTF8String(pathRef, utf8Path))
73-
return nullptr;
74-
75-
if (!resolved_path) {
76-
resolved_path = static_cast<char *>(malloc(utf8Path.length() + 1));
77-
}
78-
std::copy(std::begin(utf8Path), std::end(utf8Path), resolved_path);
79-
return resolved_path;
80-
}
8152
}
8253
#endif
8354

@@ -1445,9 +1416,9 @@ static void printCursorInfo(sourcekitd_variant_t Info, StringRef FilenameIn,
14451416
}
14461417

14471418
std::string Filename = FilenameIn;
1448-
char full_path[MAXPATHLEN];
1449-
if (const char *path = realpath(Filename.c_str(), full_path))
1450-
Filename = path;
1419+
llvm::SmallString<256> output;
1420+
if (!llvm::sys::fs::real_path(Filename, output))
1421+
Filename = output.str();
14511422

14521423
const char *Kind = sourcekitd_uid_get_string_ptr(KindUID);
14531424
const char *USR = sourcekitd_variant_dictionary_get_string(Info, KeyUSR);
@@ -1617,9 +1588,9 @@ static void printRangeInfo(sourcekitd_variant_t Info, StringRef FilenameIn,
16171588
}
16181589

16191590
std::string Filename = FilenameIn;
1620-
char full_path[MAXPATHLEN];
1621-
if (const char *path = realpath(Filename.c_str(), full_path))
1622-
Filename = path;
1591+
llvm::SmallString<256> output;
1592+
if (llvm::sys::fs::real_path(Filename, output))
1593+
Filename = output.str();
16231594

16241595
sourcekitd_variant_t OffsetObj =
16251596
sourcekitd_variant_dictionary_get_value(Info, KeyOffset);

utils/build-script-impl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2388,15 +2388,18 @@ for host in "${ALL_HOSTS[@]}"; do
23882388
-DCMAKE_BUILD_TYPE:STRING="${XCTEST_BUILD_TYPE}"
23892389
-DCMAKE_C_COMPILER:PATH="${LLVM_BIN}/clang"
23902390
-DCMAKE_CXX_COMPILER:PATH="${LLVM_BIN}/clang++"
2391-
-DCMAKE_SWIFT_COMPILER:PATH="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc"
2391+
-DCMAKE_Swift_COMPILER:PATH="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc"
23922392
-DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})"
23932393
-DCMAKE_INSTALL_LIBDIR:PATH="lib"
23942394

2395+
-Ddispatch_DIR=$(build_directory ${host} libdispatch)/cmake/modules
2396+
-DFoundation_DIR=$(build_directory ${host} foundation)/cmake/modules
2397+
-DLLVM_DIR=$(build_directory ${host} llvm)/lib/cmake/llvm
2398+
23952399
-DXCTEST_PATH_TO_LIBDISPATCH_SOURCE:PATH=${LIBDISPATCH_SOURCE_DIR}
23962400
-DXCTEST_PATH_TO_LIBDISPATCH_BUILD:PATH=$(build_directory ${host} libdispatch)
2397-
23982401
-DXCTEST_PATH_TO_FOUNDATION_BUILD:PATH=${FOUNDATION_BUILD_DIR}
2399-
2402+
-DCMAKE_SWIFT_COMPILER:PATH="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc"
24002403
-DCMAKE_PREFIX_PATH:PATH=$(build_directory ${host} llvm)
24012404

24022405
-DENABLE_TESTING=YES

0 commit comments

Comments
 (0)