aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
blob: a315d208cab7483d3cb786e355a2c387d73521f5 (plain)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/* { dg-do compile } */
/* { dg-options "-fdiagnostics-format=json" } */

#include <stddef.h>
#include <stdlib.h>

/* Minimal reimplementation of cpython API.  */
typedef struct PyObject {} PyObject;
extern int PyArg_ParseTuple (PyObject *args, const char *fmt, ...);
extern PyObject *PyList_New (int);
extern PyObject *PyLong_FromLong(long);
extern void PyList_Append(PyObject *list, PyObject *item);

PyObject *
make_a_list_of_random_ints_badly(PyObject *self,
				 PyObject *args)
{
  PyObject *list, *item;
  long count, i;

  if (!PyArg_ParseTuple(args, "i", &count)) {
    return NULL;
  }

  list = PyList_New(0);
	
  for (i = 0; i < count; i++) {
    item = PyLong_FromLong(random());
    PyList_Append(list, item);
  }
  
  return list;
}

/* { dg-begin-multiline-output "" }
[{"kind": "error",
  "message": "passing NULL as argument 1 to 'PyList_Append' which requires a non-NULL parameter",
  "children": [],
  "column-origin": 1,
  "locations": [{"caret": {"file": "
                           "line": 29,
                           "display-column": 5,
                           "byte-column": 5,
                           "column": 5},
                 "finish": {"file": "
                            "line": 29,
                            "display-column": 29,
                            "byte-column": 29,
                            "column": 29}}],
  "path": [{"location": {"file": "
                         "line": 25,
                         "display-column": 10,
                         "byte-column": 10,
                         "column": 10},
            "description": "when 'PyList_New' fails, returning NULL",
            "function": "make_a_list_of_random_ints_badly",
            "depth": 0},
           {"location": {"file": "
                         "line": 27,
                         "display-column": 17,
                         "byte-column": 17,
                         "column": 17},
            "description": "when 'i < count'",
            "function": "make_a_list_of_random_ints_badly",
            "depth": 0},
           {"location": {"file": "
                         "line": 29,
                         "display-column": 5,
                         "byte-column": 5,
                         "column": 5},
            "description": "when calling 'PyList_Append', passing NULL from (1) as argument 1",
            "function": "make_a_list_of_random_ints_badly",
            "depth": 0}],
  "escape-source": false}]
{ dg-end-multiline-output "" } */