xref: /petsc/src/sys/tests/linter/testDuplicates.c (revision cfd92c66bdae16b66d27a6336fb90fa54c459cc4)
1 #include <petsc/private/petscimpl.h>
2 
testDuplicatesWithChanges(PetscInt * a,PetscScalar * b)3 PetscErrorCode testDuplicatesWithChanges(PetscInt *a, PetscScalar *b)
4 {
5   /* no remove */
6   PetscAssertPointer(a, 1);
7   /* remove */
8   PetscAssertPointer(a, 1);
9   /* no remove */
10   PetscAssertPointer(b, 5);
11   /* ~should~ be removed but won't be */
12   PetscAssertPointer(b, 7);
13   PetscAssertPointer(b, 3);
14   return 0;
15 }
16 
testDuplicatesScoped(PetscInt * a,PetscScalar * b)17 PetscErrorCode testDuplicatesScoped(PetscInt *a, PetscScalar *b)
18 {
19   /* no remove */
20   PetscAssertPointer(a, 1);
21   PetscAssertPointer(b, 2);
22   /* remove */
23   PetscAssertPointer(a, 1);
24   PetscAssertPointer(b, 2);
25   {
26     /* remove */
27     PetscAssertPointer(a, 1);
28     PetscAssertPointer(b, 2);
29   }
30   return 0;
31 }
32 
testDuplicatesDoubleScoped(PetscInt * a,PetscScalar * b)33 PetscErrorCode testDuplicatesDoubleScoped(PetscInt *a, PetscScalar *b)
34 {
35   /* no remove */
36   PetscAssertPointer(a, 1);
37   PetscAssertPointer(b, 2);
38   /* remove */
39   PetscAssertPointer(a, 1);
40   PetscAssertPointer(b, 2);
41   {
42     /* remove */
43     PetscAssertPointer(a, 1);
44     PetscAssertPointer(b, 2);
45   }
46   {
47     /* remove */
48     PetscAssertPointer(a, 1);
49     PetscAssertPointer(b, 2);
50   }
51   return 0;
52 }
53 
testNoDuplicatesSwitch(PetscInt * a,PetscScalar * b,PetscBool cond)54 PetscErrorCode testNoDuplicatesSwitch(PetscInt *a, PetscScalar *b, PetscBool cond)
55 {
56   switch (cond) {
57   case PETSC_TRUE:
58     /* no remove */
59     PetscAssertPointer(a, 1);
60     PetscAssertPointer(b, 2);
61     break;
62   case PETSC_FALSE:
63     /* no remove */
64     PetscAssertPointer(a, 1);
65     PetscAssertPointer(b, 2);
66     break;
67   }
68   return 0;
69 }
70 
testDuplicatesNoChangesSwitch(PetscInt * a,PetscScalar * b,PetscBool cond)71 PetscErrorCode testDuplicatesNoChangesSwitch(PetscInt *a, PetscScalar *b, PetscBool cond)
72 {
73   /* no remove */
74   PetscAssertPointer(a, 1);
75   PetscAssertPointer(b, 2);
76   switch (cond) {
77   case PETSC_TRUE:
78     /* remove */
79     PetscAssertPointer(a, 1);
80     PetscAssertPointer(b, 2);
81     break;
82   case PETSC_FALSE:
83     /* remove */
84     PetscAssertPointer(a, 1);
85     PetscAssertPointer(b, 2);
86     break;
87   }
88   return 0;
89 }
90 
testNoDuplicatesIfElse(PetscInt * a,PetscScalar * b,PetscBool cond)91 PetscErrorCode testNoDuplicatesIfElse(PetscInt *a, PetscScalar *b, PetscBool cond)
92 {
93   if (cond) {
94     /* no remove */
95     PetscAssertPointer(a, 1);
96     PetscAssertPointer(b, 2);
97   } else {
98     /* no remove */
99     PetscAssertPointer(a, 1);
100     PetscAssertPointer(b, 2);
101   }
102   return 0;
103 }
104 
testDuplicatesIfElse(PetscInt * a,PetscScalar * b,PetscBool cond)105 PetscErrorCode testDuplicatesIfElse(PetscInt *a, PetscScalar *b, PetscBool cond)
106 {
107   /* no remove */
108   PetscAssertPointer(a, 1);
109   PetscAssertPointer(b, 2);
110   if (cond) {
111     /* remove */
112     PetscAssertPointer(a, 1);
113     PetscAssertPointer(b, 2);
114   } else {
115     /* remove */
116     PetscAssertPointer(a, 1);
117     PetscAssertPointer(b, 2);
118   }
119   return 0;
120 }
121 
testNoDuplicatesIfElseIfElse(PetscInt * a,PetscScalar * b,PetscBool cond)122 PetscErrorCode testNoDuplicatesIfElseIfElse(PetscInt *a, PetscScalar *b, PetscBool cond)
123 {
124   if (cond) {
125     /* no remove */
126     PetscAssertPointer(a, 1);
127     PetscAssertPointer(b, 2);
128   } else if (!cond) {
129     /* no remove */
130     PetscAssertPointer(a, 1);
131     PetscAssertPointer(b, 2);
132   } else {
133     /* no remove */
134     PetscAssertPointer(a, 1);
135     PetscAssertPointer(b, 2);
136   }
137   return 0;
138 }
139