swift
4a01aede - [CodeCompletion] Delete expr type state after getting expr completions

Commit
8 years ago
[CodeCompletion] Delete expr type state after getting expr completions When we are getting completions for an initializer at the open parenthesis, as in: class C { func foo<S: Sequence>(x: S) { String(#^A^# } } after getting all of the overloads for String.init or other applicable completions for the expression, we leave the stateful expression type set when performing the last part of code completion, which is getting other visible declarations at that point. In this example, C.foo is available to call. However, if the expression type is left around, we will mistakenly try to use it to substitute generics of the found declaration, which doesn't make sense, because foo is a method on C, not String in this case. We really need to make this part of the compiler less stateful in the future, or at least formalize the state changes more. It might also make sense to further separate different kinds of completions and the mechanisms for getting types, as we reuse the same machinery for methods and module functions, making a lot of fallback assumptions. rdar://problem/30137466
Author
Committer
Parents
Loading