Skip to content

Share implementation of local rename and related identifiers + implement NameMatcher in Swift #70008

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Nov 30, 2023

Conversation

ahoppen
Copy link
Member

@ahoppen ahoppen commented Nov 23, 2023

The primary goal of this PR is to share the same implementation between local rename and related identifiers. Doing so uncovered issues in NameMatcher, which assumed that it was iterating the AST nodes in source order, but wasn’t in some cases. To fix that issue, this the linked swift-syntax PR re-implements NameMatcher on top of swift-syntax trees and this PR start using that.

I tried using C++ to Swift interop to achieve this but ultimately failed because

  1. The macOS CI nodes still run Swift 5.7, which doesn’t really support C++ to Swift interop
  2. The Linux CI nodes use Swift 5.8, which hits multiple levels of linker errors when linking Swift and C++.

The last couple of commits revert the C++ to Swift interop. Instead, Swift exposes a C function that can be called from C++.

It should be possible to review the PR commit by commit. Most commits should be very straightforward.

ahoppen and others added 21 commits November 16, 2023 16:05
Local rename and related identifiers were sufficiently similar that we can implement related identifiers in terms of local rename.
…nges instead of putting them in an array first

After implementing related identifiers in terms of rename, this step seems to no longer be necessary.
We should (and do) have one new name for the entire rename operation, not a separate new name for different positions at which the renamed symbol occurs.
AFAICT we can just infer whether to resolve arguments based on the presence of arguments. We don’t need the information to be passed in.
`UnresolvedLoc` was just a wrapper around `SourceLoc` and isn’t needed anymore.
We can’t represent the parent node when rewriting `NameMatcher` using swift-syntax. Replace it by two boolean fields `IsComment` and `IsInStringLiteral` that can be bridged.
Local refactoring should go through the `find-local-rename-ranges` request.
With the local refactoring being removed, all production refactoring paths return a set of ranges to rename and don’t apply edits to the file. Thus, the `syntactic-rename` action also doesn’t make sense anymore.
With `TextReplacementsRenamer` gone, `RenameRangeDetailCollector` was the only remaining subclass of `Renamer`.
…tail

The usage becomes a lot clearer if there’s just a top-level function that returns the details for the syntactic rename ranges.
… consumers

