Again I think this requires DWARF. In theory we could use the PDB
file but I suspect that PDB file is in fact empty, because we
tell clang to produce DWARF.
So on Windows, first thing is we cannot run the expressions:
(lldb) expr A(); A1(); BA1(); AB();
error: <user expression 1>:1:1: 'A' has unknown return type; cast the call to its declared return type
1 | A(); A1(); BA1(); AB();
| ^~~
...and so on...
And then the AST is all unknown functions:
(lldb) image dump ast
Dumping clang ast for 4 modules.
TranslationUnitDecl 0x2b3bb591870 <<invalid sloc>> <invalid sloc> <undeserialized declarations>
|-FunctionDecl 0x2b3bb592970 <<invalid sloc>> <invalid sloc> mainCRTStartup 'unsigned long (void *)'
| `-ParmVarDecl 0x2b3bb592a20 <<invalid sloc>> <invalid sloc> 'void *'
`-FunctionDecl 0x2b3bb592ad8 <<invalid sloc>> <invalid sloc> __scrt_common_main_seh 'int ()' static
So I'm just going to disable this test on Windows, it's pretty
clear why it doesn't work and we have no plans to make it work.
75 lines
1.6 KiB
Plaintext
75 lines
1.6 KiB
Plaintext
# Test `image dump ast` command.
|
|
|
|
# DWARF is required to properly create the AST, and on Windows that is discarded
|
|
# and we only have PDB which doesn't work for this test.
|
|
# UNSUPPORTED: system-windows
|
|
|
|
# RUN: split-file %s %t
|
|
# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out
|
|
# RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \
|
|
# RUN: | FileCheck %s
|
|
|
|
#--- main.cpp
|
|
|
|
void A() {}
|
|
void A1() {}
|
|
void BA1() {}
|
|
void AB() {}
|
|
|
|
int main() {
|
|
A();
|
|
A1();
|
|
BA1();
|
|
AB();
|
|
}
|
|
|
|
#--- commands.input
|
|
|
|
break set -n main
|
|
run
|
|
expr A(); A1(); BA1(); AB()
|
|
|
|
image dump ast
|
|
|
|
# CHECK: image dump ast
|
|
# CHECK-DAG: FunctionDecl {{.*}} main
|
|
# CHECK-DAG: FunctionDecl {{.*}} A
|
|
# CHECK-DAG: FunctionDecl {{.*}} A1
|
|
# CHECK-DAG: FunctionDecl {{.*}} BA1
|
|
# CHECK-DAG: FunctionDecl {{.*}} AB
|
|
|
|
image dump ast --filter A
|
|
|
|
# CHECK: image dump ast --filter A
|
|
# CHECK: Dumping A
|
|
# CHECK-NOT: FunctionDecl {{.*}} main
|
|
# CHECK-DAG: FunctionDecl {{.*}} A1
|
|
# CHECK-DAG: FunctionDecl {{.*}} BA1
|
|
# CHECK-DAG: FunctionDecl {{.*}} AB
|
|
|
|
image dump ast --filter A1
|
|
|
|
# CHECK: image dump ast --filter A1
|
|
# CHECK: Dumping A
|
|
# CHECK-NOT: FunctionDecl {{.*}} main
|
|
# CHECK-NOT: FunctionDecl {{.*}} AB
|
|
# CHECK-DAG: FunctionDecl {{.*}} A1
|
|
# CHECK-DAG: FunctionDecl {{.*}} BA1
|
|
|
|
image dump ast --filter ""
|
|
|
|
# CHECK: image dump ast --filter ""
|
|
# CHECK-DAG: FunctionDecl {{.*}} main
|
|
# CHECK-DAG: FunctionDecl {{.*}} AB
|
|
# CHECK-DAG: FunctionDecl {{.*}} A1
|
|
# CHECK-DAG: FunctionDecl {{.*}} BA1
|
|
|
|
image dump ast -f AB
|
|
|
|
# CHECK: image dump ast -f AB
|
|
# CHECK: Dumping AB
|
|
# CHECK-NOT: FunctionDecl {{.*}} main
|
|
# CHECK-NOT: FunctionDecl {{.*}} A1
|
|
# CHECK-NOT: FunctionDecl {{.*}} BA1
|
|
# CHECK: FunctionDecl {{.*}} AB
|