Skip to content

[5.1] Code-completion, indexing, cursor-info, etc. for KeyPath dynamic member lookup #24106

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 7 commits into from
Apr 18, 2019

Conversation

benlangmuir
Copy link
Contributor

Cherry-pick #24072
Reviewed by: @rintaro @nathawes


Add support for code-completion looking up keypath dynamic members, and cursor-info/indexing walking the underlying decls.

rdar://49028783
rdar://49028895
rdar://49029126

Currently includes both the implicit references to the
subscript(dynamicMember:) and the explicit references to the underlying
property/subscript declarations.

rdar://49028783
When building the implicit subscript expression, set the "implicit" bit
correctly and pass it through in the indexer so that we get implicit
refernces to the subscript. This would be useful for e.g. searching for
all uses of the dynamic subscript.
Ensure the various entity walkers handle the implicit subscript
reference correctly (usually by ignoring it) and fall through to the
underlying declarations.

rdar://49028895
Looks into the root type of the keypath to find additional members. This
does not currently map the type of the completion to the subscript's
return type.

rdar://49029126

Conflicts:
	include/swift/Sema/IDETypeChecking.h
…ocation

The implicit subscript is not located at the "." instead of the
identifier, so update the index test.
This test baked in an incorrect USR from a bug that has since been
fixed. But we don't really need to check this anyway, so remove it.
Per review feedback. Also add some test cases that should fail dynamic
member lookup.
@benlangmuir
Copy link
Contributor Author

@swift-ci please test

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 9c9e408

@benlangmuir
Copy link
Contributor Author

Linux failure is while building Foundation:

swift-corelibs-foundation/Foundation/NSError.swift:919:29: error: use of undeclared type 'POSIXErrorCode'
     public typealias Code = POSIXErrorCode
                             ^~~~~~~~~~~~~~

@benlangmuir
Copy link
Contributor Author

#24108 should fix the Linux failure

@benlangmuir
Copy link
Contributor Author

@swift-ci please test Linux

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 9c9e408

@rintaro
Copy link
Member

rintaro commented Apr 18, 2019

@akyrtzi Failure is unrelated (Foundation test).

@akyrtzi akyrtzi merged commit e0f1994 into swiftlang:swift-5.1-branch Apr 18, 2019
@benlangmuir benlangmuir deleted the keypath-ide-51 branch April 25, 2019 17:18
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.

4 participants