Skip to content

Commit e7283af

Browse files
authored
Merge pull request #2531 from dbartol/dbartol/MissingToString
C++: Fix `toString()` predicates that don't hold
2 parents 339066c + 2408230 commit e7283af

File tree

12 files changed

+17
-1
lines changed

12 files changed

+17
-1
lines changed

cpp/ql/src/semmle/code/cpp/NameQualifiers.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,6 @@ library class SpecialNameQualifyingElement extends NameQualifyingElement,
157157
@specialnamequalifyingelement {
158158
/** Gets the name of this special qualifying element. */
159159
override string getName() { specialnamequalifyingelements(underlyingElement(this), result) }
160+
161+
override string toString() { result = getName() }
160162
}

cpp/ql/src/semmle/code/cpp/Preprocessor.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,9 @@ class PreprocessorUndef extends PreprocessorDirective, @ppd_undef {
214214
* A C/C++ preprocessor `#pragma` directive.
215215
*/
216216
class PreprocessorPragma extends PreprocessorDirective, @ppd_pragma {
217-
override string toString() { result = "#pragma " + this.getHead() }
217+
override string toString() {
218+
if exists(this.getHead()) then result = "#pragma " + this.getHead() else result = "#pragma"
219+
}
218220
}
219221

220222
/**

cpp/ql/test/library-tests/CPP-205/elements.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
| CPP-205.cpp:8:3:8:15 | return ... | |
2727
| CPP-205.cpp:8:10:8:11 | call to fn | |
2828
| CPP-205.cpp:8:13:8:13 | 0 | |
29+
| file://:0:0:0:0 | __super | |
2930
| file://:0:0:0:0 | __va_list_tag | |
3031
| file://:0:0:0:0 | operator= | function __va_list_tag::operator=(__va_list_tag &&) -> __va_list_tag & |
3132
| file://:0:0:0:0 | operator= | function __va_list_tag::operator=(const __va_list_tag &) -> __va_list_tag & |

cpp/ql/test/library-tests/clang_ms/element.expected

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
| clang_ms.cpp:11:5:11:13 | asm statement |
2424
| clang_ms.cpp:12:1:12:1 | return ... |
2525
| clang_ms.cpp:16:1:16:19 | // Test for CPP-184 |
26+
| clang_ms.cpp:17:1:17:32 | #pragma |
27+
| clang_ms.cpp:18:1:18:31 | #pragma |
2628
| file://:0:0:0:0 | |
2729
| file://:0:0:0:0 | (global namespace) |
2830
| file://:0:0:0:0 | _Complex __float128 |
@@ -48,6 +50,7 @@
4850
| file://:0:0:0:0 | __ptr32 |
4951
| file://:0:0:0:0 | __ptr64 |
5052
| file://:0:0:0:0 | __sptr |
53+
| file://:0:0:0:0 | __super |
5154
| file://:0:0:0:0 | __uptr |
5255
| file://:0:0:0:0 | __va_list_tag |
5356
| file://:0:0:0:0 | __va_list_tag & |

cpp/ql/test/library-tests/conditions/elements.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
| file://:0:0:0:0 | __ptr32 |
2828
| file://:0:0:0:0 | __ptr64 |
2929
| file://:0:0:0:0 | __sptr |
30+
| file://:0:0:0:0 | __super |
3031
| file://:0:0:0:0 | __uptr |
3132
| file://:0:0:0:0 | __va_list_tag |
3233
| file://:0:0:0:0 | __va_list_tag & |

cpp/ql/test/library-tests/lambdas/captures/elements.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@
201201
| file://:0:0:0:0 | ..(*)(..) |
202202
| file://:0:0:0:0 | ..(*)(..) |
203203
| file://:0:0:0:0 | ..(..) |
204+
| file://:0:0:0:0 | __super |
204205
| file://:0:0:0:0 | __va_list_tag |
205206
| file://:0:0:0:0 | __va_list_tag & |
206207
| file://:0:0:0:0 | __va_list_tag && |

cpp/ql/test/library-tests/macros/inmacroexpansion/inmacroexpansion.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
| file://:0:0:0:0 | __super | false |
12
| file://:0:0:0:0 | __va_list_tag | false |
23
| file://:0:0:0:0 | operator= | false |
34
| file://:0:0:0:0 | operator= | false |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import cpp
22

33
from Expr e
4+
where exists(e.toString())
45
select e, e.getType()

cpp/ql/test/library-tests/templates/CPP-204/element.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
| file://:0:0:0:0 | X |
88
| file://:0:0:0:0 | X |
99
| file://:0:0:0:0 | Y |
10+
| file://:0:0:0:0 | __super |
1011
| file://:0:0:0:0 | __va_list_tag |
1112
| file://:0:0:0:0 | __va_list_tag & |
1213
| file://:0:0:0:0 | __va_list_tag && |

cpp/ql/test/library-tests/templates/instantiations_functions/elements.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
| file://:0:0:0:0 | __ptr32 |
3333
| file://:0:0:0:0 | __ptr64 |
3434
| file://:0:0:0:0 | __sptr |
35+
| file://:0:0:0:0 | __super |
3536
| file://:0:0:0:0 | __uptr |
3637
| file://:0:0:0:0 | __va_list_tag |
3738
| file://:0:0:0:0 | __va_list_tag & |

0 commit comments

Comments
 (0)