[Expression parser] Return both types and variables
authorSean Callanan <scallanan@apple.com>
Mon, 24 Apr 2017 23:14:04 +0000 (23:14 +0000)
committerSean Callanan <scallanan@apple.com>
Mon, 24 Apr 2017 23:14:04 +0000 (23:14 +0000)
commitc02a1c03124014ad6781b1b881dbce4f114f0f1b
tree162c8e515ea3b6517b188f32484a21970144fe2a
parent453f74556976d8183b27eb78279cfa107d7aefe6
[Expression parser] Return both types and variables

Many times a user wants to access a type when there's a variable of
the same name, or a variable when there's a type of the same name.
Depending on the precise context, currently the expression parser
can fail to resolve one or the other.

This is because ClangExpressionDeclMap has logic to limit the
amount of information it searches, and that logic sometimes cuts
down the search prematurely. This patch removes some of those early
exits.

In that sense, this patch trades performance (early exit is faster)
for correctness.

I've also included two new test cases showing examples of this
behavior – as well as modifying an existing test case that gets it
wrong.

llvm-svn: 301273
lldb/packages/Python/lldbsuite/test/lang/cpp/llvm-style/Makefile [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lang/cpp/llvm-style/TestLLVMStyle.py [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lang/cpp/llvm-style/main.cc [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lang/cpp/nsimport/TestCppNsImport.py
lldb/packages/Python/lldbsuite/test/lang/cpp/symbols/Makefile [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lang/cpp/symbols/TestSymbols.py [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lang/cpp/symbols/main.cc [new file with mode: 0644]
lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp