Eric Christopher | 2789d8e | 2012-02-21 22:25:20 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -g -emit-llvm %s -o /dev/null |
Nico Weber | 450301e | 2012-02-21 03:52:05 +0000 | [diff] [blame] | 2 | |
| 3 | // This test passes if clang doesn't crash. |
| 4 | |
| 5 | template <class C> class scoped_ptr { |
| 6 | public: |
| 7 | C* operator->() const { return 0; } |
| 8 | }; |
| 9 | |
| 10 | @class NSWindow; |
| 11 | @class NSImage; |
| 12 | @interface NSWindow { |
| 13 | NSImage *_miniIcon; |
| 14 | } |
| 15 | -(id)windowController; |
| 16 | @end |
| 17 | |
| 18 | class AutomationResourceTracker { |
| 19 | public: |
| 20 | NSWindow* GetResource(int handle) { return 0; } |
| 21 | }; |
| 22 | |
| 23 | # 13 "automation/automation_window_tracker.h" |
| 24 | class AutomationWindowTracker : public AutomationResourceTracker { }; |
| 25 | |
| 26 | template<typename NST> class scoped_nsobject { }; |
| 27 | |
| 28 | @interface TabStripController{ |
| 29 | scoped_nsobject<NSImage> defaultFavicon_; |
| 30 | } |
| 31 | @end |
| 32 | |
| 33 | @interface BrowserWindowController { |
| 34 | TabStripController* tabStripController_; |
| 35 | } |
| 36 | @end |
| 37 | |
| 38 | void WindowGetViewBounds(scoped_ptr<AutomationWindowTracker> window_tracker_) { |
| 39 | NSWindow* window = window_tracker_->GetResource(42); |
| 40 | BrowserWindowController* controller = [window windowController]; |
| 41 | } |