Skip to content
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

Reload a file when other files within the same module or a .swiftmodule file has been changed #1180

Merged

Conversation

ahoppen
Copy link
Member

@ahoppen ahoppen commented Apr 17, 2024

When the client sends us workspace/didChangeWatchedFiles notification of an updated .swift file, we should refresh the other open files in that module since they might be referencing functions from that updated file.

If a .swiftmodule file has been updated, we refresh all the files within the package since they might import that module. Technically, we would only need to refresh files that are in module that are downstream of the updated module but we don’t currently have that information easily available from SwiftPM. Also, usually, if the client has a file from a low-level module open, he’ll be working on that module which means that such an optimization won’t help. The real solution here is to wait for us to finish preparation (which we would exactly know when it finishes since sourcekit-lsp would schedule it) but for that we need to implement background preparation.

Fixes #620
Fixes #1116
rdar://99329579
rdar://123971779

@ahoppen ahoppen requested a review from benlangmuir as a code owner April 17, 2024 18:32
@ahoppen
Copy link
Member Author

ahoppen commented Apr 18, 2024

@swift-ci Please test

@ahoppen ahoppen requested a review from bnbarham April 18, 2024 04:10
@ahoppen ahoppen force-pushed the refresh-file-on-updated-dependencies branch from 2b78854 to ed3539a Compare April 18, 2024 22:53
@ahoppen
Copy link
Member Author

ahoppen commented Apr 18, 2024

@swift-ci Please test

@ahoppen
Copy link
Member Author

ahoppen commented Apr 18, 2024

@swift-ci Please test Windows

1 similar comment
@ahoppen
Copy link
Member Author

ahoppen commented Apr 18, 2024

@swift-ci Please test Windows

@ahoppen
Copy link
Member Author

ahoppen commented Apr 19, 2024

@swift-ci Please test macOS

@ahoppen
Copy link
Member Author

ahoppen commented Apr 19, 2024

@swift-ci Please test Windows

…ule` file has been changed

When the client sends us `workspace/didChangeWatchedFiles` notification of an updated `.swift` file, we should refresh the other open files in that module since they might be referencing functions from that updated file.

If a `.swiftmodule` file has been updated, we refresh all the files within the package since they might import that module. Technically, we would only need to refresh files that are in module that are downstream of the updated module but we don’t currently have that information easily available from SwiftPM. Also, usually, if the client has a file from a low-level module open, he’ll be working on that module which means that such an optimization won’t help. The real solution here is to wait for us to finish preparation (which we would exactly know when it finishes since sourcekit-lsp would schedule it) but for that we need to implement background preparation.

Fixes swiftlang#620
Fixes swiftlang#1116
rdar://99329579
rdar://123971779
@ahoppen ahoppen force-pushed the refresh-file-on-updated-dependencies branch from ed3539a to fd7b268 Compare April 23, 2024 16:34
@ahoppen
Copy link
Member Author

ahoppen commented Apr 23, 2024

@swift-ci Please test

@ahoppen
Copy link
Member Author

ahoppen commented Apr 23, 2024

@swift-ci Please test Windows

1 similar comment
@ahoppen
Copy link
Member Author

ahoppen commented Apr 24, 2024

@swift-ci Please test Windows

@ahoppen ahoppen enabled auto-merge April 24, 2024 03:51
@ahoppen ahoppen merged commit c72fe50 into swiftlang:main Apr 24, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants