3 ms·
Things within the node are fine because errors propagate upwards. The problem is things like: Foo getFoo(int); getFoo().???; // want code completion!
by tnh 2y ago
Things within the node are fine because errors propagate upwards. The problem is things like:
Foo getFoo(int);
getFoo().???; // want code completion!
`getFoo()` is missing an argument, but you still want to complete Foo's members. If you type `getFoo().getBar()` you want go-to-definition to work on `getBar`.
In clang, we use heuristics to preserve the type in high-confidence cases. (here overload resolution for `getFoo` failed, but there was only one candidate function). This means you can get cascading errors in those cases (but often that's a good thing, especially in an IDE - tradeoffs).