This makes it a lot easier to follow the code.
This type will get exposed to Swift and the members should be lowercase so that they read nicely in Swift.
This reduces the configure time and reduces the pieces that may check
for dependencies as we are growing the dependencies on Swift.
…cVector`

This was causing build issues on Linux with Swift 5.8. Instead, wrap the `std::vector` in a `BridgedResolvedLocVector` that has a pointer to a heap-allocated `std::vector`
… on Windows

Without this, header fail to compile when they are used from Swift with C++ interop.
@ahoppen
Copy link
Member Author

ahoppen commented Nov 23, 2023

@ahoppen
Copy link
Member Author

ahoppen commented Nov 23, 2023

swiftlang/llvm-project#7818
swiftlang/swift-syntax#2360

@swift-ci Please SourceKit stress test

@ahoppen
Copy link
Member Author

ahoppen commented Nov 23, 2023

swiftlang/llvm-project#7818
swiftlang/swift-syntax#2360

@swift-ci Please smoke test Windows

@ahoppen
Copy link
Member Author

ahoppen commented Nov 24, 2023

Comment on lines 27 to 35
#else // USED_IN_CPP_SOURCE

#ifdef SWIFT_SIL_SILVALUE_H
#error "should not include swift headers into bridging header"
#endif
#ifdef LLVM_SUPPORT_COMPILER_H
#error "should not include llvm headers into bridging header"
#endif

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@eeckstein Why were these checks needed? AFAICT everything builds if I add the following two includes, which hit the check.

https://github.com/apple/swift/pull/70008/files#diff-270b6019bf8675f1ac9a47a482bcdbd4b0e8773d6487665f8dac16129ed4ccc1R25-R28

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the BridgingHeaders should not include any llvm/swift/C++ headers in pure mode. See #69039.

So please don't remove those checks!

@ahoppen
Copy link
Member Author

ahoppen commented Nov 27, 2023

Note to self: Stress tester did not find any issues.

@ahoppen ahoppen force-pushed the ahoppen/name-matcher-in-swift branch from e84212f to 3650cf2 Compare November 27, 2023 22:17
@ahoppen
Copy link
Member Author

ahoppen commented Nov 27, 2023

swiftlang/swift-syntax#2360

@swift-ci Please smoke test

@ahoppen ahoppen force-pushed the ahoppen/name-matcher-in-swift branch from 3650cf2 to 47b079b Compare November 28, 2023 00:24
@ahoppen
Copy link
Member Author

ahoppen commented Nov 28, 2023

swiftlang/swift-syntax#2360

@swift-ci Please smoke test

@ahoppen ahoppen force-pushed the ahoppen/name-matcher-in-swift branch from 47b079b to f0ca5f3 Compare November 28, 2023 03:33
@ahoppen ahoppen force-pushed the ahoppen/name-matcher-in-swift branch from f0ca5f3 to b313982 Compare November 28, 2023 03:34
@ahoppen
Copy link
Member Author

ahoppen commented Nov 28, 2023

@@ -25,6 +25,7 @@

#include <stddef.h>
#include <stdint.h>
#include <vector>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't add any C++ headers in BasicBridging.h

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it even needed to bridge a std::vector of BridgedCharSourceRange?

If this vector is constructed on the swift side and then passed to C++, you can just use a swift Array and pass its buffer to C++, like done here: https://github.com/apple/swift/blob/b90b3261164f149030243b856f5dcfce12a34662/SwiftCompilerSources/Sources/SIL/Utils.swift#L224

If it's constructed on the C++ side and used on the swift side, you can bridge an ArrayRef like struct.

@ahoppen
Copy link
Member Author

ahoppen commented Nov 28, 2023

swiftlang/swift-syntax#2360

@swift-ci Please smoke test

1 similar comment
@ahoppen
Copy link
Member Author

ahoppen commented Nov 28, 2023

swiftlang/swift-syntax#2360

@swift-ci Please smoke test

/// ensure that `takeUnbridged` is called to free the memory.
class BridgedCharSourceRangeVector {
/// Opaque pointer to `std::vector<CharSourceRange>`.
void *_Nonnull vector;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 thanks!

@ahoppen ahoppen merged commit cc858ab into swiftlang:main Nov 30, 2023
@ahoppen ahoppen deleted the ahoppen/name-matcher-in-swift branch November 30, 2023 17:37
@finagolfin
Copy link
Member

This broke the community Android CI- one of the only CI that doesn't have a host Swift compiler so it doesn't build the early swift-syntax- because swift-refactor relies on libswiftRefactoring, which is no longer built on that CI because of the swift-syntax dependency after this pull:

[1385/1932][ 71%][814.385s] Linking CXX executable bin/swift-refactor
FAILED: bin/swift-refactor
: && /usr/bin/clang++ -Wno-unknown-warning-option -Werror=unguarded-availability-new -fno-stack-protector -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-class-memaccess -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Werror=switch -Wdocumentation -Wimplicit-fallthrough -Wunreachable-code -Woverloaded-virtual -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -O3 -DNDEBUG -target x86_64-unknown-linux-gnu -fuse-ld=gold tools/swift-refactor/CMakeFiles/swift-refactor.dir/swift-refactor.cpp.o -o bin/swift-refactor -L/home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/./lib   -L/home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/swift-linux-x86_64/lib -Wl,-rpath,/home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/./lib:/home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/swift-linux-x86_64/lib  -lpthread  -ldl  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSupport.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMDemangle.a  lib/libswiftDriver.a  lib/libswiftFrontend.a  lib/libswiftIDE.a  -lswiftRefactoring  lib/libswiftAPIDigester.a  lib/libswiftConstExtract.a  lib/libswiftIRGen.a  lib/libswiftSILGen.a  lib/libswiftSILOptimizer.a  lib/libswiftLLVMPasses.a  lib/libswiftLocalization.a  lib/libswiftSymbolGraphGen.a  lib/libswiftIDE.a  lib/libswiftDriver.a  lib/libswiftSIL.a  lib/libswiftSema.a  lib/libswiftSerialization.a  lib/libswiftSIL.a  lib/libswiftSema.a  lib/libswiftSerialization.a  lib/libswiftOption.a  lib/libswiftClangImporter.a  lib/libswiftParse.a  lib/libswiftAST.a  lib/libswiftBasic.a  lib/libswiftDemangling.a  /usr/lib/x86_64-linux-gnu/libuuid.so  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangFrontendTool.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangExtractAPI.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangARCMigrate.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangStaticAnalyzerFrontend.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangStaticAnalyzerCheckers.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangStaticAnalyzerCore.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangCrossTU.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangDependencyScanning.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMX86CodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMX86AsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMX86Desc.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMX86Disassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMX86Info.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMARMCodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMARMAsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMARMDisassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMARMDesc.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMARMInfo.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMARMUtils.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAArch64CodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMCFGuard.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAArch64AsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAArch64Disassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAArch64Desc.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAArch64Info.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAArch64Utils.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMPowerPCCodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMPowerPCAsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMPowerPCDesc.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMPowerPCDisassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMPowerPCInfo.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSystemZCodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSystemZAsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSystemZDisassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSystemZDesc.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSystemZInfo.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMipsCodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMipsAsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMipsDesc.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMipsDisassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMipsInfo.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMRISCVCodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMGlobalISel.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMRISCVAsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMRISCVDisassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMRISCVDesc.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMRISCVInfo.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMWebAssemblyCodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAsmPrinter.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSelectionDAG.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMWebAssemblyAsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMWebAssemblyDisassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMCDisassembler.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMWebAssemblyUtils.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMWebAssemblyDesc.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMWebAssemblyInfo.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangCodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMCoverage.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMLTO.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMExtensions.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMPasses.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMCoroutines.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMipo.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMInstrumentation.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMLinker.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMIRPrinter.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMCodeGen.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMBitWriter.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMObjCARCOpts.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMTarget.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMCodeGenTypes.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMVectorize.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangTooling.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangToolingRefactor.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangToolingRefactoring.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangIndex.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangFormat.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangToolingInclusions.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangToolingCore.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangRewriteFrontend.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangFrontend.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangDriver.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMWindowsDriver.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMOption.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangParse.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMRemoteCachingService.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMRemoteNullService.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangCAS.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMCCAS.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangSerialization.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangSema.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangAnalysis.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangASTMatchers.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMFrontendHLSL.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangSupport.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangEdit.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangRewrite.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangAST.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMFrontendOpenMP.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMScalarOpts.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAggressiveInstCombine.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMInstCombine.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMTransformUtils.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAnalysis.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMProfileData.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSymbolize.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMDebugInfoDWARF.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMDebugInfoPDB.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMDebugInfoMSF.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMDebugInfoBTF.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMObject.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMIRReader.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMAsmParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMCParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMMC.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMCASUtil.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMCAS.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMDebugInfoCodeView.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMTextAPI.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangLex.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangAPINotes.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMBitReader.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMCore.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMRemarks.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMBinaryFormat.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMBitstreamReader.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libclangBasic.a  lib/libswiftMarkup.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/cmark-linux-x86_64/src/libcmark-gfm.a  -lpthread  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMTargetParser.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMSupport.a  /home/ubuntu/jenkins/workspace/oss-swift-RA-linux-ubuntu-16.04-android/buildbot_linux/llvm-linux-x86_64/lib/libLLVMDemangle.a  -lrt  -ldl  -lm  /usr/lib/x86_64-linux-gnu/libz.so  /usr/lib/x86_64-linux-gnu/libtinfo.so && :
/usr/bin/ld.gold: error: cannot find -lswiftRefactoring
tools/swift-refactor/CMakeFiles/swift-refactor.dir/swift-refactor.cpp.o:swift-refactor.cpp:function getRange(unsigned int, swift::SourceManager&, RefactorLoc, RefactorLoc): error: undefined reference to 'swift::ide::RangeConfig::getStart(swift::SourceManager&)'
tools/swift-refactor/CMakeFiles/swift-refactor.dir/swift-refactor.cpp.o:swift-refactor.cpp:function getRange(unsigned int, swift::SourceManager&, RefactorLoc, RefactorLoc): error: undefined reference to 'swift::ide::RangeConfig::getEnd(swift::SourceManager&)'
tools/swift-refactor/CMakeFiles/swift-refactor.dir/swift-refactor.cpp.o:swift-refactor.cpp:function main: error: undefined reference to 'swift::ide::findLocalRenameRanges(swift::SourceFile*, swift::ide::RangeConfig)'
tools/swift-refactor/CMakeFiles/swift-refactor.dir/swift-refactor.cpp.o:swift-refactor.cpp:function main: error: undefined reference to 'swift::ide::findSyntacticRenameRanges(swift::SourceFile*, llvm::ArrayRef<swift::ide::RenameLoc>, llvm::StringRef)'
tools/swift-refactor/CMakeFiles/swift-refactor.dir/swift-refactor.cpp.o:swift-refactor.cpp:function main: error: undefined reference to 'swift::ide::collectRefactorings(swift::SourceFile*, swift::ide::RangeConfig, bool&, llvm::ArrayRef<swift::DiagnosticConsumer*>)'
tools/swift-refactor/CMakeFiles/swift-refactor.dir/swift-refactor.cpp.o:swift-refactor.cpp:function main: error: undefined reference to 'swift::ide::getDescriptiveRefactoringKindName(swift::ide::RefactoringKind)'
tools/swift-refactor/CMakeFiles/swift-refactor.dir/swift-refactor.cpp.o:swift-refactor.cpp:function main: error: undefined reference to 'swift::ide::refactorSwiftModule(swift::ModuleDecl*, swift::ide::RefactoringOptions, swift::ide::SourceEditConsumer&, swift::DiagnosticConsumer&)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I think this can be fixed by making swift-refactor depend on swift-syntax too, @ahoppen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants