Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
Rename refactoring: keyword fields #444
Rename refactoring: keyword fields #444
Changes from all commits
ed62e20
f852237
2fc4ec7
9ffbaff
fa965c1
d2d8a7a
98809e5
f709bf0
949c609
df99b82
5be976b
0f28d3f
2a6108d
2d1bbf9
18a18bf
216acc1
86a359a
72a3202
7dd59d0
0a2ac13
d2ce994
6b6c336
16d39b6
fac01e3
9c8c98f
54d1a41
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand I am too late to the party, but what is the rationale not to use tests that show the source code before and after renaming?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test framework only considers occurrences of
oldName
(by default, that's 'foo'). For every returned document edit, it checks if it matches one of the expected occurrences. Occurrences are simply indices. If the renaming return an edit that does not refer to a location whereoldName
occurs, or when it renames an occurrences ofoldName
that is not in the expected list of indices, the test fails.Additionally, the test framework applies the returned edits to the test workspace (thus obtaining the actual renamed files) and runs the type checker on them.
We could have written the source code as an expectation. This is probably more readable but a lot more to write. Additionally, we still would need to specify from cursor(s) to rename, which, as @rodinaarssen noted, is the same set of indices as the expected renamed occurrences. All in all, this notation is a lot more concise and requires less modifications when extending existing tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you explain how these tests work? What exactly is being renamed and how is the result being tested?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I answered this while giving context here. Please let me know if anything is still unclear!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In addition, these are multi-module. They specifiy the contents and to-be-renamed per module. Otherwise, this uses the same machinery as the single-module tests.