## Does not work on windows (yet?) PDB debug-info likely does something wrong
## with the header files.
# XFAIL: target-windows

## Test that `list header.h:<line>` works correctly when header is available.
## 
# RUN: split-file %s %t

# RUN: %clang_host -g %t/main_with_inlined.cc %t/foo.cc -o %t/main_with_inlined.out
# RUN: %clang_host -g %t/main_no_inlined.cc %t/foo.cc -o %t/main_no_inlined.out

# RUN: %lldb %t/main_with_inlined.out -o "list foo.h:2" -o "exit" 2>&1 \
# RUN:   | FileCheck %s --check-prefix=CHECK-INLINED

## Would be nice if this listed the header too - but probably not something
## we want to support right now.
# RUN: echo quit | %lldb %t/main_no_inlined.out -o "list foo.h:2" -o "exit" 2>&1 \
# RUN:   | FileCheck %s --check-prefix=CHECK-NO-INLINED

# CHECK-INLINED: 2      extern int* ptr;
# CHECK-INLINED: 3   	void f(int x);
# CHECK-INLINED: 4   	
# CHECK-INLINED: 5   	inline void g(int x) {
# CHECK-INLINED: 6   	  *ptr = x; // should crash here
# CHECK-INLINED: 7   	}

# CHECK-NO-INLINED: error: Could not find source file "foo.h".

#--- foo.h
// foo.h
extern int* ptr;
void f(int x);

inline void g(int x) {
  *ptr = x; // should crash here
}

#--- foo.cc
#include "foo.h"

int* ptr;

void f(int x) {
  *ptr = x;
}

#--- main_with_inlined.cc
#include "foo.h"

int main() {
  g(123); // Call the inlined function
  return 0;
}

#--- main_no_inlined.cc
#include "foo.h"

int main() {
  f(234);
  return 0;
}
