[lldb-dev] `ClangASTSource::IgnoreName` C++ false positives

Aleksandr Urakov via lldb-dev lldb-dev at lists.llvm.org
Wed Oct 31 05:07:52 PDT 2018


Hello,

I've tried to use a check like `if (m_ast_context->getLangOpts().ObjC)
...`, but it seems that it's always true. How can we else determine here if
the Objective-C case is used? Or if we can't, where can we move `if (name
== id_name || name == Class_name)` to make it Objective-C only? What
regressions Objective-C users would have if we would remove this check from
here?

Regards,
Alex

On Wed, Oct 24, 2018 at 7:14 PM Aleksandr Urakov <
aleksandr.urakov at jetbrains.com> wrote:

> Hi all!
>
> There are two hardcoded names to ignore in the
> `ClangASTSource::IgnoreName` function, "Class" and "id", they are valid
> names for C++. It seems that they were added for the Objective-C case. But
> the problem is that when they are in locals they are blocking expressions
> evaluation.
>
> For example for the next code:
>
> int main() {
>   int x = 5;
>   int id = 7;
>   int y = 8;
>   return 0;
> }
>
> if you'll break on `return 0` and will try to `print x`, then you'll get a
> error like `no member named 'id' in namespace '$__lldb_local_vars'`.
>
> Do you have any ideas, how can we fix it?
>
> Regards,
> Alex
>


-- 
Aleksandr Urakov
Software Developer
JetBrains
http://www.jetbrains.com
The Drive to Develop
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20181031/d5928eea/attachment.html>


More information about the lldb-dev mailing list