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

//! It all starts here.
/*! It's a little odd to continue line this,
 *
 * but we need more multi-line comments. */
/// This comment comes before my other comments
/** This is a block comment that is associated with the function f. It
 *  runs for three lines.
 */
void f(int, int);

// NOT IN THE COMMENT
/// This is a BCPL comment that is associated with the function g.
/// It has only two lines.
/** But there are other blocks that are part of the comment, too. */
void g(int);

void h(int); ///< This is a member comment.


// RUN: clang-cc -emit-pch -o %t.ast %s &&

// RUN: index-test %t.ast -point-at %s:11:6 > %t &&
// RUN: grep "starts here" %t &&
// RUN: grep "block comment" %t &&

// RUN: index-test %t.ast -point-at %s:17:6 > %t &&
// RUN: grep "BCPL" %t &&
// RUN: grep "But" %t &&

// RUN: index-test %t.ast -point-at %s:19:6 > %t &&
// RUN: grep "NOT" %t | count 0 &&
// RUN: grep "member" %t
