\<i\>
j = 5;
The user starts writing (<|> is the cursor position): i = <|>
j = 5;
This is a valid expression (i is a boolean). But the user probably intends to finish writing something like: i = 0;
j = 5;
So in the intermediate state we would like to emit a single warning about an incomplete statement. But since it is valid as written, we instead end up warning about e.g. j being unbound. std::pair<const std::string, int>
vs std::pair<std::string, int>