// Run lines are sensitive to line numbers and come below the code.

int top_var;

void top_func_decl(int param1);

void top_func_def(int param2) {
  int local_var1;
  for (int for_var = 100; for_var < 500; ++for_var) {
    int local_var2 = for_var + 1;
  }
}

struct S {
  int field_var;
};


// RUN: clang-cc -emit-pch %s -o %t.ast &&
// RUN: index-test %t.ast -point-at %s:3:8 | grep top_var &&
// RUN: index-test %t.ast -point-at %s:5:15 | grep top_func_decl &&
// RUN: index-test %t.ast -point-at %s:5:25 | grep param1 &&
// RUN: index-test %t.ast -point-at %s:7:17 | grep top_func_def &&
// RUN: index-test %t.ast -point-at %s:7:23 | grep param2 &&
// RUN: index-test %t.ast -point-at %s:8:10 | grep local_var1 &&
// RUN: index-test %t.ast -point-at %s:9:15 | grep for_var &&

// RUN: index-test %t.ast -point-at %s:9:43 > %t &&
// RUN: grep top_func_def %s &&
// RUN: grep '++for_var' %s &&

// RUN: index-test %t.ast -point-at %s:10:9 | grep local_var2 &&

// RUN: index-test %t.ast -point-at %s:10:30 > %t &&
// RUN: grep local_var2 %t &&
// RUN: grep 'for_var + 1' %t &&

// fields test.
// RUN: index-test %t.ast -point-at %s:15:10 | grep field_var
