File: show-template-tree.C

package info (click to toggle)
gcc-arm-none-eabi 15%3A8-2019-q3-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 571,828 kB
  • sloc: ansic: 2,937,651; cpp: 881,644; ada: 597,189; makefile: 65,528; asm: 56,499; xml: 46,621; exp: 24,747; sh: 19,684; python: 7,256; pascal: 4,370; awk: 3,497; perl: 2,695; yacc: 316; ml: 285; f90: 234; lex: 198; objc: 194; haskell: 119
file content (51 lines) | stat: -rw-r--r-- 1,756 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// { dg-options "-fdiagnostics-show-template-tree" }

template<typename> struct vector {};
template<typename, typename> struct map {};
template<int> struct arr {};

void fn_1(vector<int>);
void fn_2(map<int, int>);
void fn_3(vector<map<int, float> >);
void takes_arr_10 (arr<10>);

void test ()
{
  fn_1 (vector<int> ());
  fn_1 (42); // { dg-error "could not convert '42' from 'int' to 'vector<int>'" }
  fn_1 (vector<double> ()); // { dg-error "could not convert .* from 'vector<double>' to 'vector<int>'" }
  /* { dg-begin-multiline-output "" }
  vector<
    [double != int]>
     { dg-end-multiline-output "" } */
  fn_1 (map<int, int> ()); // { dg-error "could not convert .* from 'map<int, int>' to 'vector<int>'" }

  fn_2 (map<int, int>());
  fn_2 (map<int, double>());  // { dg-error "could not convert .* from 'map<.\\.\\.\\..,double>. to .map<.\\.\\.\\..,int>'" }
  /* { dg-begin-multiline-output "" }
  map<
    [...],
    [double != int]>
     { dg-end-multiline-output "" } */
  fn_2 (map<double, double>());  // { dg-error "could not convert .* from .map<double,double>. to .map<int,int>." }
  /* { dg-begin-multiline-output "" }
  map<
    [double != int],
    [double != int]>
     { dg-end-multiline-output "" } */

  fn_3 (vector<map<int, float> >());
  fn_3 (vector<map<int, double> >());  // { dg-error "could not convert .* from 'vector<map<.\\.\\.\\..,double>>' to 'vector<map<.\\.\\.\\..,float>>'" }
  /* { dg-begin-multiline-output "" }
  vector<
    map<
      [...],
      [double != float]>>
     { dg-end-multiline-output "" } */

  takes_arr_10 (arr<5>()); // { dg-error "could not convert '.*' from 'arr<5>' to 'arr<10>'" }
  /* { dg-begin-multiline-output "" }
  arr<
    [5 != 10]>
     { dg-end-multiline-output "" } */
}