guiandrade added a comment.
In D67022#1659155 <https://reviews.llvm.org/D67022#1659155>, @labath wrote:
> Thanks. The code looks fine to me. Losing the ability to unit test is a bit
> of a pity, but since test was pretty icky to begin with, I can't say I'm
> going to miss it too much...
> One way we could possibly test this is with a full scale test via the
> "target modules dump ast" command. So, the idea would be to run to process to
> some point, evaluate some expressions, run "target modules dump ast" and
> check the things are in the output (or that they are *not* there).
>
> It's hard to say what exactly you should be checking for, since the
> assumption is that we are not changing the behavior here, and so the existing
> tests should cover that in theory, but the "dump ast" command is a new thing,
> we don't have too many of tests for it, and so any tests you add will be
> useful, even if they're not specifically targeting the thing you fix in this
> patch. If you are able to test the thing that the previous patch fixed in
> this way, than that would be great though. I'm not 100% sure it can be done,
> but since (IIUC) the bug/problem was about parsing too many things, I would
> expect that would manifest itself in some additional entries showing up in
> the parsed ast.
I'm trying to play with that command to see if anything changes there, but I
haven't been able to do so yet. I'm using the following snippet.
// main.cpp
#include "Foo.h"
int main() { while (true) foo(); /*Breakpoint A*/ /*Breakpoint C*/ }
// Foo.h
#pragma once
void foo();
// Foo.cpp
#include "Foo.h"
namespace {
struct C { void f() {} };
struct C0 : public C {
int c00, c01, c02;
};
};
void foo() {
C0 c0; // Breakpoint B
c0.f();
}
Removing this patch and the other one, these are the GetClangDeclForDIE calls
we make https://pastebin.com/AcKGCBz7.
After applying this patch, we cut that down to https://pastebin.com/BjwmbmE0.
Nevertheless, in either case our AST ends up looking the same at breakpoint 'C'.
TranslationUnitDecl 0x55fe81dff238 <<invalid sloc>> <invalid sloc>
|-FunctionDecl 0x55fe81dffb28 <<invalid sloc>> <invalid sloc> main 'int ()'
extern
|-FunctionDecl 0x55fe81dffbf8 <<invalid sloc>> <invalid sloc> foo 'void ()'
extern
|-NamespaceDecl 0x55fe81dffc98 <<invalid sloc>> <invalid sloc>
| `-CXXRecordDecl 0x55fe81dffd20 <<invalid sloc>> <invalid sloc>
<undeserialized declarations> struct C0
`-UsingDirectiveDecl 0x55fe81dffec0 <<invalid sloc>> <invalid sloc> Namespace
0x55fe81dffc98 ''
I'm not sure if there's a way to have the AST reflect the extra calls (but I
also know very little about how that part of the code works). Can you guys
think of a piece of code that could do that?
Thanks!
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67022/new/
https://reviews.llvm.org/D67022
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits