1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only %s
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T, T I, int J>
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct adder {
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  enum {
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    value = I + J,
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    value2
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  };
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint array1[adder<long, 3, 4>::value == 7? 1 : -1];
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace PR6375 {
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  template<typename T>
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void f() {
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    enum Enum
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    {
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      enumerator1 = 0xFFFFFFF,
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      enumerator2 = enumerator1 - 1
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    };
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    int xb1 = enumerator1;
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    int xe1 = enumerator2;
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  }
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  template void f<int>();
27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesnamespace EnumScoping {
30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinestemplate <typename T>
32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclass C {
33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  enum {
34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    value = 42
35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  };
36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines};
37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid f(int i, C<int>::C c) {
39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  int value;
40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
43