1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 -Wunused
2cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith
3cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith// PR9968: We used to warn that __range is unused in a dependent for-range.
4cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith
5cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smithtemplate <typename T>
6cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith  struct Vector {
7cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith    void doIt() {
8e3499cae8e5323ac553ad56977bf1cd42b9a5a35Richard Smith      int a; // expected-warning {{unused variable 'a'}}
9cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith
10dc7a4f5d7a7e3b60d4dc4a80338d7a2728540998Richard Smith      for (auto& e : elements) // expected-warning {{unused variable 'e'}}
11cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith        ;
12cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith    }
13cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith
14cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith    T elements[10];
15cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith  };
16cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith
17cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith
18cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smithint main(int, char**) {
19cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith  Vector<int>    vector;
20dc7a4f5d7a7e3b60d4dc4a80338d7a2728540998Richard Smith  vector.doIt(); // expected-note {{here}}
21cd6f36693ed40cef8c8639c04438d865187c1f73Richard Smith}
22