| # In this test we compile with -gmodules but delete the ModuleCache. |
| # When LLDB tries to find a definition for NSObject (the Foo's super-class) |
| # it will fail to do so. LLDB should handle this situation gracefully. |
| # A super-class definition is required when laying out Obj-C types. |
| # |
| # REQUIRES: system-darwin |
| # |
| # RUN: split-file %s %t |
| # |
| # RUN: %clang_host %t/main.m -c -g -gmodules -fmodules -fcxx-modules \ |
| # RUN: -fmodule-map-file=%t/module.modulemap \ |
| # RUN: -fmodules-cache-path=%t/ModuleCache -o %t/main.o |
| # |
| # RUN: %clang_host %t/module.m -c -g -gmodules -fmodules -fcxx-modules \ |
| # RUN: -fmodule-map-file=%t/module.modulemap \ |
| # RUN: -fmodules-cache-path=%t/ModuleCache -o %t/module.o |
| # |
| # RUN: %clang_host %t/*.o -framework Foundation -o %t.out |
| # |
| # RUN: rm -r %t/ModuleCache |
| # |
| # RUN: %lldb -x -o "settings set interpreter.stop-command-source-on-error false" \ |
| # RUN: -s %t/commands.input %t.out -o exit 2>&1 | FileCheck %s |
| |
| #--- main.m |
| @import foo; |
| |
| int main() { |
| Foo *f = [Foo new]; |
| |
| __builtin_debugtrap(); |
| } |
| |
| #--- module.m |
| |
| #import "module.h" |
| |
| @implementation Foo |
| @end |
| |
| #--- module.h |
| |
| #import <Foundation/Foundation.h> |
| |
| @interface Foo : NSObject |
| @end |
| |
| #--- module.modulemap |
| module foo { |
| header "module.h" |
| export * |
| } |
| |
| #--- commands.input |
| |
| run |
| expression *f |
| |
| # CHECK: (lldb) expression *f |