mirror of
https://github.com/github/codeql.git
synced 2026-05-27 09:31:30 +02:00
Compare commits
5 Commits
smowton/ad
...
redsun82/r
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1968f6e436 | ||
|
|
ee61fdcb6f | ||
|
|
a444bbc080 | ||
|
|
9b6f0da1c1 | ||
|
|
c1df8d0e13 |
@@ -5,8 +5,7 @@ codeql_pkg_files(
|
||||
srcs = [
|
||||
"codeql-extractor.yml",
|
||||
"//:LICENSE",
|
||||
],
|
||||
exes = glob(["tools/**"]),
|
||||
] + glob(["tools/**"]),
|
||||
strip_prefix = strip_prefix.from_pkg(),
|
||||
visibility = ["//actions:__pkg__"],
|
||||
)
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* Fixed an issue where the `getBufferSize` predicate in `commons/Buffer.qll` was returning results for references inside `offsetof` expressions, which are not accesses to a buffer.
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* Modified the `getBufferSize` predicate in `commons/Buffer.qll` to be more tolerant in some cases involving member variables in a larger struct or class.
|
||||
@@ -71,7 +71,7 @@ private int getSize(VariableAccess va) {
|
||||
result = t.getSize()
|
||||
)
|
||||
or
|
||||
exists(Class c, int trueSize |
|
||||
exists(Class c |
|
||||
// Otherwise, we find the "outermost" object and compute the size
|
||||
// as the difference between the size of the type of the "outermost
|
||||
// object" and the offset of the field relative to that type.
|
||||
@@ -91,9 +91,7 @@ private int getSize(VariableAccess va) {
|
||||
// of `y` relative to the type `S2` (i.e., `4`). So the size of the
|
||||
// buffer is `12 - 4 = 8`.
|
||||
c = getRootType(va) and
|
||||
// we calculate the size based on the last field, to avoid including any padding after it
|
||||
trueSize = max(Field f | | f.getOffsetInClass(c) + f.getUnspecifiedType().getSize()) and
|
||||
result = trueSize - v.(Field).getOffsetInClass(c)
|
||||
result = c.getSize() - v.(Field).getOffsetInClass(c)
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -107,16 +105,9 @@ private int getSize(VariableAccess va) {
|
||||
private int isSource(Expr bufferExpr, Element why) {
|
||||
exists(Variable bufferVar | bufferVar = bufferExpr.(VariableAccess).getTarget() |
|
||||
// buffer is a fixed size array
|
||||
exists(bufferVar.getUnspecifiedType().(ArrayType).getSize()) and
|
||||
result =
|
||||
unique(int size | // more generous than .getSize() itself, when the array is a class field or similar.
|
||||
size = getSize(bufferExpr)
|
||||
|
|
||||
size
|
||||
) and
|
||||
result = bufferVar.getUnspecifiedType().(ArrayType).getSize() and
|
||||
why = bufferVar and
|
||||
not memberMayBeVarSize(_, bufferVar) and
|
||||
not exists(BuiltInOperationBuiltInOffsetOf offsetof | offsetof.getAChild*() = bufferExpr) and
|
||||
// zero sized arrays are likely to have special usage, for example
|
||||
// behaving a bit like a 'union' overlapping other fields.
|
||||
not result = 0
|
||||
|
||||
@@ -5,9 +5,8 @@
|
||||
* buffer.
|
||||
* @kind problem
|
||||
* @id cpp/overflow-buffer
|
||||
* @problem.severity warning
|
||||
* @problem.severity recommendation
|
||||
* @security-severity 9.3
|
||||
* @precision medium
|
||||
* @tags security
|
||||
* external/cwe/cwe-119
|
||||
* external/cwe/cwe-121
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* The query "Call to memory access function may overflow buffer" (`cpp/overflow-buffer`) has been added to the security-extended query suite. The query detects a range of buffer overflow and underflow issues.
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* Due to changes in libraries the query "Static array access may cause overflow" (`cpp/static-buffer-overflow`) will no longer report cases where multiple fields of a struct or class are written with a single `memset` or similar operation.
|
||||
@@ -1,3 +1,5 @@
|
||||
| tests.cpp:45:9:45:14 | call to memcpy | This 'memcpy' operation accesses 32 bytes but the $@ is only 16 bytes. | tests.cpp:32:10:32:18 | charFirst | destination buffer |
|
||||
| tests.cpp:60:9:60:14 | call to memcpy | This 'memcpy' operation accesses 32 bytes but the $@ is only 16 bytes. | tests.cpp:32:10:32:18 | charFirst | destination buffer |
|
||||
| tests.cpp:171:9:171:14 | call to memcpy | This 'memcpy' operation accesses 100 bytes but the $@ is only 50 bytes. | tests.cpp:164:20:164:25 | call to malloc | destination buffer |
|
||||
| tests.cpp:172:9:172:19 | access to array | This array indexing operation accesses byte offset 99 but the $@ is only 50 bytes. | tests.cpp:164:20:164:25 | call to malloc | array |
|
||||
| tests.cpp:192:9:192:14 | call to memcpy | This 'memcpy' operation accesses 100 bytes but the $@ is only 50 bytes. | tests.cpp:181:10:181:22 | dataBadBuffer | destination buffer |
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
| tests.cpp:45:51:45:72 | sizeof(<expr>) | Potential buffer-overflow: 'charFirst' has size 16 not 32. |
|
||||
| tests.cpp:60:52:60:74 | sizeof(<expr>) | Potential buffer-overflow: 'charFirst' has size 16 not 32. |
|
||||
|
||||
@@ -42,7 +42,7 @@ void CWE121_Stack_Based_Buffer_Overflow__char_type_overrun_memcpy_01_bad()
|
||||
/* Print the initial block pointed to by structCharVoid.voidSecond */
|
||||
printLine((char *)structCharVoid.voidSecond);
|
||||
/* FLAW: Use the sizeof(structCharVoid) which will overwrite the pointer voidSecond */
|
||||
memcpy(structCharVoid.charFirst, SRC_STR, sizeof(structCharVoid)); // [NOT DETECTED]
|
||||
memcpy(structCharVoid.charFirst, SRC_STR, sizeof(structCharVoid));
|
||||
structCharVoid.charFirst[(sizeof(structCharVoid.charFirst)/sizeof(char))-1] = '\0'; /* null terminate the string */
|
||||
printLine((char *)structCharVoid.charFirst);
|
||||
printLine((char *)structCharVoid.voidSecond);
|
||||
@@ -57,7 +57,7 @@ void CWE122_Heap_Based_Buffer_Overflow__char_type_overrun_memcpy_01_bad()
|
||||
/* Print the initial block pointed to by structCharVoid->voidSecond */
|
||||
printLine((char *)structCharVoid->voidSecond);
|
||||
/* FLAW: Use the sizeof(*structCharVoid) which will overwrite the pointer y */
|
||||
memcpy(structCharVoid->charFirst, SRC_STR, sizeof(*structCharVoid)); // [NOT DETECTED]
|
||||
memcpy(structCharVoid->charFirst, SRC_STR, sizeof(*structCharVoid));
|
||||
structCharVoid->charFirst[(sizeof(structCharVoid->charFirst)/sizeof(char))-1] = '\0'; /* null terminate the string */
|
||||
printLine((char *)structCharVoid->charFirst);
|
||||
printLine((char *)structCharVoid->voidSecond);
|
||||
@@ -292,7 +292,7 @@ namespace CWE122_Heap_Based_Buffer_Overflow__cpp_CWE193_wchar_t_ncpy_01
|
||||
delete [] data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void goodG2B()
|
||||
{
|
||||
wchar_t * data;
|
||||
@@ -459,7 +459,7 @@ void CWE122_Heap_Based_Buffer_Overflow__cpp_CWE805_wchar_t_ncpy_01_bad()
|
||||
#ifdef _WIN32
|
||||
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format, ...);
|
||||
#define SNPRINTF _snwprintf
|
||||
#else
|
||||
#else
|
||||
int snprintf(char *s, size_t n, const char *format, ...);
|
||||
int swprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format, ...);
|
||||
//#define SNPRINTF snprintf --- original code; using snprintf appears to be a mistake in samate?
|
||||
@@ -485,14 +485,14 @@ void CWE122_Heap_Based_Buffer_Overflow__cpp_CWE805_wchar_t_snprintf_01_bad()
|
||||
}
|
||||
|
||||
/* classes used in some test cases as a custom type */
|
||||
class TwoIntsClass
|
||||
class TwoIntsClass
|
||||
{
|
||||
public: // Needed to access variables from label files
|
||||
int intOne;
|
||||
int intTwo;
|
||||
};
|
||||
|
||||
class OneIntClass
|
||||
class OneIntClass
|
||||
{
|
||||
public: // Needed to access variables from label files
|
||||
int intOne;
|
||||
@@ -636,7 +636,7 @@ void CWE122_Heap_Based_Buffer_Overflow__cpp_CWE805_wchar_t_snprintf_31_bad()
|
||||
|
||||
int rand(void);
|
||||
|
||||
int globalReturnsTrueOrFalse()
|
||||
int globalReturnsTrueOrFalse()
|
||||
{
|
||||
return (rand() % 2);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
| tests.cpp:1055:2:1055:8 | call to strncpy | This 'call to strncpy' operation is limited to 131 bytes but the destination is only 128 bytes. |
|
||||
| tests.cpp:1057:2:1057:8 | call to strncpy | This 'call to strncpy' operation is limited to 131 bytes but the destination is only 64 bytes. |
|
||||
| var_size_struct.cpp:73:3:73:9 | call to strncpy | This 'call to strncpy' operation is limited to 1025 bytes but the destination is only 1024 bytes. |
|
||||
| var_size_struct.cpp:103:3:103:9 | call to strncpy | This 'call to strncpy' operation is limited to 129 bytes but the destination is only 128 bytes. |
|
||||
|
||||
@@ -17,81 +17,69 @@
|
||||
| tests.cpp:285:3:285:8 | call to memset | This 'memset' operation accesses 128 bytes but the $@ is only 64 bytes. | tests.cpp:283:12:283:23 | new[] | destination buffer |
|
||||
| tests.cpp:292:3:292:8 | call to memset | This 'memset' operation accesses 11 bytes but the $@ is only 10 bytes. | tests.cpp:289:8:289:12 | array | destination buffer |
|
||||
| tests.cpp:310:2:310:7 | call to memset | This 'memset' operation accesses 21 bytes but the $@ is only 20 bytes. | tests.cpp:301:10:301:14 | myVar | destination buffer |
|
||||
| tests.cpp:312:2:312:7 | call to memset | This 'memset' operation accesses 17 bytes but the $@ is only 16 bytes. | tests.cpp:298:7:298:12 | buffer | destination buffer |
|
||||
| tests.cpp:314:2:314:7 | call to memset | This 'memset' operation accesses 8 bytes but the $@ is only 4 bytes. | tests.cpp:299:6:299:10 | field | destination buffer |
|
||||
| tests.cpp:348:2:348:14 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:351:2:351:14 | access to array | This array indexing operation accesses byte offset 10 but the $@ is only 10 bytes. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:352:17:352:29 | access to array | This array indexing operation accesses byte offset 10 but the $@ is only 10 bytes. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:354:2:354:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:343:6:343:13 | intArray | array |
|
||||
| tests.cpp:357:2:357:13 | access to array | This array indexing operation accesses byte offset 43 but the $@ is only 40 bytes. | tests.cpp:343:6:343:13 | intArray | array |
|
||||
| tests.cpp:358:16:358:27 | access to array | This array indexing operation accesses byte offset 43 but the $@ is only 40 bytes. | tests.cpp:343:6:343:13 | intArray | array |
|
||||
| tests.cpp:360:2:360:16 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:344:11:344:21 | structArray | array |
|
||||
| tests.cpp:363:2:363:16 | access to array | This array indexing operation accesses byte offset 219 but the $@ is only 200 bytes. | tests.cpp:344:11:344:21 | structArray | array |
|
||||
| tests.cpp:364:25:364:39 | access to array | This array indexing operation accesses byte offset 219 but the $@ is only 200 bytes. | tests.cpp:344:11:344:21 | structArray | array |
|
||||
| tests.cpp:367:23:367:34 | access to array | This array indexing operation accesses byte offset 43 but the $@ is only 40 bytes. | tests.cpp:343:6:343:13 | intArray | array |
|
||||
| tests.cpp:369:2:369:13 | access to array | This array indexing operation accesses a negative index -2 on the $@. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:370:2:370:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:374:2:374:13 | access to array | This array indexing operation accesses byte offset 10 but the $@ is only 10 bytes. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:394:3:394:13 | access to array | This array indexing operation accesses byte offset 101 but the $@ is only 100 bytes. | tests.cpp:389:47:389:52 | call to malloc | array |
|
||||
| tests.cpp:397:3:397:13 | access to array | This array indexing operation accesses byte offset 101 but the $@ is only 101 bytes. | tests.cpp:390:47:390:52 | call to malloc | array |
|
||||
| tests.cpp:467:3:467:24 | access to array | This array indexing operation accesses a negative index -3 on the $@. | tests.cpp:465:7:465:14 | intArray | array |
|
||||
| tests.cpp:475:3:475:11 | access to array | This array indexing operation accesses a negative index -21 on the $@. | tests.cpp:471:7:471:11 | multi | array |
|
||||
| tests.cpp:477:3:477:11 | access to array | This array indexing operation accesses a negative index -21 on the $@. | tests.cpp:471:7:471:11 | multi | array |
|
||||
| tests.cpp:480:3:480:11 | access to array | This array indexing operation accesses byte offset 639 but the $@ is only 400 bytes. | tests.cpp:471:7:471:11 | multi | array |
|
||||
| tests.cpp:482:3:482:11 | access to array | This array indexing operation accesses byte offset 639 but the $@ is only 400 bytes. | tests.cpp:471:7:471:11 | multi | array |
|
||||
| tests.cpp:497:2:497:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:490:7:490:12 | buffer | array |
|
||||
| tests.cpp:498:2:498:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:490:7:490:12 | buffer | array |
|
||||
| tests.cpp:502:2:502:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:490:7:490:12 | buffer | array |
|
||||
| tests.cpp:508:2:508:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:494:21:494:26 | call to malloc | array |
|
||||
| tests.cpp:512:2:512:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:495:21:495:26 | call to malloc | array |
|
||||
| tests.cpp:540:3:540:8 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:523:15:523:20 | call to malloc | destination buffer |
|
||||
| tests.cpp:540:3:540:8 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:531:16:531:21 | call to malloc | destination buffer |
|
||||
| tests.cpp:562:6:562:10 | call to fread | This 'fread' operation may access 101 bytes but the $@ is only 100 bytes. | tests.cpp:553:7:553:16 | charBuffer | destination buffer |
|
||||
| tests.cpp:567:6:567:10 | call to fread | This 'fread' operation may access 400 bytes but the $@ is only 100 bytes. | tests.cpp:553:7:553:16 | charBuffer | destination buffer |
|
||||
| tests.cpp:590:6:590:15 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:586:7:586:12 | buffer | array |
|
||||
| tests.cpp:598:7:598:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:586:7:586:12 | buffer | array |
|
||||
| tests.cpp:658:6:658:15 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:654:7:654:12 | buffer | array |
|
||||
| tests.cpp:666:7:666:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:654:7:654:12 | buffer | array |
|
||||
| tests.cpp:729:3:729:8 | call to memset | This 'memset' operation accesses 24 bytes but the $@ is only 8 bytes. | tests.cpp:714:16:714:16 | c | destination buffer |
|
||||
| tests.cpp:733:3:733:8 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 8 bytes. | tests.cpp:714:16:714:16 | c | destination buffer |
|
||||
| tests.cpp:737:3:737:8 | call to memset | This 'memset' operation accesses 24 bytes but the $@ is only 16 bytes. | tests.cpp:713:16:713:16 | b | destination buffer |
|
||||
| tests.cpp:748:2:748:7 | call to memset | This 'memset' operation accesses 24 bytes but the $@ is only 8 bytes. | tests.cpp:714:16:714:16 | c | destination buffer |
|
||||
| tests.cpp:774:5:774:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:756:20:756:22 | b_1 | destination buffer |
|
||||
| tests.cpp:777:5:777:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:756:20:756:22 | b_1 | destination buffer |
|
||||
| tests.cpp:781:5:781:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 8 bytes. | tests.cpp:757:20:757:22 | c_1 | destination buffer |
|
||||
| tests.cpp:782:5:782:10 | call to memset | This 'memset' operation accesses 12 bytes but the $@ is only 8 bytes. | tests.cpp:757:20:757:22 | c_1 | destination buffer |
|
||||
| tests.cpp:784:5:784:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 8 bytes. | tests.cpp:757:20:757:22 | c_1 | destination buffer |
|
||||
| tests.cpp:785:5:785:10 | call to memset | This 'memset' operation accesses 12 bytes but the $@ is only 8 bytes. | tests.cpp:757:20:757:22 | c_1 | destination buffer |
|
||||
| tests.cpp:795:5:795:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:761:20:761:22 | b_2 | destination buffer |
|
||||
| tests.cpp:798:5:798:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:761:20:761:22 | b_2 | destination buffer |
|
||||
| tests.cpp:816:5:816:10 | call to memset | This 'memset' operation accesses 8 bytes but the $@ is only 4 bytes. | tests.cpp:811:16:811:16 | b | destination buffer |
|
||||
| tests.cpp:843:5:843:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 16 bytes. | tests.cpp:822:16:822:16 | b | destination buffer |
|
||||
| tests.cpp:846:5:846:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 16 bytes. | tests.cpp:822:16:822:16 | b | destination buffer |
|
||||
| tests.cpp:848:5:848:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 16 bytes. | tests.cpp:822:16:822:16 | b | destination buffer |
|
||||
| tests.cpp:851:5:851:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 12 bytes. | tests.cpp:823:16:823:16 | c | destination buffer |
|
||||
| tests.cpp:852:5:852:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:823:16:823:16 | c | destination buffer |
|
||||
| tests.cpp:854:5:854:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 12 bytes. | tests.cpp:823:16:823:16 | c | destination buffer |
|
||||
| tests.cpp:856:5:856:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 12 bytes. | tests.cpp:823:16:823:16 | c | destination buffer |
|
||||
| tests.cpp:867:5:867:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 8 bytes. | tests.cpp:828:16:828:16 | x | destination buffer |
|
||||
| tests.cpp:868:5:868:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 8 bytes. | tests.cpp:828:16:828:16 | x | destination buffer |
|
||||
| tests.cpp:869:5:869:10 | call to memset | This 'memset' operation accesses 12 bytes but the $@ is only 8 bytes. | tests.cpp:828:16:828:16 | x | destination buffer |
|
||||
| tests.cpp:870:5:870:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 8 bytes. | tests.cpp:828:16:828:16 | x | destination buffer |
|
||||
| tests.cpp:872:5:872:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 8 bytes. | tests.cpp:828:16:828:16 | x | destination buffer |
|
||||
| tests.cpp:883:5:883:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 4 bytes. | tests.cpp:833:12:833:12 | u | destination buffer |
|
||||
| tests.cpp:884:5:884:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 4 bytes. | tests.cpp:833:12:833:12 | u | destination buffer |
|
||||
| tests.cpp:885:5:885:10 | call to memset | This 'memset' operation accesses 12 bytes but the $@ is only 4 bytes. | tests.cpp:833:12:833:12 | u | destination buffer |
|
||||
| tests.cpp:886:5:886:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 4 bytes. | tests.cpp:833:12:833:12 | u | destination buffer |
|
||||
| tests.cpp:887:5:887:10 | call to memset | This 'memset' operation accesses 8 bytes but the $@ is only 4 bytes. | tests.cpp:833:12:833:12 | u | destination buffer |
|
||||
| tests.cpp:888:5:888:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 4 bytes. | tests.cpp:833:12:833:12 | u | destination buffer |
|
||||
| tests.cpp:984:2:984:9 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:981:6:981:8 | arr | array |
|
||||
| tests.cpp:989:2:989:9 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:981:6:981:8 | arr | array |
|
||||
| tests.cpp:994:2:994:9 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:981:6:981:8 | arr | array |
|
||||
| tests.cpp:1001:2:1001:9 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:981:6:981:8 | arr | array |
|
||||
| tests.cpp:1009:2:1009:9 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:981:6:981:8 | arr | array |
|
||||
| tests.cpp:1031:2:1031:7 | call to memset | This 'memset' operation accesses 130 bytes but the $@ is only 120 bytes. | tests.cpp:1020:12:1020:15 | arr1 | destination buffer |
|
||||
| tests.cpp:1050:2:1050:7 | call to memset | This 'memset' operation accesses 132 bytes but the $@ is only 128 bytes. | tests.cpp:1037:8:1037:14 | buffer1 | destination buffer |
|
||||
| tests.cpp:1052:2:1052:7 | call to memset | This 'memset' operation accesses 132 bytes but the $@ is only 64 bytes. | tests.cpp:1041:8:1041:14 | buffer2 | destination buffer |
|
||||
| tests.cpp:1055:2:1055:8 | call to strncpy | This 'strncpy' operation may access 131 bytes but the $@ is only 128 bytes. | tests.cpp:1037:8:1037:14 | buffer1 | destination buffer |
|
||||
| tests.cpp:1057:2:1057:8 | call to strncpy | This 'strncpy' operation may access 131 bytes but the $@ is only 64 bytes. | tests.cpp:1041:8:1041:14 | buffer2 | destination buffer |
|
||||
| tests.cpp:346:2:346:14 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:349:2:349:14 | access to array | This array indexing operation accesses byte offset 10 but the $@ is only 10 bytes. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:350:17:350:29 | access to array | This array indexing operation accesses byte offset 10 but the $@ is only 10 bytes. | tests.cpp:342:7:342:15 | charArray | array |
|
||||
| tests.cpp:352:2:352:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:343:6:343:13 | intArray | array |
|
||||
| tests.cpp:355:2:355:13 | access to array | This array indexing operation accesses byte offset 43 but the $@ is only 40 bytes. | tests.cpp:343:6:343:13 | intArray | array |
|
||||
| tests.cpp:356:16:356:27 | access to array | This array indexing operation accesses byte offset 43 but the $@ is only 40 bytes. | tests.cpp:343:6:343:13 | intArray | array |
|
||||
| tests.cpp:358:2:358:16 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:344:11:344:21 | structArray | array |
|
||||
| tests.cpp:361:2:361:16 | access to array | This array indexing operation accesses byte offset 219 but the $@ is only 200 bytes. | tests.cpp:344:11:344:21 | structArray | array |
|
||||
| tests.cpp:362:25:362:39 | access to array | This array indexing operation accesses byte offset 219 but the $@ is only 200 bytes. | tests.cpp:344:11:344:21 | structArray | array |
|
||||
| tests.cpp:365:23:365:34 | access to array | This array indexing operation accesses byte offset 43 but the $@ is only 40 bytes. | tests.cpp:343:6:343:13 | intArray | array |
|
||||
| tests.cpp:373:3:373:13 | access to array | This array indexing operation accesses byte offset 101 but the $@ is only 100 bytes. | tests.cpp:368:47:368:52 | call to malloc | array |
|
||||
| tests.cpp:376:3:376:13 | access to array | This array indexing operation accesses byte offset 101 but the $@ is only 101 bytes. | tests.cpp:369:47:369:52 | call to malloc | array |
|
||||
| tests.cpp:446:3:446:24 | access to array | This array indexing operation accesses a negative index -3 on the $@. | tests.cpp:444:7:444:14 | intArray | array |
|
||||
| tests.cpp:454:3:454:11 | access to array | This array indexing operation accesses a negative index -21 on the $@. | tests.cpp:450:7:450:11 | multi | array |
|
||||
| tests.cpp:456:3:456:11 | access to array | This array indexing operation accesses a negative index -21 on the $@. | tests.cpp:450:7:450:11 | multi | array |
|
||||
| tests.cpp:459:3:459:11 | access to array | This array indexing operation accesses byte offset 639 but the $@ is only 400 bytes. | tests.cpp:450:7:450:11 | multi | array |
|
||||
| tests.cpp:461:3:461:11 | access to array | This array indexing operation accesses byte offset 639 but the $@ is only 400 bytes. | tests.cpp:450:7:450:11 | multi | array |
|
||||
| tests.cpp:476:2:476:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:469:7:469:12 | buffer | array |
|
||||
| tests.cpp:477:2:477:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:469:7:469:12 | buffer | array |
|
||||
| tests.cpp:481:2:481:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:469:7:469:12 | buffer | array |
|
||||
| tests.cpp:487:2:487:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:473:21:473:26 | call to malloc | array |
|
||||
| tests.cpp:491:2:491:7 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:474:21:474:26 | call to malloc | array |
|
||||
| tests.cpp:519:3:519:8 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:502:15:502:20 | call to malloc | destination buffer |
|
||||
| tests.cpp:519:3:519:8 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:510:16:510:21 | call to malloc | destination buffer |
|
||||
| tests.cpp:541:6:541:10 | call to fread | This 'fread' operation may access 101 bytes but the $@ is only 100 bytes. | tests.cpp:532:7:532:16 | charBuffer | destination buffer |
|
||||
| tests.cpp:546:6:546:10 | call to fread | This 'fread' operation may access 400 bytes but the $@ is only 100 bytes. | tests.cpp:532:7:532:16 | charBuffer | destination buffer |
|
||||
| tests.cpp:569:6:569:15 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:565:7:565:12 | buffer | array |
|
||||
| tests.cpp:577:7:577:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:565:7:565:12 | buffer | array |
|
||||
| tests.cpp:637:6:637:15 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:633:7:633:12 | buffer | array |
|
||||
| tests.cpp:645:7:645:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:633:7:633:12 | buffer | array |
|
||||
| tests.cpp:708:3:708:8 | call to memset | This 'memset' operation accesses 24 bytes but the $@ is only 8 bytes. | tests.cpp:693:16:693:16 | c | destination buffer |
|
||||
| tests.cpp:712:3:712:8 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 8 bytes. | tests.cpp:693:16:693:16 | c | destination buffer |
|
||||
| tests.cpp:716:3:716:8 | call to memset | This 'memset' operation accesses 24 bytes but the $@ is only 16 bytes. | tests.cpp:692:16:692:16 | b | destination buffer |
|
||||
| tests.cpp:727:2:727:7 | call to memset | This 'memset' operation accesses 24 bytes but the $@ is only 8 bytes. | tests.cpp:693:16:693:16 | c | destination buffer |
|
||||
| tests.cpp:753:5:753:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:735:20:735:22 | b_1 | destination buffer |
|
||||
| tests.cpp:756:5:756:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:735:20:735:22 | b_1 | destination buffer |
|
||||
| tests.cpp:760:5:760:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 8 bytes. | tests.cpp:736:20:736:22 | c_1 | destination buffer |
|
||||
| tests.cpp:761:5:761:10 | call to memset | This 'memset' operation accesses 12 bytes but the $@ is only 8 bytes. | tests.cpp:736:20:736:22 | c_1 | destination buffer |
|
||||
| tests.cpp:763:5:763:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 8 bytes. | tests.cpp:736:20:736:22 | c_1 | destination buffer |
|
||||
| tests.cpp:764:5:764:10 | call to memset | This 'memset' operation accesses 12 bytes but the $@ is only 8 bytes. | tests.cpp:736:20:736:22 | c_1 | destination buffer |
|
||||
| tests.cpp:774:5:774:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:740:20:740:22 | b_2 | destination buffer |
|
||||
| tests.cpp:777:5:777:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:740:20:740:22 | b_2 | destination buffer |
|
||||
| tests.cpp:795:5:795:10 | call to memset | This 'memset' operation accesses 8 bytes but the $@ is only 4 bytes. | tests.cpp:790:16:790:16 | b | destination buffer |
|
||||
| tests.cpp:822:5:822:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 16 bytes. | tests.cpp:801:16:801:16 | b | destination buffer |
|
||||
| tests.cpp:825:5:825:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 16 bytes. | tests.cpp:801:16:801:16 | b | destination buffer |
|
||||
| tests.cpp:827:5:827:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 16 bytes. | tests.cpp:801:16:801:16 | b | destination buffer |
|
||||
| tests.cpp:830:5:830:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 12 bytes. | tests.cpp:802:16:802:16 | c | destination buffer |
|
||||
| tests.cpp:831:5:831:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 12 bytes. | tests.cpp:802:16:802:16 | c | destination buffer |
|
||||
| tests.cpp:833:5:833:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 12 bytes. | tests.cpp:802:16:802:16 | c | destination buffer |
|
||||
| tests.cpp:835:5:835:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 12 bytes. | tests.cpp:802:16:802:16 | c | destination buffer |
|
||||
| tests.cpp:846:5:846:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 8 bytes. | tests.cpp:807:16:807:16 | x | destination buffer |
|
||||
| tests.cpp:847:5:847:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 8 bytes. | tests.cpp:807:16:807:16 | x | destination buffer |
|
||||
| tests.cpp:848:5:848:10 | call to memset | This 'memset' operation accesses 12 bytes but the $@ is only 8 bytes. | tests.cpp:807:16:807:16 | x | destination buffer |
|
||||
| tests.cpp:849:5:849:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 8 bytes. | tests.cpp:807:16:807:16 | x | destination buffer |
|
||||
| tests.cpp:851:5:851:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 8 bytes. | tests.cpp:807:16:807:16 | x | destination buffer |
|
||||
| tests.cpp:862:5:862:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 4 bytes. | tests.cpp:812:12:812:12 | u | destination buffer |
|
||||
| tests.cpp:863:5:863:10 | call to memset | This 'memset' operation accesses 16 bytes but the $@ is only 4 bytes. | tests.cpp:812:12:812:12 | u | destination buffer |
|
||||
| tests.cpp:864:5:864:10 | call to memset | This 'memset' operation accesses 12 bytes but the $@ is only 4 bytes. | tests.cpp:812:12:812:12 | u | destination buffer |
|
||||
| tests.cpp:865:5:865:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 4 bytes. | tests.cpp:812:12:812:12 | u | destination buffer |
|
||||
| tests.cpp:866:5:866:10 | call to memset | This 'memset' operation accesses 8 bytes but the $@ is only 4 bytes. | tests.cpp:812:12:812:12 | u | destination buffer |
|
||||
| tests.cpp:867:5:867:10 | call to memset | This 'memset' operation accesses 20 bytes but the $@ is only 4 bytes. | tests.cpp:812:12:812:12 | u | destination buffer |
|
||||
| tests_restrict.c:12:2:12:7 | call to memcpy | This 'memcpy' operation accesses 2 bytes but the $@ is only 1 byte. | tests_restrict.c:7:6:7:13 | smallbuf | source buffer |
|
||||
| unions.cpp:26:2:26:7 | call to memset | This 'memset' operation accesses 200 bytes but the $@ is only 100 bytes. | unions.cpp:21:10:21:11 | mu | destination buffer |
|
||||
| unions.cpp:30:2:30:7 | call to memset | This 'memset' operation accesses 200 bytes but the $@ is only 100 bytes. | unions.cpp:15:7:15:11 | small | destination buffer |
|
||||
@@ -100,4 +88,5 @@
|
||||
| var_size_struct.cpp:73:3:73:9 | call to strncpy | This 'strncpy' operation may access 1025 bytes but the $@ is only 1024 bytes. | var_size_struct.cpp:63:8:63:11 | data | destination buffer |
|
||||
| var_size_struct.cpp:87:3:87:19 | access to array | This array indexing operation accesses byte offset 67 but the $@ is only 64 bytes. | var_size_struct.cpp:78:7:78:14 | elements | array |
|
||||
| var_size_struct.cpp:99:3:99:8 | call to memset | This 'memset' operation accesses 129 bytes but the $@ is only 128 bytes. | var_size_struct.cpp:92:8:92:10 | str | destination buffer |
|
||||
| var_size_struct.cpp:101:3:101:8 | call to memset | This 'memset' operation accesses 129 bytes but the $@ is only 128 bytes. | var_size_struct.cpp:92:8:92:10 | str | destination buffer |
|
||||
| var_size_struct.cpp:103:3:103:9 | call to strncpy | This 'strncpy' operation may access 129 bytes but the $@ is only 128 bytes. | var_size_struct.cpp:92:8:92:10 | str | destination buffer |
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
| tests.cpp:163:3:163:11 | access to array | Potential buffer-overflow: counter 'k' <= 100 but 'buffer' has 100 elements. |
|
||||
| tests.cpp:164:8:164:16 | access to array | Potential buffer-overflow: counter 'k' <= 100 but 'buffer' has 100 elements. |
|
||||
| tests.cpp:245:42:245:42 | 6 | Potential buffer-overflow: 'global_array_5' has size 5 not 6. |
|
||||
| tests.cpp:351:2:351:14 | access to array | Potential buffer-overflow: 'charArray' has size 10 but 'charArray[10]' may be accessed here. |
|
||||
| tests.cpp:352:17:352:29 | access to array | Potential buffer-overflow: 'charArray' has size 10 but 'charArray[10]' may be accessed here. |
|
||||
| tests.cpp:1055:26:1055:39 | ... - ... | Potential buffer-overflow: 'buffer1' has size 128 not 131. |
|
||||
| tests.cpp:1057:26:1057:39 | ... - ... | Potential buffer-overflow: 'buffer2' has size 64 not 131. |
|
||||
| tests.cpp:349:2:349:14 | access to array | Potential buffer-overflow: 'charArray' has size 10 but 'charArray[10]' may be accessed here. |
|
||||
| tests.cpp:350:17:350:29 | access to array | Potential buffer-overflow: 'charArray' has size 10 but 'charArray[10]' may be accessed here. |
|
||||
| var_size_struct.cpp:103:39:103:41 | 129 | Potential buffer-overflow: 'str' has size 128 not 129. |
|
||||
|
||||
@@ -27,26 +27,26 @@ edges
|
||||
| main.cpp:9:29:9:32 | *argv | tests_restrict.c:15:41:15:44 | *argv | provenance | |
|
||||
| main.cpp:9:29:9:32 | tests_restrict_main output argument | main.cpp:10:20:10:23 | **argv | provenance | |
|
||||
| main.cpp:9:29:9:32 | tests_restrict_main output argument | main.cpp:10:20:10:23 | *argv | provenance | |
|
||||
| main.cpp:10:20:10:23 | **argv | tests.cpp:1060:32:1060:35 | **argv | provenance | |
|
||||
| main.cpp:10:20:10:23 | *argv | tests.cpp:1060:32:1060:35 | *argv | provenance | |
|
||||
| main.cpp:10:20:10:23 | **argv | tests.cpp:872:32:872:35 | **argv | provenance | |
|
||||
| main.cpp:10:20:10:23 | *argv | tests.cpp:872:32:872:35 | *argv | provenance | |
|
||||
| overflowdestination.cpp:23:45:23:48 | **argv | overflowdestination.cpp:23:45:23:48 | **argv | provenance | |
|
||||
| overflowdestination.cpp:23:45:23:48 | **argv | overflowdestination.cpp:23:45:23:48 | *argv | provenance | |
|
||||
| test_buffer_overrun.cpp:32:46:32:49 | **argv | test_buffer_overrun.cpp:32:46:32:49 | **argv | provenance | |
|
||||
| test_buffer_overrun.cpp:32:46:32:49 | **argv | test_buffer_overrun.cpp:32:46:32:49 | *argv | provenance | |
|
||||
| test_buffer_overrun.cpp:32:46:32:49 | *argv | test_buffer_overrun.cpp:32:46:32:49 | *argv | provenance | |
|
||||
| tests.cpp:634:19:634:24 | *source | tests.cpp:636:17:636:22 | *source | provenance | |
|
||||
| tests.cpp:643:19:643:24 | *source | tests.cpp:646:2:646:16 | *... = ... | provenance | |
|
||||
| tests.cpp:646:2:646:2 | *s [post update] [*home] | tests.cpp:649:14:649:14 | *s [*home] | provenance | |
|
||||
| tests.cpp:646:2:646:16 | *... = ... | tests.cpp:646:2:646:2 | *s [post update] [*home] | provenance | |
|
||||
| tests.cpp:649:14:649:14 | *s [*home] | tests.cpp:649:14:649:19 | *home | provenance | |
|
||||
| tests.cpp:649:14:649:14 | *s [*home] | tests.cpp:649:16:649:19 | *home | provenance | |
|
||||
| tests.cpp:649:16:649:19 | *home | tests.cpp:649:14:649:19 | *home | provenance | |
|
||||
| tests.cpp:1060:32:1060:35 | **argv | tests.cpp:1085:9:1085:15 | *access to array | provenance | |
|
||||
| tests.cpp:1060:32:1060:35 | **argv | tests.cpp:1086:9:1086:15 | *access to array | provenance | |
|
||||
| tests.cpp:1060:32:1060:35 | *argv | tests.cpp:1085:9:1085:15 | *access to array | provenance | |
|
||||
| tests.cpp:1060:32:1060:35 | *argv | tests.cpp:1086:9:1086:15 | *access to array | provenance | |
|
||||
| tests.cpp:1085:9:1085:15 | *access to array | tests.cpp:634:19:634:24 | *source | provenance | |
|
||||
| tests.cpp:1086:9:1086:15 | *access to array | tests.cpp:643:19:643:24 | *source | provenance | |
|
||||
| tests.cpp:613:19:613:24 | *source | tests.cpp:615:17:615:22 | *source | provenance | |
|
||||
| tests.cpp:622:19:622:24 | *source | tests.cpp:625:2:625:16 | *... = ... | provenance | |
|
||||
| tests.cpp:625:2:625:2 | *s [post update] [*home] | tests.cpp:628:14:628:14 | *s [*home] | provenance | |
|
||||
| tests.cpp:625:2:625:16 | *... = ... | tests.cpp:625:2:625:2 | *s [post update] [*home] | provenance | |
|
||||
| tests.cpp:628:14:628:14 | *s [*home] | tests.cpp:628:14:628:19 | *home | provenance | |
|
||||
| tests.cpp:628:14:628:14 | *s [*home] | tests.cpp:628:16:628:19 | *home | provenance | |
|
||||
| tests.cpp:628:16:628:19 | *home | tests.cpp:628:14:628:19 | *home | provenance | |
|
||||
| tests.cpp:872:32:872:35 | **argv | tests.cpp:897:9:897:15 | *access to array | provenance | |
|
||||
| tests.cpp:872:32:872:35 | **argv | tests.cpp:898:9:898:15 | *access to array | provenance | |
|
||||
| tests.cpp:872:32:872:35 | *argv | tests.cpp:897:9:897:15 | *access to array | provenance | |
|
||||
| tests.cpp:872:32:872:35 | *argv | tests.cpp:898:9:898:15 | *access to array | provenance | |
|
||||
| tests.cpp:897:9:897:15 | *access to array | tests.cpp:613:19:613:24 | *source | provenance | |
|
||||
| tests.cpp:898:9:898:15 | *access to array | tests.cpp:622:19:622:24 | *source | provenance | |
|
||||
| tests_restrict.c:15:41:15:44 | **argv | tests_restrict.c:15:41:15:44 | **argv | provenance | |
|
||||
| tests_restrict.c:15:41:15:44 | *argv | tests_restrict.c:15:41:15:44 | *argv | provenance | |
|
||||
nodes
|
||||
@@ -72,18 +72,18 @@ nodes
|
||||
| test_buffer_overrun.cpp:32:46:32:49 | *argv | semmle.label | *argv |
|
||||
| test_buffer_overrun.cpp:32:46:32:49 | *argv | semmle.label | *argv |
|
||||
| test_buffer_overrun.cpp:32:46:32:49 | *argv | semmle.label | *argv |
|
||||
| tests.cpp:634:19:634:24 | *source | semmle.label | *source |
|
||||
| tests.cpp:636:17:636:22 | *source | semmle.label | *source |
|
||||
| tests.cpp:643:19:643:24 | *source | semmle.label | *source |
|
||||
| tests.cpp:646:2:646:2 | *s [post update] [*home] | semmle.label | *s [post update] [*home] |
|
||||
| tests.cpp:646:2:646:16 | *... = ... | semmle.label | *... = ... |
|
||||
| tests.cpp:649:14:649:14 | *s [*home] | semmle.label | *s [*home] |
|
||||
| tests.cpp:649:14:649:19 | *home | semmle.label | *home |
|
||||
| tests.cpp:649:16:649:19 | *home | semmle.label | *home |
|
||||
| tests.cpp:1060:32:1060:35 | **argv | semmle.label | **argv |
|
||||
| tests.cpp:1060:32:1060:35 | *argv | semmle.label | *argv |
|
||||
| tests.cpp:1085:9:1085:15 | *access to array | semmle.label | *access to array |
|
||||
| tests.cpp:1086:9:1086:15 | *access to array | semmle.label | *access to array |
|
||||
| tests.cpp:613:19:613:24 | *source | semmle.label | *source |
|
||||
| tests.cpp:615:17:615:22 | *source | semmle.label | *source |
|
||||
| tests.cpp:622:19:622:24 | *source | semmle.label | *source |
|
||||
| tests.cpp:625:2:625:2 | *s [post update] [*home] | semmle.label | *s [post update] [*home] |
|
||||
| tests.cpp:625:2:625:16 | *... = ... | semmle.label | *... = ... |
|
||||
| tests.cpp:628:14:628:14 | *s [*home] | semmle.label | *s [*home] |
|
||||
| tests.cpp:628:14:628:19 | *home | semmle.label | *home |
|
||||
| tests.cpp:628:16:628:19 | *home | semmle.label | *home |
|
||||
| tests.cpp:872:32:872:35 | **argv | semmle.label | **argv |
|
||||
| tests.cpp:872:32:872:35 | *argv | semmle.label | *argv |
|
||||
| tests.cpp:897:9:897:15 | *access to array | semmle.label | *access to array |
|
||||
| tests.cpp:898:9:898:15 | *access to array | semmle.label | *access to array |
|
||||
| tests_restrict.c:15:41:15:44 | **argv | semmle.label | **argv |
|
||||
| tests_restrict.c:15:41:15:44 | **argv | semmle.label | **argv |
|
||||
| tests_restrict.c:15:41:15:44 | *argv | semmle.label | *argv |
|
||||
@@ -97,5 +97,5 @@ subpaths
|
||||
| main.cpp:9:29:9:32 | **argv | tests_restrict.c:15:41:15:44 | **argv | tests_restrict.c:15:41:15:44 | **argv | main.cpp:9:29:9:32 | tests_restrict_main output argument |
|
||||
| main.cpp:9:29:9:32 | *argv | tests_restrict.c:15:41:15:44 | *argv | tests_restrict.c:15:41:15:44 | *argv | main.cpp:9:29:9:32 | tests_restrict_main output argument |
|
||||
#select
|
||||
| tests.cpp:636:2:636:7 | call to strcpy | main.cpp:6:27:6:30 | **argv | tests.cpp:636:17:636:22 | *source | This 'call to strcpy' with input from $@ may overflow the destination. | main.cpp:6:27:6:30 | **argv | a command-line argument |
|
||||
| tests.cpp:649:2:649:7 | call to strcpy | main.cpp:6:27:6:30 | **argv | tests.cpp:649:14:649:19 | *home | This 'call to strcpy' with input from $@ may overflow the destination. | main.cpp:6:27:6:30 | **argv | a command-line argument |
|
||||
| tests.cpp:615:2:615:7 | call to strcpy | main.cpp:6:27:6:30 | **argv | tests.cpp:615:17:615:22 | *source | This 'call to strcpy' with input from $@ may overflow the destination. | main.cpp:6:27:6:30 | **argv | a command-line argument |
|
||||
| tests.cpp:628:2:628:7 | call to strcpy | main.cpp:6:27:6:30 | **argv | tests.cpp:628:14:628:19 | *home | This 'call to strcpy' with input from $@ may overflow the destination. | main.cpp:6:27:6:30 | **argv | a command-line argument |
|
||||
|
||||
@@ -18,7 +18,7 @@ void test1()
|
||||
{
|
||||
char smallbuffer[10];
|
||||
char bigbuffer[20];
|
||||
|
||||
|
||||
memcpy(bigbuffer, smallbuffer, sizeof(smallbuffer)); // GOOD
|
||||
memcpy(bigbuffer, smallbuffer, sizeof(bigbuffer)); // BAD: over-read
|
||||
memcpy(smallbuffer, bigbuffer, sizeof(smallbuffer)); // GOOD
|
||||
@@ -29,7 +29,7 @@ void test2()
|
||||
{
|
||||
char *smallbuffer = (char *)malloc(sizeof(char) * 10);
|
||||
char *bigbuffer = (char *)malloc(sizeof(char) * 20);
|
||||
|
||||
|
||||
memcpy(bigbuffer, smallbuffer, sizeof(smallbuffer)); // GOOD
|
||||
memcpy(bigbuffer, smallbuffer, sizeof(bigbuffer)); // BAD: over-read [NOT DETECTED]
|
||||
memcpy(smallbuffer, bigbuffer, sizeof(smallbuffer)); // GOOD
|
||||
@@ -59,7 +59,7 @@ void test4(int unbounded)
|
||||
{
|
||||
int bounded = 100;
|
||||
char buffer1[100], buffer2[100];
|
||||
|
||||
|
||||
memmove(buffer1, buffer2, bounded); // GOOD
|
||||
memmove(buffer1, buffer2, unbounded); // BAD: may over-write [NOT DETECTED]
|
||||
}
|
||||
@@ -107,11 +107,11 @@ void test6(bool cond)
|
||||
a = -1;
|
||||
buffer[a] = 'x'; // BAD: under-write [NOT DETECTED]
|
||||
ch = buffer[a]; // BAD: under-read [NOT DETECTED]
|
||||
|
||||
|
||||
b = 0;
|
||||
buffer[b] = 'x'; // GOOD
|
||||
ch = buffer[b]; // GOOD
|
||||
|
||||
|
||||
c = 100;
|
||||
buffer[c] = 'x'; // BAD: over-write [NOT DETECTED]
|
||||
ch = buffer[c]; // BAD: over-read [NOT DETECTED]
|
||||
@@ -120,7 +120,7 @@ void test6(bool cond)
|
||||
d = 1000;
|
||||
buffer[d] = 'x'; // BAD: over-write [NOT DETECTED]
|
||||
ch = buffer[d]; // BAD: over-read [NOT DETECTED]
|
||||
|
||||
|
||||
e = 1000;
|
||||
e = 0;
|
||||
buffer[e] = 'x'; // GOOD
|
||||
@@ -130,12 +130,12 @@ void test6(bool cond)
|
||||
if (cond) {f = 1000;}
|
||||
buffer[f] = 'x'; // BAD: may over-write [NOT DETECTED]
|
||||
ch = buffer[f]; // BAD: may over-read [NOT DETECTED]
|
||||
|
||||
|
||||
g = 1000;
|
||||
if (cond) {g = 0;}
|
||||
buffer[g] = 'x'; // BAD: may over-write [NOT DETECTED]
|
||||
ch = buffer[g]; // BAD: may over-read [NOT DETECTED]
|
||||
|
||||
|
||||
h = 1000;
|
||||
if (cond)
|
||||
{
|
||||
@@ -151,13 +151,13 @@ void test6(bool cond)
|
||||
buffer[i] = 'x'; // GOOD
|
||||
ch = buffer[i]; // GOOD
|
||||
}
|
||||
|
||||
|
||||
for (j = -1; j < 100; j++)
|
||||
{
|
||||
buffer[j] = 'x'; // BAD: under-write [NOT DETECTED]
|
||||
ch = buffer[j]; // BAD: under-read [NOT DETECTED]
|
||||
}
|
||||
|
||||
|
||||
for (k = 0; k <= 100; k++)
|
||||
{
|
||||
buffer[k] = 'x'; // BAD: over-write
|
||||
@@ -187,7 +187,7 @@ void test8(int unbounded)
|
||||
{
|
||||
buffer[i] = 0; // GOOD
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < v2; i++)
|
||||
{
|
||||
buffer[i] = 0; // BAD: over-write [NOT DETECTED]
|
||||
@@ -226,7 +226,7 @@ void test9(int param)
|
||||
memset(buffer3, 0, 33); // BAD: overrun write of buffer3
|
||||
memset(buffer4, 0, 32); // GOOD
|
||||
memset(buffer4, 0, 33); // BAD: overrun write of buffer4 (buffer3)
|
||||
|
||||
|
||||
memcmp(buffer1, buffer2, 32); // GOOD
|
||||
memcmp(buffer1, buffer2, 33); // BAD: overrun read of buffer1, buffer2
|
||||
}
|
||||
@@ -274,7 +274,7 @@ void test11()
|
||||
memset(string, 0, 14); // GOOD
|
||||
memset(string, 0, 15); // BAD: overrun write of string
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
char *buffer = new char[128];
|
||||
|
||||
@@ -284,7 +284,7 @@ void test11()
|
||||
|
||||
memset(buffer, 0, 128); // BAD: overrun write of buffer
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
char array[10] = "123";
|
||||
|
||||
@@ -309,7 +309,7 @@ void test12()
|
||||
memset(&myVar, 0, sizeof(myVar)); // GOOD
|
||||
memset(&myVar, 0, sizeof(myVar) + 1); // BAD: overrun write of myVar
|
||||
memset(myVar.buffer, 0, 16); // GOOD
|
||||
memset(myVar.buffer, 0, 17); // DUBIOUS: overrun write of myVar.buffer, but not out of myVar itself [NOT DETECTED]
|
||||
memset(myVar.buffer, 0, 17); // BAD: overrun write of myVar.buffer
|
||||
memset(&(myVar.field), 0, sizeof(int)); // GOOD
|
||||
memset(&(myVar.field), 0, sizeof(int) * 2); // BAD: overrun write of myVar.field
|
||||
|
||||
@@ -317,7 +317,7 @@ void test12()
|
||||
memset(buf + 8, 0, 9); // BAD: overrun write of buf [NOT DETECTED]
|
||||
memset(dbuf + 8, 0, 8); // GOOD
|
||||
memset(dbuf + 8, 0, 9); // BAD: overrun write of dbuf [NOT DETECTED]
|
||||
|
||||
|
||||
{
|
||||
myStruct *myPtr1 = &myVar;
|
||||
myStruct *myPtr2;
|
||||
@@ -331,19 +331,17 @@ void test12()
|
||||
|
||||
{
|
||||
void *myPtr3 = (void *)(&myVar);
|
||||
|
||||
|
||||
memset(myPtr3, 0, sizeof(myStruct)); // GOOD
|
||||
memset(myPtr3, 0, sizeof(myStruct) + 1); // BAD: overrun write of myVar
|
||||
}
|
||||
}
|
||||
|
||||
void test13(char *argArray)
|
||||
void test13()
|
||||
{
|
||||
char charArray[10];
|
||||
int intArray[10];
|
||||
myStruct structArray[10];
|
||||
char *ptrArray = charArray;
|
||||
char *ptrArrayOffset = charArray + 1;
|
||||
|
||||
charArray[-1] = 1; // BAD: underrun write
|
||||
charArray[0] = 1; // GOOD
|
||||
@@ -365,26 +363,7 @@ void test13(char *argArray)
|
||||
|
||||
charArray[9] = (char)intArray[9]; // GOOD
|
||||
charArray[9] = (char)intArray[10]; // BAD: overrun read
|
||||
|
||||
ptrArray[-2] = 1; // BAD: underrun write
|
||||
ptrArray[-1] = 1; // BAD: underrun write
|
||||
ptrArray[0] = 1; // GOOD
|
||||
ptrArray[8] = 1; // GOOD
|
||||
ptrArray[9] = 1; // GOOD
|
||||
ptrArray[10] = 1; // BAD: overrun write
|
||||
|
||||
ptrArrayOffset[-2] = 1; // BAD: underrun write [NOT DETECTED]
|
||||
ptrArrayOffset[-1] = 1; // GOOD (there is room for this)
|
||||
ptrArrayOffset[0] = 1; // GOOD
|
||||
ptrArrayOffset[8] = 1; // GOOD
|
||||
ptrArrayOffset[9] = 1; // BAD: overrun write [NOT DETECTED]
|
||||
ptrArrayOffset[10] = 1; // BAD: overrun write [NOT DETECTED]
|
||||
|
||||
argArray[-1] = 1; // BAD: underrun write [NOT DETECTED]
|
||||
argArray[0] = 1; // GOOD
|
||||
argArray[1] = 1; // GOOD (we can't tell the length of this array)
|
||||
argArray[999] = 1; // GOOD (we can't tell the length of this array)
|
||||
|
||||
|
||||
{
|
||||
unsigned short *buffer1 = (unsigned short *)malloc(sizeof(short) * 50);
|
||||
unsigned short *buffer2 = (unsigned short *)malloc(101); // 50.5 shorts
|
||||
@@ -463,13 +442,13 @@ void test17(long long *longArray)
|
||||
|
||||
{
|
||||
int intArray[5];
|
||||
|
||||
|
||||
((char *)intArray)[-3] = 0; // BAD: underrun write
|
||||
}
|
||||
|
||||
{
|
||||
int multi[10][10];
|
||||
|
||||
|
||||
multi[5][5] = 0; // GOOD
|
||||
|
||||
multi[-5][5] = 0; // BAD: underrun write [INCORRECT MESSAGE]
|
||||
@@ -532,7 +511,7 @@ void test19(bool b)
|
||||
p2 = (char *)malloc(20);
|
||||
p3 = (char *)malloc(20);
|
||||
}
|
||||
|
||||
|
||||
// ...
|
||||
|
||||
if (b)
|
||||
@@ -684,7 +663,7 @@ void test27(){
|
||||
char buffer[MAX_SIZE];
|
||||
|
||||
strncpy(dest, src, 8); // GOOD, strncpy will not read past null terminator of source
|
||||
|
||||
|
||||
if(IND < MAX_SIZE){
|
||||
buffer[IND] = 0; // GOOD: out of bounds, but inaccessible code
|
||||
}
|
||||
@@ -760,7 +739,7 @@ struct AnonUnionInStruct
|
||||
unsigned int a_2;
|
||||
unsigned int b_2;
|
||||
};
|
||||
};
|
||||
};
|
||||
unsigned int d;
|
||||
|
||||
void test37() {
|
||||
@@ -890,173 +869,6 @@ struct S2 {
|
||||
}
|
||||
};
|
||||
|
||||
typedef int MyArray[10];
|
||||
|
||||
typedef struct _MyArrayArray {
|
||||
struct {
|
||||
int as[10];
|
||||
} bs[10];
|
||||
|
||||
union {
|
||||
int i;
|
||||
char cs[4];
|
||||
} ds[10];
|
||||
|
||||
struct {
|
||||
MyArray xs;
|
||||
} ys[10];
|
||||
} MyArrayArray;
|
||||
|
||||
void test26() {
|
||||
MyArrayArray maa;
|
||||
|
||||
maa.bs[0].as[-1] = 0; // BAD: underrun write [NOT DETECTED]
|
||||
maa.bs[0].as[0] = 0; // GOOD
|
||||
maa.bs[0].as[99] = 0; // GOOD (overflows into bs[9])
|
||||
maa.bs[0].as[100] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
maa.bs[1].as[-1] = 0; // GOOD (underflows into bs[0])
|
||||
maa.bs[1].as[0] = 0; // GOOD
|
||||
maa.bs[1].as[99] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
maa.bs[1].as[100] = 0; // BAD: overrun write[ NOT DETECTED]
|
||||
|
||||
maa.ds[0].i = 0; // GOOD
|
||||
maa.ds[9].i = 0; // GOOD
|
||||
maa.ds[10].i = 0; // BAD: overrun write [NOT DETECTED]
|
||||
maa.ds[0].cs[0] = 0; // GOOD
|
||||
maa.ds[0].cs[3] = 0; // GOOD
|
||||
maa.ds[0].cs[4] = 0; // GOOD (overflows into vs[1])
|
||||
maa.ds[0].cs[39] = 0; // GOOD (overflows into vs[9])
|
||||
maa.ds[0].cs[40] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
maa.ds[9].cs[0] = 0; // GOOD
|
||||
maa.ds[9].cs[3] = 0; // GOOD
|
||||
maa.ds[9].cs[4] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
|
||||
maa.ys[0].xs[-1] = 0; // BAD: underrun write [NOT DETECTED]
|
||||
maa.ys[0].xs[0] = 0; // GOOD
|
||||
maa.ys[0].xs[99] = 0; // GOOD (overflows into bs[9])
|
||||
maa.ys[0].xs[100] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
maa.ys[1].xs[-1] = 0; // GOOD (underflows into ys[0])
|
||||
maa.ys[1].xs[0] = 0; // GOOD
|
||||
maa.ys[1].xs[99] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
maa.ys[1].xs[100] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
|
||||
char zs[2][2];
|
||||
zs[0][-1] = 0; // BAD: underrun write [NOT DETECTED]
|
||||
zs[0][0] = 0; // GOOD
|
||||
zs[0][1] = 0; // GOOD
|
||||
zs[0][2] = 0; // GOOD
|
||||
zs[0][3] = 0; // GOOD
|
||||
zs[0][4] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
zs[1][-3] = 0; // BAD: underrun write [NOT DETECTED]
|
||||
zs[1][-2] = 0; // GOOD
|
||||
zs[1][-1] = 0; // GOOD
|
||||
zs[1][0] = 0; // GOOD
|
||||
zs[1][1] = 0; // GOOD
|
||||
zs[1][2] = 0; // BAD: overrun write [NOT DETECTED]
|
||||
}
|
||||
|
||||
struct Array10 {
|
||||
int values[10];
|
||||
};
|
||||
|
||||
void test27(size_t s) {
|
||||
Array10 arr;
|
||||
|
||||
if (s < sizeof(arr.values[10])) { // GOOD (harmless)
|
||||
// ...
|
||||
}
|
||||
|
||||
if (s < offsetof(Array10, values[10])) { // GOOD (harmless)
|
||||
// ...
|
||||
}
|
||||
|
||||
if (s < &(arr.values[10]) - &(arr.values[0])) { // GOOD (harmless)
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
||||
bool cond();
|
||||
|
||||
void test28() {
|
||||
int arr[10];
|
||||
|
||||
int *ptr1 = arr;
|
||||
ptr1[-1] = 0; // BAD: underrun write
|
||||
ptr1++;
|
||||
ptr1[-1] = 0; // GOOD
|
||||
|
||||
int *ptr2 = arr;
|
||||
ptr2[-1] = 0; // BAD: underrun write
|
||||
*ptr2++;
|
||||
ptr2[-1] = 0; // GOOD
|
||||
|
||||
int *ptr3 = arr;
|
||||
ptr3[-1] = 0; // BAD: underrun write
|
||||
if (cond()) {
|
||||
ptr3++;
|
||||
}
|
||||
ptr3[-1] = 0; // GOOD (depending what cond() does)
|
||||
|
||||
int *ptr4 = arr;
|
||||
ptr4[-1] = 0; // BAD: underrun write
|
||||
while (true) {
|
||||
ptr4++;
|
||||
if (cond()) break;
|
||||
}
|
||||
ptr4[-1] = 0; // GOOD
|
||||
|
||||
int *ptr5 = arr;
|
||||
ptr5[-1] = 0; // BAD: underrun write
|
||||
while (true) {
|
||||
if (cond()) ptr5++;
|
||||
if (cond()) break;
|
||||
}
|
||||
ptr5[-1] = 0; // GOOD (depending what cond() does)
|
||||
}
|
||||
|
||||
typedef int myInt29;
|
||||
typedef myInt29 myArray29[10];
|
||||
struct _myStruct29 {
|
||||
myArray29 arr1;
|
||||
myInt29 arr2[20];
|
||||
};
|
||||
typedef _myStruct29 myStruct29;
|
||||
|
||||
void test29() {
|
||||
myStruct29 *ptr;
|
||||
|
||||
memset(ptr->arr1, 0, sizeof(ptr->arr1) + sizeof(ptr->arr2)); // GOOD (overwrites arr1, arr2)
|
||||
memset(&(ptr->arr1[0]), 0, sizeof(ptr->arr1) + sizeof(ptr->arr2)); // GOOD (overwrites arr1, arr2)
|
||||
|
||||
memset(ptr->arr1, 0, sizeof(ptr->arr1) + sizeof(ptr->arr2) + 10); // BAD
|
||||
}
|
||||
|
||||
struct UnionStruct {
|
||||
int a;
|
||||
union {
|
||||
char buffer1[64];
|
||||
int b;
|
||||
};
|
||||
union {
|
||||
char buffer2[64];
|
||||
int c;
|
||||
};
|
||||
};
|
||||
|
||||
void test30() {
|
||||
UnionStruct us;
|
||||
|
||||
memset(us.buffer1, 0, sizeof(us.buffer1)); // GOOD
|
||||
memset(us.buffer1, 0, sizeof(us)); // BAD
|
||||
memset(us.buffer2, 0, sizeof(us.buffer2)); // GOOD
|
||||
memset(us.buffer2, 0, sizeof(us)); // BAD
|
||||
|
||||
strncpy(us.buffer1, "", sizeof(us.buffer1) - 1); // GOOD
|
||||
strncpy(us.buffer1, "", sizeof(us) - 1); // BAD
|
||||
strncpy(us.buffer2, "", sizeof(us.buffer2) - 1); // GOOD
|
||||
strncpy(us.buffer2, "", sizeof(us) - 1); // BAD
|
||||
}
|
||||
|
||||
int tests_main(int argc, char *argv[])
|
||||
{
|
||||
long long arr17[19];
|
||||
@@ -1084,11 +896,6 @@ int tests_main(int argc, char *argv[])
|
||||
test23();
|
||||
test24(argv[0]);
|
||||
test25(argv[0]);
|
||||
test26();
|
||||
test27(argc);
|
||||
test28();
|
||||
test29();
|
||||
test30();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -96,9 +96,9 @@ void testNotVarStruct1() {
|
||||
notVarStruct1 *nvs1 = (notVarStruct1 *)malloc(sizeof(notVarStruct1) * 2);
|
||||
|
||||
memset(nvs1->str, 0, 128); // GOOD
|
||||
memset(nvs1->str, 0, 129); // DUBIOUS: buffer overflow (overflows nvs1->str but not nvs1 overall)
|
||||
memset(nvs1->str, 0, 129); // BAD: buffer overflow
|
||||
memset(nvs1[1].str, 0, 128); // GOOD
|
||||
memset(nvs1[1].str, 0, 129); // BAD: buffer overflow [NOT DETECTED]
|
||||
memset(nvs1[1].str, 0, 129); // BAD: buffer overflow
|
||||
strncpy(nvs1->str, "Hello, world!", 128); // GOOD
|
||||
strncpy(nvs1->str, "Hello, world!", 129); // BAD
|
||||
}
|
||||
|
||||
@@ -16,17 +16,6 @@
|
||||
| tests.c:136:2:136:8 | call to sprintf | This 'call to sprintf' operation requires 11 bytes but the destination is only 10 bytes. |
|
||||
| tests.c:186:3:186:9 | call to sprintf | This 'call to sprintf' operation requires 9 bytes but the destination is only 2 bytes. |
|
||||
| tests.c:189:3:189:9 | call to sprintf | This 'call to sprintf' operation requires 3 bytes but the destination is only 2 bytes. |
|
||||
| unions.c:26:2:26:7 | call to strcpy | This 'call to strcpy' operation requires 21 bytes but the destination is only 15 bytes. |
|
||||
| unions.c:27:2:27:7 | call to strcpy | This 'call to strcpy' operation requires 21 bytes but the destination is only 15 bytes. |
|
||||
| unions.c:26:2:26:7 | call to strcpy | This 'call to strcpy' operation requires 21 bytes but the destination is only 16 bytes. |
|
||||
| unions.c:27:2:27:7 | call to strcpy | This 'call to strcpy' operation requires 21 bytes but the destination is only 16 bytes. |
|
||||
| var_size_struct.cpp:22:3:22:8 | call to strcpy | This 'call to strcpy' operation requires 10 bytes but the destination is only 9 bytes. |
|
||||
| varbuffer.c:15:5:15:10 | call to strcpy | This 'call to strcpy' operation requires 2 bytes but the destination is only 1 bytes. |
|
||||
| varbuffer.c:16:5:16:10 | call to strcpy | This 'call to strcpy' operation requires 10 bytes but the destination is only 1 bytes. |
|
||||
| varbuffer.c:23:5:23:10 | call to strcpy | This 'call to strcpy' operation requires 12 bytes but the destination is only 11 bytes. |
|
||||
| varbuffer.c:24:5:24:10 | call to strcpy | This 'call to strcpy' operation requires 17 bytes but the destination is only 11 bytes. |
|
||||
| varbuffer.c:39:5:39:10 | call to strcpy | This 'call to strcpy' operation requires 3 bytes but the destination is only 2 bytes. |
|
||||
| varbuffer.c:40:5:40:10 | call to strcpy | This 'call to strcpy' operation requires 10 bytes but the destination is only 2 bytes. |
|
||||
| varbuffer.c:45:5:45:10 | call to strcpy | This 'call to strcpy' operation requires 10 bytes but the destination is only 2 bytes. |
|
||||
| varbuffer.c:46:5:46:10 | call to strcpy | This 'call to strcpy' operation requires 17 bytes but the destination is only 2 bytes. |
|
||||
| varbuffer.c:60:5:60:10 | call to strcpy | This 'call to strcpy' operation requires 2 bytes but the destination is only 1 bytes. |
|
||||
| varbuffer.c:61:5:61:10 | call to strcpy | This 'call to strcpy' operation requires 10 bytes but the destination is only 1 bytes. |
|
||||
| varbuffer.c:67:5:67:10 | call to strcpy | This 'call to strcpy' operation requires 17 bytes but the destination is only 11 bytes. |
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
// Further test cases for CWE-120.
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
typedef struct _MyVarStruct {
|
||||
size_t len;
|
||||
char buffer[1]; // variable size buffer
|
||||
} MyVarStruct;
|
||||
|
||||
void testMyVarStruct()
|
||||
{
|
||||
MyVarStruct *ptr1 = (MyVarStruct*)malloc(sizeof(MyVarStruct));
|
||||
ptr1->len = 0;
|
||||
strcpy(ptr1->buffer, ""); // GOOD
|
||||
strcpy(ptr1->buffer, "1"); // BAD: length 2, but destination only has length 1
|
||||
strcpy(ptr1->buffer, "123456789"); // BAD: length 10, but destination only has length 1
|
||||
// ...
|
||||
|
||||
MyVarStruct *ptr2 = (MyVarStruct*)malloc(sizeof(MyVarStruct) + (sizeof(char) * 10));
|
||||
ptr2->len = 10;
|
||||
strcpy(ptr2->buffer, "123456789"); // GOOD
|
||||
strcpy(ptr2->buffer, "1234567890"); // GOOD
|
||||
strcpy(ptr2->buffer, "1234567890a"); // BAD: length 12, but destination only has length 11
|
||||
strcpy(ptr2->buffer, "1234567890abcdef"); // BAD: length 17, but destination only has length 11
|
||||
// ...
|
||||
}
|
||||
|
||||
typedef struct MyFixedStruct1 {
|
||||
int len;
|
||||
char buffer[2]; // assumed to be a fixed size buffer
|
||||
} MyFixedStruct1;
|
||||
|
||||
void testMyFixedStruct()
|
||||
{
|
||||
MyFixedStruct1 *ptr1 = (MyFixedStruct1 *)malloc(sizeof(MyFixedStruct1));
|
||||
ptr1->len = 1;
|
||||
strcpy(ptr1->buffer, ""); // GOOD
|
||||
strcpy(ptr1->buffer, "1"); // GOOD
|
||||
strcpy(ptr1->buffer, "12"); // BAD: length 3, but destination only has length 2
|
||||
strcpy(ptr1->buffer, "123456789"); // BAD: length 10, but destination only has length 2
|
||||
// ...
|
||||
|
||||
MyFixedStruct1 *ptr2 = (MyFixedStruct1*)malloc(sizeof(MyFixedStruct1) + (sizeof(char) * 10));
|
||||
ptr2->len = 11;
|
||||
strcpy(ptr2->buffer, "123456789"); // BAD / DUBIOUS: length 10, but destination only has length 2
|
||||
strcpy(ptr2->buffer, "1234567890abcdef"); // BAD: length 17, but destination only has length 2
|
||||
// ...
|
||||
}
|
||||
|
||||
typedef struct _MyFixedStruct2 {
|
||||
char buffer[1]; // fixed size buffer
|
||||
size_t len;
|
||||
} MyFixedStruct2;
|
||||
|
||||
void testMyFixedStruct2()
|
||||
{
|
||||
MyFixedStruct2 *ptr1 = (MyFixedStruct2 *)malloc(sizeof(MyFixedStruct2));
|
||||
ptr1->len = 1;
|
||||
strcpy(ptr1->buffer, ""); // GOOD
|
||||
strcpy(ptr1->buffer, "1"); // BAD: length 2, but destination only has length 1
|
||||
strcpy(ptr1->buffer, "123456789"); // BAD: length 10, but destination only has length 1
|
||||
// ...
|
||||
|
||||
MyFixedStruct2 *ptr2 = (MyFixedStruct2*)malloc(sizeof(MyFixedStruct2) + (sizeof(char) * 10));
|
||||
ptr2->len = 11;
|
||||
strcpy(ptr2->buffer, "123456789"); // BAD: length 10, but destination only has length 1 [NOT DETECTED]
|
||||
strcpy(ptr2->buffer, "1234567890abcdef"); // BAD: length 17, but destination only has length 1
|
||||
// ...
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p><code>Path.Combine</code> may silently drop its earlier arguments if its later arguments are absolute paths. E.g. <code>Path.Combine("C:\\Users\\Me\\Documents", "C:\\Program Files\\") == "C:\\Program Files"</code>.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>Use <code>Path.Join</code> instead.</p>
|
||||
</recommendation>
|
||||
<references>
|
||||
|
||||
<li>Microsoft Learn, .NET API browser, <a href="https://learn.microsoft.com/en-us/dotnet/api/system.io.path.combine?view=net-9.0">Path.Combine</a>.</li>
|
||||
<li>Microsoft Learn, .NET API browser, <a href="https://learn.microsoft.com/en-us/dotnet/api/system.io.path.join?view=net-9.0">Path.Join</a>.</li>
|
||||
|
||||
</references>
|
||||
</qhelp>
|
||||
@@ -1,16 +0,0 @@
|
||||
/**
|
||||
* @name Call to System.IO.Path.Combine
|
||||
* @description Finds calls to System.IO.Path's Combine method
|
||||
* @kind problem
|
||||
* @problem.severity recommendation
|
||||
* @precision very-high
|
||||
* @id cs/path-combine
|
||||
* @tags reliability
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import semmle.code.csharp.frameworks.System
|
||||
|
||||
from MethodCall call
|
||||
where call.getTarget().hasFullyQualifiedName("System.IO", "Path", "Combine")
|
||||
select call, "Call to 'System.IO.Path.Combine'."
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
category: newQuery
|
||||
---
|
||||
* Added a new query, `csharp/path-combine`, to recommend against the `Path.Combine` method due to it silently discarding its earlier parameters if later parameters are rooted.
|
||||
@@ -1,14 +0,0 @@
|
||||
using System.IO;
|
||||
|
||||
class PathCombine
|
||||
{
|
||||
void bad()
|
||||
{
|
||||
Path.Combine(@"C:\Users", @"C:\Program Files");
|
||||
}
|
||||
|
||||
void good()
|
||||
{
|
||||
Path.Join(@"C:\Users", @"C:\Program Files");
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
| PathCombine.cs:7:9:7:54 | call to method Combine | Call to 'System.IO.Path.Combine'. |
|
||||
@@ -1 +0,0 @@
|
||||
Bad Practices/PathCombine.ql
|
||||
@@ -1,2 +0,0 @@
|
||||
semmle-extractor-options: /nostdlib /noconfig
|
||||
semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
.NET 5, .NET 6, .NET 7, .NET 8, .NET 9","``.sln``, ``.csproj``, ``.cs``, ``.cshtml``, ``.xaml``"
|
||||
Go (aka Golang), "Go up to 1.24", "Go 1.11 or more recent", ``.go``
|
||||
Java,"Java 7 to 24 [5]_","javac (OpenJDK and Oracle JDK),
|
||||
Java,"Java 7 to 22 [5]_","javac (OpenJDK and Oracle JDK),
|
||||
|
||||
Eclipse compiler for Java (ECJ) [6]_",``.java``
|
||||
Kotlin,"Kotlin 1.5.0 to 2.1.2\ *x*","kotlinc",``.kt``
|
||||
@@ -33,7 +33,7 @@
|
||||
.. [2] Objective-C, Objective-C++, C++/CLI, and C++/CX are not supported.
|
||||
.. [3] Support for the clang-cl compiler is preliminary.
|
||||
.. [4] Support for the Arm Compiler (armcc) is preliminary.
|
||||
.. [5] Builds that execute on Java 7 to 24 can be analyzed. The analysis understands standard language features in Java 8 to 24; "preview" and "incubator" features are not supported. Source code using Java language versions older than Java 8 are analyzed as Java 8 code.
|
||||
.. [5] Builds that execute on Java 7 to 22 can be analyzed. The analysis understands standard language features in Java 8 to 22; "preview" and "incubator" features are not supported. Source code using Java language versions older than Java 8 are analyzed as Java 8 code.
|
||||
.. [6] ECJ is supported when the build invokes it via the Maven Compiler plugin or the Takari Lifecycle plugin.
|
||||
.. [7] JSX and Flow code, YAML, JSON, HTML, and XML files may also be analyzed with JavaScript files.
|
||||
.. [8] The extractor requires Python 3 to run. To analyze Python 2.7 you should install both versions of Python.
|
||||
|
||||
@@ -70,7 +70,6 @@ github.com/jinzhu/gorm,13,15,1,,,,,,,,,,,,13,,,,,,15,,,,,1,
|
||||
github.com/jmoiron/sqlx,12,49,11,,,,,,,,,,,,12,,,,,,49,,,,,11,
|
||||
github.com/joho/godotenv,,4,,,,,,,,,,,,,,,,,,,,4,,,,,
|
||||
github.com/json-iterator/go,,,4,,,,,,,,,,,,,,,,,,,,,,,4,
|
||||
github.com/kanikanema/gorqlite,24,8,2,,,,,,,,,,,,24,,,,,,8,,,,,2,
|
||||
github.com/kataras/iris/context,6,,,,,,,,6,,,,,,,,,,,,,,,,,,
|
||||
github.com/kataras/iris/middleware/jwt,2,,,,2,,,,,,,,,,,,,,,,,,,,,,
|
||||
github.com/kataras/iris/server/web/context,6,,,,,,,,6,,,,,,,,,,,,,,,,,,
|
||||
@@ -85,10 +84,10 @@ github.com/masterzen/xmlpath,2,,,,,,,,,,,,,,,,,,2,,,,,,,,
|
||||
github.com/moovweb/gokogiri/xml,4,,,,,,,,,,,,,,,,,,4,,,,,,,,
|
||||
github.com/moovweb/gokogiri/xpath,1,,,,,,,,,,,,,,,,,,1,,,,,,,,
|
||||
github.com/ory/fosite/token/jwt,2,,,,2,,,,,,,,,,,,,,,,,,,,,,
|
||||
github.com/raindog308/gorqlite,24,8,2,,,,,,,,,,,,24,,,,,,8,,,,,2,
|
||||
github.com/raindog308/gorqlite,24,,,,,,,,,,,,,,24,,,,,,,,,,,,
|
||||
github.com/revel/revel,2,23,10,,,,,,1,,,,,,,1,,,,,,,,23,,10,
|
||||
github.com/robfig/revel,2,23,10,,,,,,1,,,,,,,1,,,,,,,,23,,10,
|
||||
github.com/rqlite/gorqlite,24,8,2,,,,,,,,,,,,24,,,,,,8,,,,,2,
|
||||
github.com/rqlite/gorqlite,24,,,,,,,,,,,,,,24,,,,,,,,,,,,
|
||||
github.com/santhosh-tekuri/xpathparser,2,,,,,,,,,,,,,,,,,,2,,,,,,,,
|
||||
github.com/sendgrid/sendgrid-go/helpers/mail,,,1,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
github.com/sirupsen/logrus,145,,,,,,145,,,,,,,,,,,,,,,,,,,,
|
||||
|
||||
|
@@ -53,7 +53,7 @@ Go framework & library support
|
||||
`goproxy <https://github.com/elazarl/goproxy>`_,``github.com/elazarl/goproxy*``,2,2,2
|
||||
`gorilla/mux <https://github.com/gorilla/mux>`_,``github.com/gorilla/mux*``,1,,
|
||||
`gorilla/websocket <https://github.com/gorilla/websocket>`_,``github.com/gorilla/websocket*``,3,,
|
||||
`gorqlite <https://github.com/rqlite/gorqlite>`_,"``github.com/raindog308/gorqlite*``, ``github.com/rqlite/gorqlite*``",16,4,48
|
||||
`gorqlite <https://github.com/rqlite/gorqlite>`_,"``github.com/raindog308/gorqlite*``, ``github.com/rqlite/gorqlite*``",,,48
|
||||
`goxpath <https://github.com/ChrisTrenkamp/goxpath/wiki>`_,``github.com/ChrisTrenkamp/goxpath*``,,,3
|
||||
`htmlquery <https://github.com/antchfx/htmlquery>`_,``github.com/antchfx/htmlquery*``,,,4
|
||||
`json-iterator <https://github.com/json-iterator/go>`_,``github.com/json-iterator/go*``,,4,
|
||||
@@ -73,6 +73,5 @@ Go framework & library support
|
||||
`xpathparser <https://github.com/santhosh-tekuri/xpathparser>`_,``github.com/santhosh-tekuri/xpathparser*``,,,2
|
||||
`yaml <https://gopkg.in/yaml.v3>`_,``gopkg.in/yaml*``,,9,
|
||||
`zap <https://go.uber.org/zap>`_,``go.uber.org/zap*``,,11,33
|
||||
Others,``github.com/kanikanema/gorqlite``,8,2,24
|
||||
Totals,,494,958,1556
|
||||
Totals,,470,952,1532
|
||||
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
category: feature
|
||||
---
|
||||
* The Java extractor and QL libraries now support Java 24.
|
||||
@@ -2,8 +2,6 @@
|
||||
| AbstractList$RandomAccessSpliterator | .../AbstractList$RandomAccessSpliterator.class:0:0:0:0 |
|
||||
| ArrayList | .../ArrayList.class:0:0:0:0 |
|
||||
| ArrayList$ArrayListSpliterator | .../ArrayList$ArrayListSpliterator.class:0:0:0:0 |
|
||||
| CleanerImpl$CleanableList | .../CleanerImpl$CleanableList.class:0:0:0:0 |
|
||||
| CleanerImpl$CleanableList$Node | .../CleanerImpl$CleanableList$Node.class:0:0:0:0 |
|
||||
| List | .../List.class:0:0:0:0 |
|
||||
| ListIterator | .../ListIterator.class:0:0:0:0 |
|
||||
| MemorySessionImpl$ResourceList | .../MemorySessionImpl$ResourceList.class:0:0:0:0 |
|
||||
|
||||
@@ -16,22 +16,6 @@ methodWithDuplicate
|
||||
| AbstractCollection<E> | removeAll | Collection<?> |
|
||||
| AbstractCollection<E> | retainAll | Collection<?> |
|
||||
| AbstractCollection<E> | toArray | T[] |
|
||||
| AbstractCollection<Entry<K,V>> | add | Entry<K,V> |
|
||||
| AbstractCollection<Entry<K,V>> | addAll | Collection<? extends Entry<K,V>> |
|
||||
| AbstractCollection<Entry<K,V>> | contains | Object |
|
||||
| AbstractCollection<Entry<K,V>> | containsAll | Collection<?> |
|
||||
| AbstractCollection<Entry<K,V>> | remove | Object |
|
||||
| AbstractCollection<Entry<K,V>> | removeAll | Collection<?> |
|
||||
| AbstractCollection<Entry<K,V>> | retainAll | Collection<?> |
|
||||
| AbstractCollection<Entry<K,V>> | toArray | T[] |
|
||||
| AbstractCollection<K> | add | K |
|
||||
| AbstractCollection<K> | addAll | Collection<? extends K> |
|
||||
| AbstractCollection<K> | contains | Object |
|
||||
| AbstractCollection<K> | containsAll | Collection<?> |
|
||||
| AbstractCollection<K> | remove | Object |
|
||||
| AbstractCollection<K> | removeAll | Collection<?> |
|
||||
| AbstractCollection<K> | retainAll | Collection<?> |
|
||||
| AbstractCollection<K> | toArray | T[] |
|
||||
| AbstractCollection<Runnable> | add | Runnable |
|
||||
| AbstractCollection<Runnable> | addAll | Collection<? extends Runnable> |
|
||||
| AbstractCollection<Runnable> | contains | Object |
|
||||
@@ -56,14 +40,6 @@ methodWithDuplicate
|
||||
| AbstractCollection<T> | removeAll | Collection<?> |
|
||||
| AbstractCollection<T> | retainAll | Collection<?> |
|
||||
| AbstractCollection<T> | toArray | T[] |
|
||||
| AbstractCollection<V> | add | V |
|
||||
| AbstractCollection<V> | addAll | Collection<? extends V> |
|
||||
| AbstractCollection<V> | contains | Object |
|
||||
| AbstractCollection<V> | containsAll | Collection<?> |
|
||||
| AbstractCollection<V> | remove | Object |
|
||||
| AbstractCollection<V> | removeAll | Collection<?> |
|
||||
| AbstractCollection<V> | retainAll | Collection<?> |
|
||||
| AbstractCollection<V> | toArray | T[] |
|
||||
| AbstractList | add | E |
|
||||
| AbstractList | add | int |
|
||||
| AbstractList | addAll | Collection<? extends E> |
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
| AbstractList$RandomAccessSpliterator | .../AbstractList$RandomAccessSpliterator.class:0:0:0:0 |
|
||||
| ArrayList | .../ArrayList.class:0:0:0:0 |
|
||||
| ArrayList$ArrayListSpliterator | .../ArrayList$ArrayListSpliterator.class:0:0:0:0 |
|
||||
| CleanerImpl$CleanableList | .../CleanerImpl$CleanableList.class:0:0:0:0 |
|
||||
| CleanerImpl$CleanableList$Node | .../CleanerImpl$CleanableList$Node.class:0:0:0:0 |
|
||||
| List | .../List.class:0:0:0:0 |
|
||||
| ListIterator | .../ListIterator.class:0:0:0:0 |
|
||||
| MemorySessionImpl$ResourceList | .../MemorySessionImpl$ResourceList.class:0:0:0:0 |
|
||||
|
||||
@@ -16,22 +16,6 @@ methodWithDuplicate
|
||||
| AbstractCollection<E> | removeAll | Collection<?> |
|
||||
| AbstractCollection<E> | retainAll | Collection<?> |
|
||||
| AbstractCollection<E> | toArray | T[] |
|
||||
| AbstractCollection<Entry<K,V>> | add | Entry<K,V> |
|
||||
| AbstractCollection<Entry<K,V>> | addAll | Collection<? extends Entry<K,V>> |
|
||||
| AbstractCollection<Entry<K,V>> | contains | Object |
|
||||
| AbstractCollection<Entry<K,V>> | containsAll | Collection<?> |
|
||||
| AbstractCollection<Entry<K,V>> | remove | Object |
|
||||
| AbstractCollection<Entry<K,V>> | removeAll | Collection<?> |
|
||||
| AbstractCollection<Entry<K,V>> | retainAll | Collection<?> |
|
||||
| AbstractCollection<Entry<K,V>> | toArray | T[] |
|
||||
| AbstractCollection<K> | add | K |
|
||||
| AbstractCollection<K> | addAll | Collection<? extends K> |
|
||||
| AbstractCollection<K> | contains | Object |
|
||||
| AbstractCollection<K> | containsAll | Collection<?> |
|
||||
| AbstractCollection<K> | remove | Object |
|
||||
| AbstractCollection<K> | removeAll | Collection<?> |
|
||||
| AbstractCollection<K> | retainAll | Collection<?> |
|
||||
| AbstractCollection<K> | toArray | T[] |
|
||||
| AbstractCollection<Runnable> | add | Runnable |
|
||||
| AbstractCollection<Runnable> | addAll | Collection<? extends Runnable> |
|
||||
| AbstractCollection<Runnable> | contains | Object |
|
||||
@@ -56,14 +40,6 @@ methodWithDuplicate
|
||||
| AbstractCollection<T> | removeAll | Collection<?> |
|
||||
| AbstractCollection<T> | retainAll | Collection<?> |
|
||||
| AbstractCollection<T> | toArray | T[] |
|
||||
| AbstractCollection<V> | add | V |
|
||||
| AbstractCollection<V> | addAll | Collection<? extends V> |
|
||||
| AbstractCollection<V> | contains | Object |
|
||||
| AbstractCollection<V> | containsAll | Collection<?> |
|
||||
| AbstractCollection<V> | remove | Object |
|
||||
| AbstractCollection<V> | removeAll | Collection<?> |
|
||||
| AbstractCollection<V> | retainAll | Collection<?> |
|
||||
| AbstractCollection<V> | toArray | T[] |
|
||||
| AbstractList | add | E |
|
||||
| AbstractList | add | int |
|
||||
| AbstractList | addAll | Collection<? extends E> |
|
||||
|
||||
@@ -333,7 +333,6 @@ compGenerated
|
||||
| file://<external>/TextStyle.class:0:0:0:0 | getEntries | Default property accessor |
|
||||
| file://<external>/Thread$State.class:0:0:0:0 | getEntries | Default property accessor |
|
||||
| file://<external>/TimeUnit.class:0:0:0:0 | getEntries | Default property accessor |
|
||||
| file://<external>/TypeKind.class:0:0:0:0 | getEntries | Default property accessor |
|
||||
| file://<external>/VarHandle$AccessMode.class:0:0:0:0 | getEntries | Default property accessor |
|
||||
| file://<external>/VarHandle$AccessType.class:0:0:0:0 | getEntries | Default property accessor |
|
||||
| file://<external>/Wrapper.class:0:0:0:0 | getEntries | Default property accessor |
|
||||
|
||||
@@ -2,5 +2,5 @@ Test.java:
|
||||
# 0| [CompilationUnit] Test
|
||||
# 1| 1: [Class] Test
|
||||
#-----| -1: (Base Types)
|
||||
# 1| 0: [TypeAccess] Unavailable<String>
|
||||
# 1| 0: [TypeAccess] <any>
|
||||
# 1| 0: [TypeAccess] String
|
||||
|
||||
@@ -3,5 +3,4 @@
|
||||
| Test.java:6:23:6:39 | Unexpected symbol for constructor: new NoSuchClass() |
|
||||
| Test.java:6:23:6:39 | Unknown or erroneous type for expression of kind ClassInstanceCreation |
|
||||
| Test.java:6:27:6:37 | Unknown or erroneous type for expression of kind TypeAccess |
|
||||
| Test.java:7:12:7:14 | Unknown or erroneous type for expression of kind VarAccess |
|
||||
| file://:0:0:0:0 | 2 errors during annotation processing |
|
||||
|
||||
@@ -14,4 +14,3 @@ public class Test {
|
||||
// Diagnostic Matches: 2 errors during annotation processing
|
||||
// Diagnostic Matches: Unknown or erroneous type for expression of kind TypeAccess
|
||||
// Diagnostic Matches: Unknown or erroneous type for expression of kind ClassInstanceCreation
|
||||
// Diagnostic Matches: Unknown or erroneous type for expression of kind VarAccess
|
||||
|
||||
@@ -78,3 +78,9 @@ options:
|
||||
Collect flame graph data using the `tracing-flame` crate. To render a flame graph
|
||||
or chart, run the `inferno-flamegraph` command. See also: https://crates.io/crates/tracing-flame
|
||||
type: string
|
||||
skip_path_resolution:
|
||||
title: Skip path resolution
|
||||
description: >
|
||||
Skip path resolution. This is experimental, while we move path resolution from the extractor to the QL library.
|
||||
extra_env_vars:
|
||||
CODEQL_EXTRACTOR_RUST_SKIP_PATH_RESOLUTION: "true"
|
||||
|
||||
@@ -66,6 +66,7 @@ pub struct Config {
|
||||
pub build_script_command: Vec<String>,
|
||||
pub extra_includes: Vec<PathBuf>,
|
||||
pub proc_macro_server: Option<PathBuf>,
|
||||
pub skip_path_resolution: bool,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use crate::diagnostics::{emit_extraction_diagnostics, ExtractionStep};
|
||||
use crate::rust_analyzer::path_to_file_id;
|
||||
use crate::translate::ResolvePaths;
|
||||
use crate::trap::TrapId;
|
||||
use anyhow::Context;
|
||||
use archive::Archiver;
|
||||
@@ -44,7 +45,7 @@ impl<'a> Extractor<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
fn extract(&mut self, rust_analyzer: &rust_analyzer::RustAnalyzer, file: &std::path::Path) {
|
||||
fn extract(&mut self, rust_analyzer: &RustAnalyzer, file: &Path, resolve_paths: ResolvePaths) {
|
||||
self.archiver.archive(file);
|
||||
|
||||
let before_parse = Instant::now();
|
||||
@@ -67,6 +68,7 @@ impl<'a> Extractor<'a> {
|
||||
label,
|
||||
line_index,
|
||||
semantics_info.as_ref().ok(),
|
||||
resolve_paths,
|
||||
);
|
||||
|
||||
for err in errors {
|
||||
@@ -103,12 +105,17 @@ impl<'a> Extractor<'a> {
|
||||
file: &Path,
|
||||
semantics: &Semantics<'_, RootDatabase>,
|
||||
vfs: &Vfs,
|
||||
resolve_paths: ResolvePaths,
|
||||
) {
|
||||
self.extract(&RustAnalyzer::new(vfs, semantics), file);
|
||||
self.extract(&RustAnalyzer::new(vfs, semantics), file, resolve_paths);
|
||||
}
|
||||
|
||||
pub fn extract_without_semantics(&mut self, file: &Path, reason: &str) {
|
||||
self.extract(&RustAnalyzer::WithoutSemantics { reason }, file);
|
||||
self.extract(
|
||||
&RustAnalyzer::WithoutSemantics { reason },
|
||||
file,
|
||||
ResolvePaths::No,
|
||||
);
|
||||
}
|
||||
|
||||
pub fn load_manifest(
|
||||
@@ -239,6 +246,11 @@ fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
let cwd = cwd()?;
|
||||
let (cargo_config, load_cargo_config) = cfg.to_cargo_config(&cwd);
|
||||
let resolve_paths = if cfg.skip_path_resolution {
|
||||
ResolvePaths::No
|
||||
} else {
|
||||
ResolvePaths::Yes
|
||||
};
|
||||
for (manifest, files) in map.values().filter(|(_, files)| !files.is_empty()) {
|
||||
if let Some((ref db, ref vfs)) =
|
||||
extractor.load_manifest(manifest, &cargo_config, &load_cargo_config)
|
||||
@@ -246,7 +258,9 @@ fn main() -> anyhow::Result<()> {
|
||||
let semantics = Semantics::new(db);
|
||||
for file in files {
|
||||
match extractor.load_source(file, &semantics, vfs) {
|
||||
Ok(()) => extractor.extract_with_semantics(file, &semantics, vfs),
|
||||
Ok(()) => {
|
||||
extractor.extract_with_semantics(file, &semantics, vfs, resolve_paths)
|
||||
}
|
||||
Err(reason) => extractor.extract_without_semantics(file, &reason),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,4 +2,4 @@ mod base;
|
||||
mod generated;
|
||||
mod mappings;
|
||||
|
||||
pub use base::Translator;
|
||||
pub use base::{ResolvePaths, Translator};
|
||||
|
||||
@@ -86,6 +86,12 @@ macro_rules! dispatch_to_tracing {
|
||||
};
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||
pub enum ResolvePaths {
|
||||
Yes,
|
||||
No,
|
||||
}
|
||||
|
||||
pub struct Translator<'a> {
|
||||
pub trap: TrapFile,
|
||||
path: &'a str,
|
||||
@@ -93,6 +99,7 @@ pub struct Translator<'a> {
|
||||
line_index: LineIndex,
|
||||
file_id: Option<EditionedFileId>,
|
||||
pub semantics: Option<&'a Semantics<'a, RootDatabase>>,
|
||||
resolve_paths: ResolvePaths,
|
||||
}
|
||||
|
||||
const UNKNOWN_LOCATION: (LineCol, LineCol) =
|
||||
@@ -105,6 +112,7 @@ impl<'a> Translator<'a> {
|
||||
label: Label<generated::File>,
|
||||
line_index: LineIndex,
|
||||
semantic_info: Option<&FileSemanticInformation<'a>>,
|
||||
resolve_paths: ResolvePaths,
|
||||
) -> Translator<'a> {
|
||||
Translator {
|
||||
trap,
|
||||
@@ -113,6 +121,7 @@ impl<'a> Translator<'a> {
|
||||
line_index,
|
||||
file_id: semantic_info.map(|i| i.file_id),
|
||||
semantics: semantic_info.map(|i| i.semantics),
|
||||
resolve_paths,
|
||||
}
|
||||
}
|
||||
fn location(&self, range: TextRange) -> Option<(LineCol, LineCol)> {
|
||||
@@ -500,6 +509,9 @@ impl<'a> Translator<'a> {
|
||||
item: &T,
|
||||
label: Label<generated::Addressable>,
|
||||
) {
|
||||
if self.resolve_paths == ResolvePaths::No {
|
||||
return;
|
||||
}
|
||||
(|| {
|
||||
let sema = self.semantics.as_ref()?;
|
||||
let def = T::Hir::try_from_source(item, sema)?;
|
||||
@@ -520,6 +532,9 @@ impl<'a> Translator<'a> {
|
||||
item: &ast::Variant,
|
||||
label: Label<generated::Variant>,
|
||||
) {
|
||||
if self.resolve_paths == ResolvePaths::No {
|
||||
return;
|
||||
}
|
||||
(|| {
|
||||
let sema = self.semantics.as_ref()?;
|
||||
let def = sema.to_enum_variant_def(item)?;
|
||||
@@ -540,6 +555,9 @@ impl<'a> Translator<'a> {
|
||||
item: &impl PathAst,
|
||||
label: Label<generated::Resolvable>,
|
||||
) {
|
||||
if self.resolve_paths == ResolvePaths::No {
|
||||
return;
|
||||
}
|
||||
(|| {
|
||||
let path = item.path()?;
|
||||
let sema = self.semantics.as_ref()?;
|
||||
@@ -560,6 +578,9 @@ impl<'a> Translator<'a> {
|
||||
item: &ast::MethodCallExpr,
|
||||
label: Label<generated::MethodCallExpr>,
|
||||
) {
|
||||
if self.resolve_paths == ResolvePaths::No {
|
||||
return;
|
||||
}
|
||||
(|| {
|
||||
let sema = self.semantics.as_ref()?;
|
||||
let resolved = sema.resolve_method_call_fallback(item)?;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
| Macro calls - resolved | 2 |
|
||||
| Macro calls - total | 2 |
|
||||
| Macro calls - unresolved | 0 |
|
||||
| Taint edges - number of edges | 1670 |
|
||||
| Taint edges - number of edges | 1471 |
|
||||
| Taint reach - nodes tainted | 0 |
|
||||
| Taint reach - per million nodes | 0 |
|
||||
| Taint sinks - cryptographic operations | 0 |
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
| Macro calls - resolved | 2 |
|
||||
| Macro calls - total | 2 |
|
||||
| Macro calls - unresolved | 0 |
|
||||
| Taint edges - number of edges | 1670 |
|
||||
| Taint edges - number of edges | 1471 |
|
||||
| Taint reach - nodes tainted | 0 |
|
||||
| Taint reach - per million nodes | 0 |
|
||||
| Taint sinks - cryptographic operations | 0 |
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
| Macro calls - resolved | 2 |
|
||||
| Macro calls - total | 2 |
|
||||
| Macro calls - unresolved | 0 |
|
||||
| Taint edges - number of edges | 1670 |
|
||||
| Taint edges - number of edges | 1471 |
|
||||
| Taint reach - nodes tainted | 0 |
|
||||
| Taint reach - per million nodes | 0 |
|
||||
| Taint sinks - cryptographic operations | 0 |
|
||||
|
||||
@@ -11,13 +11,7 @@ private module Input implements InputSig<Location, RustDataFlow> {
|
||||
not exists(n.asExpr().getLocation())
|
||||
}
|
||||
|
||||
predicate postWithInFlowExclude(RustDataFlow::Node n) {
|
||||
n instanceof Node::FlowSummaryNode
|
||||
or
|
||||
// We allow flow into post-update node for receiver expressions (from the
|
||||
// synthetic post receiever node).
|
||||
n.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = any(Node::ReceiverNode r).getReceiver()
|
||||
}
|
||||
predicate postWithInFlowExclude(RustDataFlow::Node n) { n instanceof Node::FlowSummaryNode }
|
||||
|
||||
predicate missingLocationExclude(RustDataFlow::Node n) { not exists(n.asExpr().getLocation()) }
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
private import codeql.util.Void
|
||||
private import codeql.util.Unit
|
||||
private import codeql.util.Boolean
|
||||
private import codeql.dataflow.DataFlow
|
||||
private import codeql.dataflow.internal.DataFlowImpl
|
||||
private import rust
|
||||
@@ -97,8 +96,6 @@ final class ParameterPosition extends TParameterPosition {
|
||||
/** Gets the underlying integer position, if any. */
|
||||
int getPosition() { this = TPositionalParameterPosition(result) }
|
||||
|
||||
predicate hasPosition() { exists(this.getPosition()) }
|
||||
|
||||
/** Holds if this position represents the `self` position. */
|
||||
predicate isSelf() { this = TSelfParameterPosition() }
|
||||
|
||||
@@ -133,21 +130,21 @@ private predicate callToMethod(CallExpr call) {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `arg` is an argument of `call` at the position `pos`.
|
||||
*
|
||||
* Note that this does not hold for the receiever expression of a method call
|
||||
* as the synthetic `ReceiverNode` is the argument for the `self` parameter.
|
||||
*/
|
||||
/** Holds if `arg` is an argument of `call` at the position `pos`. */
|
||||
private predicate isArgumentForCall(ExprCfgNode arg, CallExprBaseCfgNode call, ParameterPosition pos) {
|
||||
if callToMethod(call.(CallExprCfgNode).getCallExpr())
|
||||
then
|
||||
then (
|
||||
// The first argument is for the `self` parameter
|
||||
arg = call.getArgument(0) and pos.isSelf()
|
||||
or
|
||||
// Succeeding arguments are shifted left
|
||||
arg = call.getArgument(pos.getPosition() + 1)
|
||||
else arg = call.getArgument(pos.getPosition())
|
||||
) else (
|
||||
// The self argument in a method call.
|
||||
arg = call.(MethodCallExprCfgNode).getReceiver() and pos.isSelf()
|
||||
or
|
||||
arg = call.getArgument(pos.getPosition())
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -377,30 +374,6 @@ module Node {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The receiver of a method call _after_ any implicit borrow or dereferencing
|
||||
* has taken place.
|
||||
*/
|
||||
final class ReceiverNode extends ArgumentNode, TReceiverNode {
|
||||
private MethodCallExprCfgNode n;
|
||||
|
||||
ReceiverNode() { this = TReceiverNode(n, false) }
|
||||
|
||||
ExprCfgNode getReceiver() { result = n.getReceiver() }
|
||||
|
||||
MethodCallExprCfgNode getMethodCall() { result = n }
|
||||
|
||||
override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) {
|
||||
call.asMethodCallExprCfgNode() = n and pos = TSelfParameterPosition()
|
||||
}
|
||||
|
||||
override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() }
|
||||
|
||||
override Location getLocation() { result = this.getReceiver().getLocation() }
|
||||
|
||||
override string toString() { result = "receiver for " + this.getReceiver() }
|
||||
}
|
||||
|
||||
final class SummaryArgumentNode extends FlowSummaryNode, ArgumentNode {
|
||||
private FlowSummaryImpl::Private::SummaryNode receiver;
|
||||
private RustDataFlow::ArgumentPosition pos_;
|
||||
@@ -546,18 +519,6 @@ module Node {
|
||||
override Location getLocation() { result = n.getLocation() }
|
||||
}
|
||||
|
||||
final class ReceiverPostUpdateNode extends PostUpdateNode, TReceiverNode {
|
||||
private MethodCallExprCfgNode n;
|
||||
|
||||
ReceiverPostUpdateNode() { this = TReceiverNode(n, true) }
|
||||
|
||||
override Node getPreUpdateNode() { result = TReceiverNode(n, false) }
|
||||
|
||||
override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() }
|
||||
|
||||
override Location getLocation() { result = n.getReceiver().getLocation() }
|
||||
}
|
||||
|
||||
final class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode {
|
||||
private FlowSummaryNode pre;
|
||||
|
||||
@@ -687,14 +648,6 @@ module LocalFlow {
|
||||
)
|
||||
or
|
||||
nodeFrom.asPat().(OrPatCfgNode).getAPat() = nodeTo.asPat()
|
||||
or
|
||||
// Simple value step from receiver expression to receiver node, in case
|
||||
// there is no implicit deref or borrow operation.
|
||||
nodeFrom.asExpr() = nodeTo.(Node::ReceiverNode).getReceiver()
|
||||
or
|
||||
// The dual step of the above, for the post-update nodes.
|
||||
nodeFrom.(Node::PostUpdateNode).getPreUpdateNode().(Node::ReceiverNode).getReceiver() =
|
||||
nodeTo.(Node::PostUpdateNode).getPreUpdateNode().asExpr()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1045,23 +998,6 @@ predicate lambdaCallExpr(CallExprCfgNode call, LambdaCallKind kind, ExprCfgNode
|
||||
exists(kind)
|
||||
}
|
||||
|
||||
/** Holds if `mc` implicitly borrows its receiver. */
|
||||
private predicate implicitBorrow(MethodCallExpr mc) {
|
||||
// Determining whether an implicit borrow happens depends on the type of the
|
||||
// receiever as well as the target. As a heuristic we simply check if the
|
||||
// target takes `self` as a borrow and limit the approximation to cases where
|
||||
// the receiver is a simple variable.
|
||||
mc.getReceiver() instanceof VariableAccess and
|
||||
mc.getStaticTarget().getParamList().getSelfParam().isRef()
|
||||
}
|
||||
|
||||
/** Holds if `mc` implicitly dereferences its receiver. */
|
||||
private predicate implicitDeref(MethodCallExpr mc) {
|
||||
// Similarly to `implicitBorrow` this is an approximation.
|
||||
mc.getReceiver() instanceof VariableAccess and
|
||||
not mc.getStaticTarget().getParamList().getSelfParam().isRef()
|
||||
}
|
||||
|
||||
// Defines a set of aliases needed for the `RustDataFlow` module
|
||||
private module Aliases {
|
||||
class DataFlowCallableAlias = DataFlowCallable;
|
||||
@@ -1118,12 +1054,13 @@ module RustDataFlow implements InputSig<Location> {
|
||||
DataFlowType getNodeType(Node node) { any() }
|
||||
|
||||
predicate nodeIsHidden(Node node) {
|
||||
node instanceof Node::SsaNode or
|
||||
node.(Node::FlowSummaryNode).getSummaryNode().isHidden() or
|
||||
node instanceof Node::CaptureNode or
|
||||
node instanceof Node::ClosureParameterNode or
|
||||
node instanceof Node::ReceiverNode or
|
||||
node instanceof Node::ReceiverPostUpdateNode
|
||||
node instanceof Node::SsaNode
|
||||
or
|
||||
node.(Node::FlowSummaryNode).getSummaryNode().isHidden()
|
||||
or
|
||||
node instanceof Node::CaptureNode
|
||||
or
|
||||
node instanceof Node::ClosureParameterNode
|
||||
}
|
||||
|
||||
predicate neverSkipInPathGraph(Node node) {
|
||||
@@ -1232,28 +1169,6 @@ module RustDataFlow implements InputSig<Location> {
|
||||
node2.(Node::FlowSummaryNode).getSummaryNode())
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private predicate implicitDerefToReceiver(Node node1, Node::ReceiverNode node2, ReferenceContent c) {
|
||||
node1.asExpr() = node2.getReceiver() and
|
||||
implicitDeref(node2.getMethodCall().getMethodCallExpr()) and
|
||||
exists(c)
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private predicate implicitBorrowToReceiver(
|
||||
Node node1, Node::ReceiverNode node2, ReferenceContent c
|
||||
) {
|
||||
node1.asExpr() = node2.getReceiver() and
|
||||
implicitBorrow(node2.getMethodCall().getMethodCallExpr()) and
|
||||
exists(c)
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private predicate referenceExprToExpr(Node node1, Node node2, ReferenceContent c) {
|
||||
node1.asExpr() = node2.asExpr().(RefExprCfgNode).getExpr() and
|
||||
exists(c)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if data can flow from `node1` to `node2` via a read of `c`. Thus,
|
||||
* `node1` references an object with a content `c.getAReadContent()` whose
|
||||
@@ -1336,17 +1251,6 @@ module RustDataFlow implements InputSig<Location> {
|
||||
node2.asExpr() = await
|
||||
)
|
||||
or
|
||||
referenceExprToExpr(node2.(PostUpdateNode).getPreUpdateNode(),
|
||||
node1.(PostUpdateNode).getPreUpdateNode(), c)
|
||||
or
|
||||
// Step from receiver expression to receiver node, in case of an implicit
|
||||
// dereference.
|
||||
implicitDerefToReceiver(node1, node2, c)
|
||||
or
|
||||
// A read step dual to the store step for implicit borrows.
|
||||
implicitBorrowToReceiver(node2.(PostUpdateNode).getPreUpdateNode(),
|
||||
node1.(PostUpdateNode).getPreUpdateNode(), c)
|
||||
or
|
||||
VariableCapture::readStep(node1, c, node2)
|
||||
)
|
||||
or
|
||||
@@ -1423,7 +1327,11 @@ module RustDataFlow implements InputSig<Location> {
|
||||
node2.(PostUpdateNode).getPreUpdateNode().asExpr() = index.getBase()
|
||||
)
|
||||
or
|
||||
referenceExprToExpr(node1, node2, c)
|
||||
exists(RefExprCfgNode ref |
|
||||
c instanceof ReferenceContent and
|
||||
node1.asExpr() = ref.getExpr() and
|
||||
node2.asExpr() = ref
|
||||
)
|
||||
or
|
||||
// Store in function argument
|
||||
exists(DataFlowCall call, int i |
|
||||
@@ -1433,10 +1341,6 @@ module RustDataFlow implements InputSig<Location> {
|
||||
)
|
||||
or
|
||||
VariableCapture::storeStep(node1, c, node2)
|
||||
or
|
||||
// Step from receiver expression to receiver node, in case of an implicit
|
||||
// borrow.
|
||||
implicitBorrowToReceiver(node1, node2, c)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1708,25 +1612,17 @@ private module Cached {
|
||||
TPatNode(PatCfgNode p) or
|
||||
TNameNode(NameCfgNode n) { n.getName() = any(Variable v).getName() } or
|
||||
TExprPostUpdateNode(ExprCfgNode e) {
|
||||
isArgumentForCall(e, _, _)
|
||||
or
|
||||
lambdaCallExpr(_, _, e)
|
||||
or
|
||||
lambdaCreationExpr(e.getExpr(), _)
|
||||
or
|
||||
// Whenever `&mut e` has a post-update node we also create one for `e`.
|
||||
// E.g., for `e` in `f(..., &mut e, ...)` or `*(&mut e) = ...`.
|
||||
e = any(RefExprCfgNode ref | ref.isMut() and exists(TExprPostUpdateNode(ref))).getExpr()
|
||||
or
|
||||
isArgumentForCall(e, _, _) or
|
||||
lambdaCallExpr(_, _, e) or
|
||||
lambdaCreationExpr(e.getExpr(), _) or
|
||||
e =
|
||||
[
|
||||
any(IndexExprCfgNode i).getBase(), any(FieldExprCfgNode access).getExpr(),
|
||||
any(TryExprCfgNode try).getExpr(),
|
||||
any(PrefixExprCfgNode pe | pe.getOperatorName() = "*").getExpr(),
|
||||
any(AwaitExprCfgNode a).getExpr(), any(MethodCallExprCfgNode mc).getReceiver()
|
||||
any(AwaitExprCfgNode a).getExpr()
|
||||
]
|
||||
} or
|
||||
TReceiverNode(MethodCallExprCfgNode mc, Boolean isPost) or
|
||||
TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or
|
||||
TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or
|
||||
TClosureSelfReferenceNode(CfgScope c) { lambdaCreationExpr(c, _) } or
|
||||
|
||||
@@ -47,7 +47,26 @@ module SsaInput implements SsaImplCommon::InputSig<Location> {
|
||||
|
||||
BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() }
|
||||
|
||||
class SourceVariable = Variable;
|
||||
/**
|
||||
* A variable amenable to SSA construction.
|
||||
*
|
||||
* All immutable variables are amenable. Mutable variables are restricted to
|
||||
* those that are not borrowed (either explicitly using `& mut`, or
|
||||
* (potentially) implicit as borrowed receivers in a method call).
|
||||
*/
|
||||
class SourceVariable extends Variable {
|
||||
SourceVariable() {
|
||||
this.isMutable()
|
||||
implies
|
||||
not exists(VariableAccess va | va = this.getAnAccess() |
|
||||
va = any(RefExpr re | re.isMut()).getExpr()
|
||||
or
|
||||
// receivers can be borrowed implicitly, cf.
|
||||
// https://doc.rust-lang.org/reference/expressions/method-call-expr.html
|
||||
va = any(MethodCallExpr mce).getReceiver()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
predicate variableWrite(BasicBlock bb, int i, SourceVariable v, boolean certain) {
|
||||
(
|
||||
@@ -57,12 +76,7 @@ module SsaInput implements SsaImplCommon::InputSig<Location> {
|
||||
) and
|
||||
certain = true
|
||||
or
|
||||
(
|
||||
capturedCallWrite(_, bb, i, v)
|
||||
or
|
||||
mutablyBorrows(bb.getNode(i).getAstNode(), v)
|
||||
) and
|
||||
certain = false
|
||||
capturedCallWrite(_, bb, i, v) and certain = false
|
||||
}
|
||||
|
||||
predicate variableRead(BasicBlock bb, int i, SourceVariable v, boolean certain) {
|
||||
@@ -215,14 +229,6 @@ predicate capturedCallWrite(Expr call, BasicBlock bb, int i, Variable v) {
|
||||
)
|
||||
}
|
||||
|
||||
/** Holds if `v` may be mutably borrowed in `e`. */
|
||||
private predicate mutablyBorrows(Expr e, Variable v) {
|
||||
e = any(MethodCallExpr mc).getReceiver() and
|
||||
e.(VariableAccess).getVariable() = v
|
||||
or
|
||||
exists(RefExpr re | re = e and re.isMut() and re.getExpr().(VariableAccess).getVariable() = v)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if a pseudo read of captured variable `v` should be inserted
|
||||
* at index `i` in exit block `bb`.
|
||||
@@ -373,17 +379,6 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
|
||||
none() // handled in `DataFlowImpl.qll` instead
|
||||
}
|
||||
|
||||
predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) {
|
||||
exists(CfgNodes::CallExprBaseCfgNode call, Variable v, BasicBlock bb, int i |
|
||||
def.definesAt(v, bb, i) and
|
||||
mutablyBorrows(bb.getNode(i).getAstNode(), v)
|
||||
|
|
||||
call.getArgument(_) = bb.getNode(i)
|
||||
or
|
||||
call.(CfgNodes::MethodCallExprCfgNode).getReceiver() = bb.getNode(i)
|
||||
)
|
||||
}
|
||||
|
||||
class Parameter = CfgNodes::ParamBaseCfgNode;
|
||||
|
||||
/** Holds if SSA definition `def` initializes parameter `p` at function entry. */
|
||||
|
||||
@@ -19,13 +19,6 @@ extensions:
|
||||
- ["lang:core", "<crate::slice::iter::Iter as crate::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"]
|
||||
- ["lang:core", "<crate::slice::iter::Iter as crate::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
|
||||
- ["lang:core", "<crate::slice::iter::Iter as crate::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
|
||||
# ptr
|
||||
- ["lang:core", "crate::ptr::read", "Argument[0].Reference", "ReturnValue", "value", "manual"]
|
||||
- ["lang:core", "crate::ptr::read_unaligned", "Argument[0].Reference", "ReturnValue", "value", "manual"]
|
||||
- ["lang:core", "crate::ptr::read_volatile", "Argument[0].Reference", "ReturnValue", "value", "manual"]
|
||||
- ["lang:core", "crate::ptr::write", "Argument[1]", "Argument[0].Reference", "value", "manual"]
|
||||
- ["lang:core", "crate::ptr::write_unaligned", "Argument[1]", "Argument[0].Reference", "value", "manual"]
|
||||
- ["lang:core", "crate::ptr::write_volatile", "Argument[1]", "Argument[0].Reference", "value", "manual"]
|
||||
# Str
|
||||
- ["lang:core", "<str>::parse", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
|
||||
# String
|
||||
|
||||
@@ -18,7 +18,7 @@ extensions:
|
||||
- ["lang:alloc", "<crate::borrow::Cow as crate::ops::arith::AddAssign>::add_assign", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::borrow::Cow as crate::ops::deref::Deref>::deref", "Argument[self].Reference.Field[crate::borrow::Cow::Borrowed(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::borrow::Cow>::into_owned", "Argument[self].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::borrow::Cow>::to_mut", "Argument[self].Reference.Field[crate::borrow::Cow::Owned(0)]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::borrow::Cow>::to_mut", "Argument[self].Reference.Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::borrow::Borrow>::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::borrow::BorrowMut>::borrow_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::clone::Clone>::clone_from", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"]
|
||||
@@ -26,7 +26,6 @@ extensions:
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::convert::AsMut>::as_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::convert::AsRef>::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::convert::TryFrom>::try_from", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::iter::traits::iterator::Iterator>::next", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::iter::traits::iterator::Iterator>::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::ops::deref::Deref>::deref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::boxed::Box as crate::ops::deref::DerefMut>::deref_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
@@ -85,7 +84,6 @@ extensions:
|
||||
- ["lang:alloc", "<crate::collections::btree::node::NodeRef as crate::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::btree::node::NodeRef>::ascend", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::btree::node::NodeRef>::calc_split_length", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:alloc", "<crate::collections::btree::node::NodeRef>::choose_parent_kv", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::btree::node::NodeRef>::find_lower_bound_edge", "Argument[0]", "ReturnValue.Field[1]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::btree::node::NodeRef>::find_lower_bound_edge", "Argument[self]", "ReturnValue.Field[0].Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::btree::node::NodeRef>::find_upper_bound_edge", "Argument[0]", "ReturnValue.Field[1]", "value", "dfc-generated"]
|
||||
@@ -116,7 +114,7 @@ extensions:
|
||||
- ["lang:alloc", "<crate::collections::linked_list::LinkedList>::extract_if", "Argument[0]", "ReturnValue.Field[crate::collections::linked_list::ExtractIf::pred]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::linked_list::LinkedList>::extract_if", "Argument[self]", "ReturnValue.Field[crate::collections::linked_list::ExtractIf::list]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::linked_list::LinkedList>::new_in", "Argument[0]", "ReturnValue.Field[crate::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::linked_list::LinkedList>::split_off", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::linked_list::LinkedList>::split_off", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:alloc", "<crate::collections::vec_deque::VecDeque as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue.Field[crate::collections::vec_deque::into_iter::IntoIter::inner]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::collections::vec_deque::VecDeque>::drain", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:alloc", "<crate::collections::vec_deque::VecDeque>::retain", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"]
|
||||
@@ -183,12 +181,9 @@ extensions:
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::AsRef>::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::AsRef>::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::From>::from", "Argument[0].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::From>::from", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::From>::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::TryFrom>::try_from", "Argument[0].Field[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::string::FromUtf8Error::bytes]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::TryFrom>::try_from", "Argument[0].Field[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::string::String::vec]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::TryFrom>::try_from", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::string::FromUtf8Error::bytes]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::convert::TryFrom>::try_from", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::string::String::vec]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::ops::deref::Deref>::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:alloc", "<crate::string::String as crate::str::traits::FromStr>::from_str", "Argument[0].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
@@ -244,8 +239,5 @@ extensions:
|
||||
- ["lang:alloc", "<dyn crate::error::Error>::downcast", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<str as crate::string::SpecToString>::spec_to_string", "Argument[self].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<str as crate::string::SpecToString>::spec_to_string", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<{766}::StringError as crate::error::Error>::description", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "crate::collections::btree::mem::replace", "Argument[0].Reference", "Argument[1].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "crate::collections::btree::mem::replace", "Argument[1].ReturnValue", "Argument[0].Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "crate::collections::btree::mem::take_mut", "Argument[0].Reference", "Argument[1].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "crate::collections::btree::mem::take_mut", "Argument[1].ReturnValue", "Argument[0].Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "<{345}::StringError as crate::error::Error>::description", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:alloc", "crate::collections::btree::mem::replace", "Argument[1]", "ReturnValue", "taint", "df-generated"]
|
||||
|
||||
@@ -7,13 +7,9 @@ extensions:
|
||||
- ["lang:core", "<&_ as crate::borrow::Borrow>::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&_ as crate::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&_ as crate::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&bool as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&bool as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&bool as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&bool as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&bool as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&bool as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&bool as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
@@ -26,182 +22,86 @@ extensions:
|
||||
- ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&crate::result::Result as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&crate::result::Result as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Iter::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f128 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f16 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f32 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&f64 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i128 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i16 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i32 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i64 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&i8 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&isize as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::borrow::Borrow>::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::borrow::BorrowMut>::borrow_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
@@ -213,7 +113,6 @@ extensions:
|
||||
- ["lang:core", "<&mut _ as crate::iter::traits::double_ended::DoubleEndedIteratorRefSpec>::spec_try_rfold", "Argument[1].ReturnValue.Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::iter::traits::double_ended::DoubleEndedIteratorRefSpec>::spec_try_rfold", "Argument[1].ReturnValue.Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::iter::traits::iterator::Iterator>::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::iter::traits::iterator::Iterator>::next", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::iter::traits::iterator::Iterator>::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"]
|
||||
@@ -223,134 +122,68 @@ extensions:
|
||||
- ["lang:core", "<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_try_fold", "Argument[1].ReturnValue.Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&mut _ as crate::ops::deref::DerefMut>::deref_mut", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&mut crate::result::Result as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&mut crate::result::Result as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::IterMut::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&str as crate::str::pattern::Pattern>::into_searcher", "Argument[0]", "ReturnValue.Field[crate::str::pattern::StrSearcher::haystack]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&str as crate::str::pattern::Pattern>::into_searcher", "Argument[self]", "ReturnValue.Field[crate::str::pattern::StrSearcher::needle]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u128 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u16 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u32 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u64 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&u8 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<&usize as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<[_] as crate::convert::AsMut>::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<[_] as crate::convert::AsRef>::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -419,7 +252,6 @@ extensions:
|
||||
- ["lang:core", "<_ as crate::async_iter::async_iter::IntoAsyncIterator>::into_async_iter", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<_ as crate::borrow::Borrow>::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<_ as crate::borrow::BorrowMut>::borrow_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<_ as crate::clone::uninit::CopySpec>::clone_one", "Argument[0]", "Argument[1].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<_ as crate::convert::From>::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<_ as crate::future::into_future::IntoFuture>::into_future", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<_ as crate::iter::adapters::step_by::SpecRangeSetup>::setup", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -505,14 +337,13 @@ extensions:
|
||||
- ["lang:core", "<crate::cell::UnsafeCell>::get", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<crate::cell::UnsafeCell>::new", "Argument[0]", "ReturnValue.Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cell::UnsafeCell>::raw_get", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<crate::cell::UnsafeCell>::replace", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<crate::cell::once::OnceCell>::get_or_init", "Argument[0].ReturnValue.Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cell::once::OnceCell>::get_or_try_init", "Argument[0].ReturnValue.Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cell::once::OnceCell>::get_or_try_init", "Argument[0].ReturnValue.Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cell::once::OnceCell>::get_or_try_init", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cell::once::OnceCell>::set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cell::once::OnceCell>::try_insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[1]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cell::once::OnceCell>::try_insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cell::once::OnceCell>::try_insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::char::EscapeDebug as crate::iter::traits::iterator::Iterator>::next", "Argument[self].Field[0].Field[crate::char::EscapeDebugInner::Char(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cmp::Ordering>::then", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::cmp::Ordering>::then", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -528,6 +359,7 @@ extensions:
|
||||
- ["lang:core", "<crate::error::Tagged>::as_request", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<crate::escape::EscapeIterInner>::backslash", "Argument[0]", "ReturnValue.Field[crate::escape::EscapeIterInner::data].Element", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ffi::c_str::CStr as crate::convert::AsRef>::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ffi::va_list::VaListImpl>::as_va_list", "Argument[self]", "ReturnValue.Field[crate::ffi::va_list::VaList::inner]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ffi::va_list::VaListImpl>::with_copy", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::fmt::Arguments>::new_const", "Argument[0]", "ReturnValue.Field[crate::fmt::Arguments::pieces]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::fmt::Arguments>::new_v1", "Argument[0]", "ReturnValue.Field[crate::fmt::Arguments::pieces]", "value", "dfc-generated"]
|
||||
@@ -585,7 +417,6 @@ extensions:
|
||||
- ["lang:core", "<crate::fmt::rt::Placeholder>::new", "Argument[3]", "ReturnValue.Field[crate::fmt::rt::Placeholder::flags]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::fmt::rt::Placeholder>::new", "Argument[4]", "ReturnValue.Field[crate::fmt::rt::Placeholder::precision]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::fmt::rt::Placeholder>::new", "Argument[5]", "ReturnValue.Field[crate::fmt::rt::Placeholder::width]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::future::join::MaybeDone>::take_output", "Argument[self].Reference.Field[crate::future::join::MaybeDone::Done(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::future::ready::Ready>::into_inner", "Argument[self].Field[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::io::borrowed_buf::BorrowedBuf as crate::convert::From>::from", "Argument[0]", "ReturnValue.Field[crate::io::borrowed_buf::BorrowedBuf::buf]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::io::borrowed_buf::BorrowedBuf>::clear", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -690,30 +521,24 @@ extensions:
|
||||
- ["lang:core", "<crate::iter::adapters::filter_map::FilterMap>::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::filter_map::FilterMap::f]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlatMap as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlatMap as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlatMap as crate::iter::traits::double_ended::DoubleEndedIterator>::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlatMap as crate::iter::traits::iterator::Iterator>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlatMap as crate::iter::traits::iterator::Iterator>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlatMap as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::Flatten as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::Flatten as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::Flatten as crate::iter::traits::double_ended::DoubleEndedIterator>::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::Flatten as crate::iter::traits::iterator::Iterator>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::Flatten as crate::iter::traits::iterator::Iterator>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::Flatten as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlattenCompat as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlattenCompat as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlattenCompat as crate::iter::traits::double_ended::DoubleEndedIterator>::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlattenCompat as crate::iter::traits::iterator::Iterator>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlattenCompat as crate::iter::traits::iterator::Iterator>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::flatten::FlattenCompat as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::adapters::fuse::FuseImpl>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::adapters::fuse::FuseImpl>::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::traits::double_ended::DoubleEndedIterator>::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::traits::double_ended::DoubleEndedIterator>::try_rfold", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::traits::iterator::Iterator>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::traits::iterator::Iterator>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::fuse::Fuse>::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::fuse::Fuse::iter].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::inspect::Inspect as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::inspect::Inspect as crate::iter::traits::double_ended::DoubleEndedIterator>::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -846,13 +671,16 @@ extensions:
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::SpecFold>::spec_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::SpecFold>::spec_fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::SpecFold>::spec_fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::ZipImpl>::fold", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::ZipImpl>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::ZipImpl>::fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::ZipImpl>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::ZipImpl>::fold", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::ZipImpl>::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::zip::Zip::a]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::adapters::zip::ZipImpl>::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::zip::Zip::b]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::traits::iterator::Iterator>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::traits::iterator::Iterator>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::traits::iterator::Iterator>::fold", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::traits::iterator::Iterator>::fold", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip as crate::iter::traits::iterator::Iterator>::fold", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip>::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::zip::Zip::a]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::adapters::zip::Zip>::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::zip::Zip::b]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::iter::sources::from_fn::FromFn as crate::iter::traits::iterator::Iterator>::next", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
@@ -938,41 +766,23 @@ extensions:
|
||||
- ["lang:core", "<crate::num::diy_float::Fp>::normalize_to", "Argument[0]", "ReturnValue.Field[crate::num::diy_float::Fp::e]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::fmt::Part>::len", "Argument[self].Reference.Field[crate::num::fmt::Part::Zero(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::fmt::Part>::write", "Argument[self].Reference.Field[crate::num::fmt::Part::Zero(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::I32NotAllOnes>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::I32NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::I32NotAllOnes>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::I32NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::I64NotAllOnes>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::I64NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::I64NotAllOnes>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::I64NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::Nanoseconds>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::Nanoseconds(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::Nanoseconds>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::Nanoseconds(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI128Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI128Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI128Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI128Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI16Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI16Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI16Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI16Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI32Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI32Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI32Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI32Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI64Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI64Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI64Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI64Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI8Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroI8Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroI8Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroI8Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroIsizeInner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroIsizeInner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroIsizeInner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroIsizeInner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU128Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU128Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU128Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU128Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU16Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU16Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU16Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU16Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU32Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU32Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU32Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU32Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU64Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU64Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU64Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU64Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU8Inner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroU8Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroU8Inner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroU8Inner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroUsizeInner>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::NonZeroUsizeInner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::NonZeroUsizeInner>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::NonZeroUsizeInner(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::U32NotAllOnes>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::U32NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::U32NotAllOnes>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::U32NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::U64NotAllOnes>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::U64NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::U64NotAllOnes>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::U64NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::UsizeNoHighBit>::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::UsizeNoHighBit(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::niche_types::UsizeNoHighBit>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::num::niche_types::UsizeNoHighBit(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::nonzero::NonZero as crate::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::num::nonzero::NonZero as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
@@ -1031,8 +841,6 @@ extensions:
|
||||
- ["lang:core", "<crate::ops::control_flow::ControlFlow>::break_value", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::control_flow::ControlFlow>::continue_value", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::control_flow::ControlFlow>::into_try", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::control_flow::ControlFlow>::into_value", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::control_flow::ControlFlow>::into_value", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::control_flow::ControlFlow>::map_break", "Argument[0].ReturnValue", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::control_flow::ControlFlow>::map_break", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::control_flow::ControlFlow>::map_break", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"]
|
||||
@@ -1042,10 +850,10 @@ extensions:
|
||||
- ["lang:core", "<crate::ops::index_range::IndexRange>::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::ops::index_range::IndexRange::start]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::index_range::IndexRange>::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::ops::index_range::IndexRange::end]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::index_range::IndexRange>::zero_to", "Argument[0]", "ReturnValue.Field[crate::ops::index_range::IndexRange::end]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::as_mut", "Argument[self].Reference.Field[crate::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::as_mut", "Argument[self].Reference.Field[crate::ops::range::Bound::Included(0)]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::as_ref", "Argument[self].Reference.Field[crate::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::as_ref", "Argument[self].Reference.Field[crate::ops::range::Bound::Included(0)]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::as_mut", "Argument[self].Reference.Field[crate::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::as_mut", "Argument[self].Reference.Field[crate::ops::range::Bound::Included(0)]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::as_ref", "Argument[self].Reference.Field[crate::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::as_ref", "Argument[self].Reference.Field[crate::ops::range::Bound::Included(0)]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::cloned", "Argument[self].Field[crate::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::cloned", "Argument[self].Field[crate::ops::range::Bound::Included(0)]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::range::Bound>::map", "Argument[0].ReturnValue", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"]
|
||||
@@ -1072,27 +880,27 @@ extensions:
|
||||
- ["lang:core", "<crate::ops::try_trait::NeverShortCircuit>::wrap_mut_1", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::ops::try_trait::NeverShortCircuit>::wrap_mut_2", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option as crate::clone::Clone>::clone", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option as crate::convert::From>::from", "Argument[0].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option as crate::convert::From>::from", "Argument[0].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option as crate::convert::From>::from", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option as crate::ops::try_trait::Try>::from_output", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::and", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::and_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::and_then", "Argument[self].Field[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::and_then", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::as_mut", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::as_ref", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::as_mut", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::as_ref", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::cloned", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::copied", "Argument[self].Field[crate::option::Option::Some(0)].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::expect", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::flatten", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert", "Argument[0]", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert_default", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert_with", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert_default", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::get_or_insert_with", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::insert", "Argument[0]", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::insert", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::insert", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::insert", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::insert", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::inspect", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::is_none_or", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::is_none_or", "Argument[self].Field[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
|
||||
@@ -1113,16 +921,13 @@ extensions:
|
||||
- ["lang:core", "<crate::option::Option>::ok_or", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::ok_or", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::ok_or_else", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::ok_or_else", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::ok_or_else", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::or", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::or_else", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::replace", "Argument[0]", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::replace", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::take", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::take_if", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::take_if", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::take_if", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::transpose", "Argument[self].Field[crate::option::Option::Some(0)].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::transpose", "Argument[self].Field[crate::option::Option::Some(0)].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::option::Option>::unwrap", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -1182,12 +987,12 @@ extensions:
|
||||
- ["lang:core", "<crate::result::Result>::and_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::and_then", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::and_then", "Argument[self].Field[crate::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_deref", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_deref_mut", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_mut", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_mut", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_ref", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_ref", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_deref", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_deref_mut", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_mut", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_mut", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_ref", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::as_ref", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::cloned", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::cloned", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::copied", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
@@ -1205,8 +1010,8 @@ extensions:
|
||||
- ["lang:core", "<crate::result::Result>::is_err_and", "Argument[self].Field[crate::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::is_ok_and", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::is_ok_and", "Argument[self].Field[crate::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::iter", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::iter_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::iter", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Iter::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::iter_mut", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::IterMut::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::map", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::map_err", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::result::Result>::map_err", "Argument[self].Field[crate::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"]
|
||||
@@ -1239,7 +1044,6 @@ extensions:
|
||||
- ["lang:core", "<crate::result::Result>::unwrap_unchecked", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::slice::ascii::EscapeAscii as crate::iter::traits::iterator::Iterator>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::slice::ascii::EscapeAscii as crate::iter::traits::iterator::Iterator>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::slice::ascii::EscapeAscii as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::slice::iter::ArrayWindows>::new", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<crate::slice::iter::ChunkBy>::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunkBy::slice]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::slice::iter::ChunkBy>::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::ChunkBy::predicate]", "value", "dfc-generated"]
|
||||
@@ -1295,10 +1099,8 @@ extensions:
|
||||
- ["lang:core", "<crate::str::iter::EscapeDebug as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::EscapeDefault as crate::iter::traits::iterator::Iterator>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::EscapeDefault as crate::iter::traits::iterator::Iterator>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::EscapeDefault as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::EscapeUnicode as crate::iter::traits::iterator::Iterator>::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::EscapeUnicode as crate::iter::traits::iterator::Iterator>::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::EscapeUnicode as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::MatchIndices as crate::clone::Clone>::clone", "Argument[self].Field[0].Field[0]", "ReturnValue.Field[crate::str::iter::MatchIndices(0)].Field[crate::str::iter::MatchIndicesInternal(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::MatchIndices as crate::clone::Clone>::clone", "Argument[self].Field[0]", "ReturnValue.Field[crate::str::iter::MatchIndices(0)]", "value", "dfc-generated"]
|
||||
- ["lang:core", "<crate::str::iter::MatchIndicesInternal as crate::clone::Clone>::clone", "Argument[self].Field[0]", "ReturnValue.Field[crate::str::iter::MatchIndicesInternal(0)]", "value", "dfc-generated"]
|
||||
@@ -1606,8 +1408,6 @@ extensions:
|
||||
- ["lang:core", "<i128>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i128>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i128>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i128>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i128>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i128>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i128>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i128>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -1691,8 +1491,6 @@ extensions:
|
||||
- ["lang:core", "<i16>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i16>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i16>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i16>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i16>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i16>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i16>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i16>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -1776,8 +1574,6 @@ extensions:
|
||||
- ["lang:core", "<i32>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i32>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i32>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i32>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i32>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i32>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i32>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i32>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -1861,8 +1657,6 @@ extensions:
|
||||
- ["lang:core", "<i64>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i64>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i64>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i64>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i64>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i64>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i64>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i64>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -1946,8 +1740,6 @@ extensions:
|
||||
- ["lang:core", "<i8>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i8>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i8>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i8>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i8>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i8>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i8>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<i8>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -2031,8 +1823,6 @@ extensions:
|
||||
- ["lang:core", "<isize>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<isize>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<isize>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<isize>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<isize>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<isize>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<isize>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<isize>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -2120,8 +1910,6 @@ extensions:
|
||||
- ["lang:core", "<u128>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u128>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u128>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u128>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u128>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u128>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u128>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u128>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -2213,8 +2001,6 @@ extensions:
|
||||
- ["lang:core", "<u16>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u16>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u16>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u16>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u16>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u16>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u16>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u16>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -2306,8 +2092,6 @@ extensions:
|
||||
- ["lang:core", "<u32>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u32>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u32>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u32>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u32>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u32>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u32>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u32>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -2392,8 +2176,6 @@ extensions:
|
||||
- ["lang:core", "<u64>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u64>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u64>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u64>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u64>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u64>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u64>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u64>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -2486,8 +2268,6 @@ extensions:
|
||||
- ["lang:core", "<u8>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u8>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u8>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u8>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u8>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u8>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u8>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<u8>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -2576,8 +2356,6 @@ extensions:
|
||||
- ["lang:core", "<usize>::div_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<usize>::div_floor", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<usize>::div_floor", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<usize>::isolate_least_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<usize>::isolate_most_significant_one", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<usize>::midpoint", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<usize>::midpoint", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "<usize>::next_multiple_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -2667,10 +2445,6 @@ extensions:
|
||||
- ["lang:core", "crate::iter::sources::successors::successors", "Argument[0]", "ReturnValue.Field[crate::iter::sources::successors::Successors::next]", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::iter::sources::successors::successors", "Argument[1]", "ReturnValue.Field[crate::iter::sources::successors::Successors::succ]", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::mem::copy", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::mem::replace", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::mem::replace", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::mem::take", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::mem::transmute_copy", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "crate::num::flt2dec::estimator::estimate_scaling_factor", "Argument[1]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "crate::num::flt2dec::strategy::dragon::format_exact", "Argument[1]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "crate::num::flt2dec::strategy::dragon::format_shortest", "Argument[1]", "ReturnValue", "taint", "df-generated"]
|
||||
@@ -2697,7 +2471,6 @@ extensions:
|
||||
- ["lang:core", "crate::panic::abort_unwind", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::ptr::from_mut", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::ptr::from_ref", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::ptr::replace", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::ptr::with_exposed_provenance", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "crate::ptr::with_exposed_provenance_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "crate::slice::sort::shared::find_existing_run", "Argument[1].ReturnValue", "ReturnValue.Field[1]", "value", "dfc-generated"]
|
||||
@@ -2705,6 +2478,5 @@ extensions:
|
||||
- ["lang:core", "crate::slice::sort::shared::smallsort::sort4_stable", "Argument[0].Reference", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::str::converts::from_utf8_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "crate::str::converts::from_utf8_unchecked_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:core", "crate::str::validations::next_code_point", "Argument[0].Element", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::unicode::unicode_data::conversions::to_lower", "Argument[0]", "ReturnValue.Element", "value", "dfc-generated"]
|
||||
- ["lang:core", "crate::unicode::unicode_data::conversions::to_upper", "Argument[0]", "ReturnValue.Element", "value", "dfc-generated"]
|
||||
|
||||
@@ -42,7 +42,6 @@ extensions:
|
||||
- ["lang:proc_macro", "<crate::bridge::Marked as crate::bridge::Mark>::mark", "Argument[0]", "ReturnValue.Field[crate::bridge::Marked::value]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::Punct as crate::bridge::rpc::DecodeMut>::decode", "Argument[0].Element", "ReturnValue.Field[crate::bridge::Punct::ch]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::TokenTree as crate::bridge::rpc::DecodeMut>::decode", "Argument[0].Element", "ReturnValue.Field[crate::bridge::TokenTree::Punct(0)].Field[crate::bridge::Punct::ch]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::buffer::Buffer>::take", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::client::Client as crate::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::client::ProcMacro>::attr", "Argument[0]", "ReturnValue.Field[crate::bridge::client::ProcMacro::Attr::name]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::client::ProcMacro>::bang", "Argument[0]", "ReturnValue.Field[crate::bridge::client::ProcMacro::Bang::name]", "value", "dfc-generated"]
|
||||
@@ -58,10 +57,11 @@ extensions:
|
||||
- ["lang:proc_macro", "<crate::bridge::handle::OwnedStore>::new", "Argument[0]", "ReturnValue.Field[crate::bridge::handle::OwnedStore::counter]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::rpc::PanicMessage>::as_str", "Argument[self].Field[crate::bridge::rpc::PanicMessage::StaticStr(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::rpc::PanicMessage>::as_str", "Argument[self].Field[crate::bridge::rpc::PanicMessage::String(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::server::MarkedTypes as crate::bridge::server::SourceFile>::clone", "Argument[self].Field[0]", "ReturnValue.Field[crate::bridge::Marked::value].Reference", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::server::MarkedTypes as crate::bridge::server::TokenStream>::clone", "Argument[self].Field[0]", "ReturnValue.Field[crate::bridge::Marked::value].Reference", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::server::MaybeCrossThread as crate::bridge::server::ExecutionStrategy>::run_bridge_and_client", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::server::MaybeCrossThread>::new", "Argument[0]", "ReturnValue.Field[crate::bridge::server::MaybeCrossThread::cross_thread]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::bridge::server::SameThread as crate::bridge::server::ExecutionStrategy>::run_bridge_and_client", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::diagnostic::Children as crate::iter::traits::iterator::Iterator>::next", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::diagnostic::Diagnostic>::error", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::diagnostic::Diagnostic>::help", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:proc_macro", "<crate::diagnostic::Diagnostic>::new", "Argument[0]", "ReturnValue.Field[crate::diagnostic::Diagnostic::level]", "value", "dfc-generated"]
|
||||
|
||||
@@ -46,7 +46,6 @@ extensions:
|
||||
- ["lang:std", "<crate::fs::DirBuilder>::recursive", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::fs::DirEntry as crate::sys_common::AsInner>::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::fs::File as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::fs::File::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::fs::FileTimes as crate::os::darwin::fs::FileTimesExt>::set_created", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::fs::FileTimes as crate::sys_common::AsInnerMut>::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::fs::FileTimes>::set_accessed", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::fs::FileTimes>::set_modified", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -67,8 +66,6 @@ extensions:
|
||||
- ["lang:std", "<crate::fs::Permissions as crate::os::unix::fs::PermissionsExt>::set_mode", "Argument[0]", "Argument[self]", "taint", "df-generated"]
|
||||
- ["lang:std", "<crate::fs::Permissions as crate::sys_common::AsInner>::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::fs::Permissions as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::fs::Permissions(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::io::IoSlice>::advance_slices", "Argument[0].Reference.Element", "Argument[0].Reference.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::io::IoSliceMut>::advance_slices", "Argument[0].Reference.Element", "Argument[0].Reference.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::io::buffered::IntoInnerError>::error", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::io::buffered::IntoInnerError>::into_error", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::io::buffered::IntoInnerError>::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -103,9 +100,11 @@ extensions:
|
||||
- ["lang:std", "<crate::os::fd::owned::BorrowedFd as crate::os::fd::owned::AsFd>::as_fd", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::fd::owned::BorrowedFd>::borrow_raw", "Argument[0]", "ReturnValue.Field[crate::os::fd::owned::BorrowedFd::fd].Field[crate::num::niche_types::I32NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::fd::owned::OwnedFd as crate::os::fd::raw::FromRawFd>::from_raw_fd", "Argument[0]", "ReturnValue.Field[crate::os::fd::owned::OwnedFd::fd].Field[crate::num::niche_types::I32NotAllOnes(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::linux::process::PidFd as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::os::linux::process::PidFd::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::unix::net::addr::SocketAddr>::from_parts", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::os::unix::net::addr::SocketAddr::addr]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::unix::net::addr::SocketAddr>::from_parts", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::os::unix::net::addr::SocketAddr::len]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::unix::net::addr::SocketAddr>::new", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::unix::net::ancillary::SocketAncillary>::new", "Argument[0]", "ReturnValue.Field[crate::os::unix::net::ancillary::SocketAncillary::buffer]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::unix::net::datagram::UnixDatagram as crate::sys_common::AsInner>::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::unix::net::listener::UnixListener>::incoming", "Argument[self]", "ReturnValue.Field[crate::os::unix::net::listener::Incoming::listener]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::os::unix::net::stream::UnixStream as crate::sys_common::AsInner>::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
@@ -125,10 +124,12 @@ extensions:
|
||||
- ["lang:std", "<crate::path::PathBuf as crate::convert::From>::from", "Argument[0]", "ReturnValue.Field[crate::path::PathBuf::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::path::PathBuf as crate::str::traits::FromStr>::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:std", "<crate::path::PathBuf>::as_path", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::Child as crate::os::linux::process::ChildExt>::into_pidfd", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::Child as crate::sys_common::FromInner>::from_inner", "Argument[0].Field[0]", "ReturnValue.Field[crate::process::Child::handle]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::ChildStderr as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::ChildStderr::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::ChildStdin as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::ChildStdin::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::ChildStdout as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::ChildStdout::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::Command as crate::os::linux::process::CommandExt>::create_pidfd", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::Command as crate::os::unix::process::CommandExt>::arg0", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::Command as crate::os::unix::process::CommandExt>::gid", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::process::Command as crate::os::unix::process::CommandExt>::groups", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
@@ -173,7 +174,7 @@ extensions:
|
||||
- ["lang:std", "<crate::sync::once_lock::OnceLock>::try_insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[1]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sync::poison::PoisonError>::new", "Argument[0]", "ReturnValue.Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sync::poison::TryLockError as crate::convert::From>::from", "Argument[0]", "ReturnValue.Field[crate::sync::poison::TryLockError::Poisoned(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sync::poison::TryLockError as crate::error::Error>::cause", "Argument[self].Reference.Field[crate::sync::poison::TryLockError::Poisoned(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sync::poison::TryLockError as crate::error::Error>::cause", "Argument[self].Reference.Field[crate::sync::poison::TryLockError::Poisoned(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sync::poison::condvar::Condvar>::wait", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sync::poison::condvar::Condvar>::wait", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sync::poison::condvar::Condvar>::wait_timeout", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"]
|
||||
@@ -227,7 +228,6 @@ extensions:
|
||||
- ["lang:std", "<crate::sys::net::connection::socket::unix::Socket as crate::sys_common::AsInner>::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::net::connection::socket::unix::Socket as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::net::connection::socket::unix::Socket(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::net::connection::socket::unix::Socket as crate::sys_common::IntoInner>::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::os_str::bytes::Buf as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::os_str::bytes::Buf>::from_encoded_bytes_unchecked", "Argument[0]", "ReturnValue.Field[crate::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::fd::FileDesc as crate::sys_common::AsInner>::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::fd::FileDesc as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::fd::FileDesc(0)]", "value", "dfc-generated"]
|
||||
@@ -237,6 +237,11 @@ extensions:
|
||||
- ["lang:std", "<crate::sys::pal::unix::fs::File as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::fs::File(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::fs::File as crate::sys_common::IntoInner>::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::fs::FilePermissions as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::fs::cfm::CachedFileMetadata as crate::sys::pal::unix::kernel_copy::CopyRead>::properties", "Argument[self].Field[1]", "ReturnValue.Field[crate::sys::pal::unix::kernel_copy::CopyParams(0)].Field[crate::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::fs::cfm::CachedFileMetadata as crate::sys::pal::unix::kernel_copy::CopyWrite>::properties", "Argument[self].Field[1]", "ReturnValue.Field[crate::sys::pal::unix::kernel_copy::CopyParams(0)].Field[crate::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::linux::pidfd::PidFd as crate::sys_common::AsInner>::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::linux::pidfd::PidFd as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::linux::pidfd::PidFd(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::linux::pidfd::PidFd as crate::sys_common::IntoInner>::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::pipe::AnonPipe as crate::sys_common::FromInner>::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::pipe::AnonPipe(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::pipe::AnonPipe as crate::sys_common::IntoInner>::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::pipe::AnonPipe>::as_file_desc", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
@@ -251,6 +256,7 @@ extensions:
|
||||
- ["lang:std", "<crate::sys::pal::unix::weak::DlsymWeak>::new", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::weak::DlsymWeak::name]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::pal::unix::weak::ExternWeak>::new", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::weak::ExternWeak::weak_ptr]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::personality::dwarf::DwarfReader>::new", "Argument[0]", "ReturnValue.Field[crate::sys::personality::dwarf::DwarfReader::ptr]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::thread_local::key::racy::LazyKey>::new", "Argument[0]", "ReturnValue.Field[crate::sys::thread_local::key::racy::LazyKey::dtor]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys::thread_local::native::eager::Storage>::new", "Argument[0]", "ReturnValue.Field[crate::sys::thread_local::native::eager::Storage::val].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::sys_common::wstr::WStrUnits>::new", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
- ["lang:std", "<crate::sys_common::wtf8::CodePoint>::from_char", "Argument[0]", "ReturnValue", "taint", "df-generated"]
|
||||
@@ -267,6 +273,8 @@ extensions:
|
||||
- ["lang:std", "<crate::thread::local::LocalKey>::new", "Argument[0]", "ReturnValue.Field[crate::thread::local::LocalKey::inner]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::thread::local::LocalKey>::try_with", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::thread::local::LocalKey>::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::thread::local::LocalKey>::with_borrow", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::thread::local::LocalKey>::with_borrow_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<crate::time::Instant as crate::ops::arith::AddAssign>::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"]
|
||||
- ["lang:std", "<crate::time::Instant as crate::ops::arith::SubAssign>::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"]
|
||||
- ["lang:std", "<crate::time::Instant>::elapsed", "Argument[self]", "ReturnValue", "taint", "df-generated"]
|
||||
@@ -290,9 +298,9 @@ extensions:
|
||||
- ["lang:std", "<i32 as crate::os::fd::raw::AsRawFd>::as_raw_fd", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<i32 as crate::os::fd::raw::FromRawFd>::from_raw_fd", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<i32 as crate::os::fd::raw::IntoRawFd>::into_raw_fd", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "<{486}::StaticStrPayload as crate::panic::PanicPayload>::as_str", "Argument[self].Field[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<{486}::StaticStrPayload as crate::panic::PanicPayload>::get", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<{491}::RewrapBox as crate::panic::PanicPayload>::get", "Argument[self].Field[0].Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<{287}::StaticStrPayload as crate::panic::PanicPayload>::as_str", "Argument[self].Field[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "<{287}::StaticStrPayload as crate::panic::PanicPayload>::get", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "<{292}::RewrapBox as crate::panic::PanicPayload>::get", "Argument[self].Field[0].Reference", "ReturnValue.Reference", "value", "dfc-generated"]
|
||||
- ["lang:std", "crate::backtrace::helper::lazy_resolve", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["lang:std", "crate::io::append_to_string", "Argument[1].ReturnValue.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"]
|
||||
- ["lang:std", "crate::io::append_to_string", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"]
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
// would prefer to write `include!("../canonical_paths/anonymous.rs");`
|
||||
// but `include!` does not work with out-of-dir files
|
||||
|
||||
use super::regular::Trait;
|
||||
|
||||
fn canonicals() {
|
||||
struct OtherStruct;
|
||||
|
||||
trait OtherTrait {
|
||||
fn g(&self);
|
||||
}
|
||||
|
||||
impl OtherTrait for OtherStruct {
|
||||
fn g(&self) {}
|
||||
}
|
||||
|
||||
impl OtherTrait for crate::regular::Struct {
|
||||
fn g(&self) {}
|
||||
}
|
||||
|
||||
impl crate::regular::Trait for OtherStruct {
|
||||
fn f(&self) {}
|
||||
}
|
||||
|
||||
fn nested() {
|
||||
struct OtherStruct;
|
||||
}
|
||||
|
||||
fn usage() {
|
||||
let s = OtherStruct {};
|
||||
s.f();
|
||||
s.g();
|
||||
nested();
|
||||
}
|
||||
}
|
||||
|
||||
fn other() {
|
||||
struct OtherStruct;
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
canonicalPaths
|
||||
| anonymous.rs:4:1:4:26 | Use | None | None |
|
||||
| anonymous.rs:6:1:35:1 | fn canonicals | None | None |
|
||||
| anonymous.rs:7:5:7:23 | struct OtherStruct | None | None |
|
||||
| anonymous.rs:9:5:11:5 | trait OtherTrait | None | None |
|
||||
| anonymous.rs:10:9:10:20 | fn g | None | None |
|
||||
| anonymous.rs:13:5:15:5 | impl OtherTrait for OtherStruct { ... } | None | None |
|
||||
| anonymous.rs:14:9:14:22 | fn g | None | None |
|
||||
| anonymous.rs:17:5:19:5 | impl OtherTrait for ...::Struct { ... } | None | None |
|
||||
| anonymous.rs:18:9:18:22 | fn g | None | None |
|
||||
| anonymous.rs:21:5:23:5 | impl ...::Trait for OtherStruct { ... } | None | None |
|
||||
| anonymous.rs:22:9:22:22 | fn f | None | None |
|
||||
| anonymous.rs:25:5:27:5 | fn nested | None | None |
|
||||
| anonymous.rs:26:9:26:27 | struct OtherStruct | None | None |
|
||||
| anonymous.rs:29:5:34:5 | fn usage | None | None |
|
||||
| anonymous.rs:37:1:39:1 | fn other | None | None |
|
||||
| anonymous.rs:38:5:38:23 | struct OtherStruct | None | None |
|
||||
| lib.rs:1:1:1:14 | mod anonymous | None | None |
|
||||
| lib.rs:2:1:2:12 | mod regular | None | None |
|
||||
| regular.rs:4:1:5:18 | struct Struct | None | None |
|
||||
| regular.rs:7:1:9:1 | trait Trait | None | None |
|
||||
| regular.rs:8:5:8:16 | fn f | None | None |
|
||||
| regular.rs:11:1:13:1 | impl Trait for Struct { ... } | None | None |
|
||||
| regular.rs:12:5:12:18 | fn f | None | None |
|
||||
| regular.rs:15:1:17:1 | impl Struct { ... } | None | None |
|
||||
| regular.rs:16:5:16:18 | fn g | None | None |
|
||||
| regular.rs:19:1:21:1 | trait TraitWithBlanketImpl | None | None |
|
||||
| regular.rs:20:5:20:16 | fn h | None | None |
|
||||
| regular.rs:23:1:25:1 | impl TraitWithBlanketImpl for T { ... } | None | None |
|
||||
| regular.rs:24:5:24:18 | fn h | None | None |
|
||||
| regular.rs:27:1:27:12 | fn free | None | None |
|
||||
| regular.rs:29:1:35:1 | fn usage | None | None |
|
||||
| regular.rs:37:1:41:1 | enum MyEnum | None | None |
|
||||
| regular.rs:43:1:49:1 | fn enum_qualified_usage | None | None |
|
||||
| regular.rs:51:1:58:1 | fn enum_unqualified_usage | None | None |
|
||||
| regular.rs:54:5:54:18 | Use | None | None |
|
||||
| regular.rs:60:1:66:1 | fn enum_match | None | None |
|
||||
resolvedPaths
|
||||
| anonymous.rs:30:17:30:30 | OtherStruct {...} | None | None |
|
||||
| anonymous.rs:31:9:31:9 | s | None | None |
|
||||
| anonymous.rs:31:9:31:13 | s.f(...) | None | None |
|
||||
| anonymous.rs:32:9:32:9 | s | None | None |
|
||||
| anonymous.rs:32:9:32:13 | s.g(...) | None | None |
|
||||
| anonymous.rs:33:9:33:14 | nested | None | None |
|
||||
| regular.rs:30:13:30:21 | Struct {...} | None | None |
|
||||
| regular.rs:31:5:31:5 | s | None | None |
|
||||
| regular.rs:31:5:31:9 | s.f(...) | None | None |
|
||||
| regular.rs:32:5:32:5 | s | None | None |
|
||||
| regular.rs:32:5:32:9 | s.g(...) | None | None |
|
||||
| regular.rs:33:5:33:5 | s | None | None |
|
||||
| regular.rs:33:5:33:9 | s.h(...) | None | None |
|
||||
| regular.rs:34:5:34:8 | free | None | None |
|
||||
| regular.rs:44:9:44:26 | ...::None::<...> | None | None |
|
||||
| regular.rs:45:9:45:20 | ...::Some | None | None |
|
||||
| regular.rs:46:9:46:24 | ...::Variant1 | None | None |
|
||||
| regular.rs:47:9:47:24 | ...::Variant2 | None | None |
|
||||
| regular.rs:48:9:48:33 | ...::Variant3 {...} | None | None |
|
||||
| regular.rs:52:9:52:18 | None::<...> | None | None |
|
||||
| regular.rs:53:9:53:12 | Some | None | None |
|
||||
| regular.rs:55:9:55:16 | Variant1 | None | None |
|
||||
| regular.rs:56:9:56:16 | Variant2 | None | None |
|
||||
| regular.rs:57:9:57:25 | Variant3 {...} | None | None |
|
||||
| regular.rs:61:11:61:11 | e | None | None |
|
||||
| regular.rs:62:9:62:24 | ...::Variant1 | None | None |
|
||||
| regular.rs:63:9:63:27 | ...::Variant2(...) | None | None |
|
||||
| regular.rs:64:9:64:31 | ...::Variant3 {...} | None | None |
|
||||
@@ -0,0 +1 @@
|
||||
extractor-tests/canonical_path/canonical_paths.ql
|
||||
@@ -0,0 +1 @@
|
||||
skip_path_resolution: true
|
||||
@@ -0,0 +1,66 @@
|
||||
// would prefer to write `include!("../canonical_path/regular.rs");
|
||||
// but `include!` does not work with out-of-dir files
|
||||
|
||||
#[derive(Eq, PartialEq)]
|
||||
pub struct Struct;
|
||||
|
||||
pub trait Trait {
|
||||
fn f(&self);
|
||||
}
|
||||
|
||||
impl Trait for Struct {
|
||||
fn f(&self) {}
|
||||
}
|
||||
|
||||
impl Struct {
|
||||
fn g(&self) {}
|
||||
}
|
||||
|
||||
trait TraitWithBlanketImpl {
|
||||
fn h(&self);
|
||||
}
|
||||
|
||||
impl<T: Eq> TraitWithBlanketImpl for T {
|
||||
fn h(&self) {}
|
||||
}
|
||||
|
||||
fn free() {}
|
||||
|
||||
fn usage() {
|
||||
let s = Struct {};
|
||||
s.f();
|
||||
s.g();
|
||||
s.h();
|
||||
free();
|
||||
}
|
||||
|
||||
enum MyEnum {
|
||||
Variant1,
|
||||
Variant2(usize),
|
||||
Variant3 { x: usize },
|
||||
}
|
||||
|
||||
fn enum_qualified_usage() {
|
||||
_ = Option::None::<()>;
|
||||
_ = Option::Some(0);
|
||||
_ = MyEnum::Variant1;
|
||||
_ = MyEnum::Variant2(0);
|
||||
_ = MyEnum::Variant3 { x: 1 };
|
||||
}
|
||||
|
||||
fn enum_unqualified_usage() {
|
||||
_ = None::<()>;
|
||||
_ = Some(0);
|
||||
use MyEnum::*;
|
||||
_ = Variant1;
|
||||
_ = Variant2(0);
|
||||
_ = Variant3 { x: 1 };
|
||||
}
|
||||
|
||||
fn enum_match(e: MyEnum) {
|
||||
match e {
|
||||
MyEnum::Variant1 => {}
|
||||
MyEnum::Variant2(_) => {}
|
||||
MyEnum::Variant3 { .. } => {}
|
||||
}
|
||||
}
|
||||
@@ -27,30 +27,30 @@ edges
|
||||
| main.rs:55:13:55:27 | pass_through(...) | main.rs:55:9:55:9 | b | provenance | |
|
||||
| main.rs:55:26:55:26 | a | main.rs:51:21:51:26 | ...: i64 | provenance | |
|
||||
| main.rs:55:26:55:26 | a | main.rs:55:13:55:27 | pass_through(...) | provenance | |
|
||||
| main.rs:67:22:67:27 | ...: i64 | main.rs:68:14:68:14 | n | provenance | |
|
||||
| main.rs:71:30:77:5 | { ... } | main.rs:90:13:90:25 | mn.get_data(...) | provenance | |
|
||||
| main.rs:75:13:75:21 | source(...) | main.rs:71:30:77:5 | { ... } | provenance | |
|
||||
| main.rs:79:27:79:32 | ...: i64 | main.rs:79:42:85:5 | { ... } | provenance | |
|
||||
| main.rs:67:23:67:28 | ...: i64 | main.rs:68:14:68:14 | n | provenance | |
|
||||
| main.rs:71:31:77:5 | { ... } | main.rs:90:13:90:25 | mn.get_data(...) | provenance | |
|
||||
| main.rs:75:13:75:21 | source(...) | main.rs:71:31:77:5 | { ... } | provenance | |
|
||||
| main.rs:79:28:79:33 | ...: i64 | main.rs:79:43:85:5 | { ... } | provenance | |
|
||||
| main.rs:90:9:90:9 | a | main.rs:91:10:91:10 | a | provenance | |
|
||||
| main.rs:90:13:90:25 | mn.get_data(...) | main.rs:90:9:90:9 | a | provenance | |
|
||||
| main.rs:96:9:96:9 | a | main.rs:97:16:97:16 | a | provenance | |
|
||||
| main.rs:96:13:96:21 | source(...) | main.rs:96:9:96:9 | a | provenance | |
|
||||
| main.rs:97:16:97:16 | a | main.rs:67:22:67:27 | ...: i64 | provenance | |
|
||||
| main.rs:97:16:97:16 | a | main.rs:67:23:67:28 | ...: i64 | provenance | |
|
||||
| main.rs:102:9:102:9 | a | main.rs:103:29:103:29 | a | provenance | |
|
||||
| main.rs:102:13:102:21 | source(...) | main.rs:102:9:102:9 | a | provenance | |
|
||||
| main.rs:103:9:103:9 | b | main.rs:104:10:104:10 | b | provenance | |
|
||||
| main.rs:103:13:103:30 | mn.data_through(...) | main.rs:103:9:103:9 | b | provenance | |
|
||||
| main.rs:103:29:103:29 | a | main.rs:79:27:79:32 | ...: i64 | provenance | |
|
||||
| main.rs:103:29:103:29 | a | main.rs:79:28:79:33 | ...: i64 | provenance | |
|
||||
| main.rs:103:29:103:29 | a | main.rs:103:13:103:30 | mn.data_through(...) | provenance | |
|
||||
| main.rs:109:9:109:9 | a | main.rs:110:25:110:25 | a | provenance | |
|
||||
| main.rs:109:9:109:9 | a | main.rs:110:26:110:26 | a | provenance | |
|
||||
| main.rs:109:13:109:21 | source(...) | main.rs:109:9:109:9 | a | provenance | |
|
||||
| main.rs:110:25:110:25 | a | main.rs:67:22:67:27 | ...: i64 | provenance | |
|
||||
| main.rs:115:9:115:9 | a | main.rs:116:38:116:38 | a | provenance | |
|
||||
| main.rs:110:26:110:26 | a | main.rs:67:23:67:28 | ...: i64 | provenance | |
|
||||
| main.rs:115:9:115:9 | a | main.rs:116:39:116:39 | a | provenance | |
|
||||
| main.rs:115:13:115:22 | source(...) | main.rs:115:9:115:9 | a | provenance | |
|
||||
| main.rs:116:9:116:9 | b | main.rs:117:10:117:10 | b | provenance | |
|
||||
| main.rs:116:13:116:39 | ...::data_through(...) | main.rs:116:9:116:9 | b | provenance | |
|
||||
| main.rs:116:38:116:38 | a | main.rs:79:27:79:32 | ...: i64 | provenance | |
|
||||
| main.rs:116:38:116:38 | a | main.rs:116:13:116:39 | ...::data_through(...) | provenance | |
|
||||
| main.rs:116:13:116:40 | ...::data_through(...) | main.rs:116:9:116:9 | b | provenance | |
|
||||
| main.rs:116:39:116:39 | a | main.rs:79:28:79:33 | ...: i64 | provenance | |
|
||||
| main.rs:116:39:116:39 | a | main.rs:116:13:116:40 | ...::data_through(...) | provenance | |
|
||||
| main.rs:128:12:128:17 | ...: i64 | main.rs:129:24:129:24 | n | provenance | |
|
||||
| main.rs:129:9:129:26 | MyInt {...} [MyInt] | main.rs:128:28:130:5 | { ... } [MyInt] | provenance | |
|
||||
| main.rs:129:24:129:24 | n | main.rs:129:9:129:26 | MyInt {...} [MyInt] | provenance | |
|
||||
@@ -82,6 +82,13 @@ edges
|
||||
| main.rs:202:13:202:21 | source(...) | main.rs:202:9:202:9 | a | provenance | |
|
||||
| main.rs:212:13:212:13 | c | main.rs:213:14:213:14 | c | provenance | |
|
||||
| main.rs:212:17:212:25 | source(...) | main.rs:212:13:212:13 | c | provenance | |
|
||||
| main.rs:228:25:228:30 | ...: i64 | main.rs:229:10:229:10 | c | provenance | |
|
||||
| main.rs:229:6:229:6 | [post] n [&ref] | main.rs:228:12:228:22 | ...: ... [Return] [&ref] | provenance | |
|
||||
| main.rs:229:10:229:10 | c | main.rs:229:6:229:6 | [post] n [&ref] | provenance | |
|
||||
| main.rs:237:13:237:13 | [post] m [&ref] | main.rs:238:11:238:11 | m [&ref] | provenance | |
|
||||
| main.rs:237:16:237:25 | source(...) | main.rs:228:25:228:30 | ...: i64 | provenance | |
|
||||
| main.rs:237:16:237:25 | source(...) | main.rs:237:13:237:13 | [post] m [&ref] | provenance | |
|
||||
| main.rs:238:11:238:11 | m [&ref] | main.rs:238:10:238:11 | * ... | provenance | |
|
||||
nodes
|
||||
| main.rs:12:28:14:1 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:13:5:13:13 | source(...) | semmle.label | source(...) |
|
||||
@@ -114,12 +121,12 @@ nodes
|
||||
| main.rs:55:13:55:27 | pass_through(...) | semmle.label | pass_through(...) |
|
||||
| main.rs:55:26:55:26 | a | semmle.label | a |
|
||||
| main.rs:56:10:56:10 | b | semmle.label | b |
|
||||
| main.rs:67:22:67:27 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:67:23:67:28 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:68:14:68:14 | n | semmle.label | n |
|
||||
| main.rs:71:30:77:5 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:71:31:77:5 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:75:13:75:21 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:79:27:79:32 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:79:42:85:5 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:79:28:79:33 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:79:43:85:5 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:90:9:90:9 | a | semmle.label | a |
|
||||
| main.rs:90:13:90:25 | mn.get_data(...) | semmle.label | mn.get_data(...) |
|
||||
| main.rs:91:10:91:10 | a | semmle.label | a |
|
||||
@@ -134,12 +141,12 @@ nodes
|
||||
| main.rs:104:10:104:10 | b | semmle.label | b |
|
||||
| main.rs:109:9:109:9 | a | semmle.label | a |
|
||||
| main.rs:109:13:109:21 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:110:25:110:25 | a | semmle.label | a |
|
||||
| main.rs:110:26:110:26 | a | semmle.label | a |
|
||||
| main.rs:115:9:115:9 | a | semmle.label | a |
|
||||
| main.rs:115:13:115:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:116:9:116:9 | b | semmle.label | b |
|
||||
| main.rs:116:13:116:39 | ...::data_through(...) | semmle.label | ...::data_through(...) |
|
||||
| main.rs:116:38:116:38 | a | semmle.label | a |
|
||||
| main.rs:116:13:116:40 | ...::data_through(...) | semmle.label | ...::data_through(...) |
|
||||
| main.rs:116:39:116:39 | a | semmle.label | a |
|
||||
| main.rs:117:10:117:10 | b | semmle.label | b |
|
||||
| main.rs:128:12:128:17 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:128:28:130:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] |
|
||||
@@ -177,15 +184,24 @@ nodes
|
||||
| main.rs:212:13:212:13 | c | semmle.label | c |
|
||||
| main.rs:212:17:212:25 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:213:14:213:14 | c | semmle.label | c |
|
||||
| main.rs:228:12:228:22 | ...: ... [Return] [&ref] | semmle.label | ...: ... [Return] [&ref] |
|
||||
| main.rs:228:25:228:30 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:229:6:229:6 | [post] n [&ref] | semmle.label | [post] n [&ref] |
|
||||
| main.rs:229:10:229:10 | c | semmle.label | c |
|
||||
| main.rs:237:13:237:13 | [post] m [&ref] | semmle.label | [post] m [&ref] |
|
||||
| main.rs:237:16:237:25 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:238:10:238:11 | * ... | semmle.label | * ... |
|
||||
| main.rs:238:11:238:11 | m [&ref] | semmle.label | m [&ref] |
|
||||
subpaths
|
||||
| main.rs:36:26:36:26 | a | main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | main.rs:36:13:36:27 | pass_through(...) |
|
||||
| main.rs:41:26:44:5 | { ... } | main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | main.rs:41:13:44:6 | pass_through(...) |
|
||||
| main.rs:55:26:55:26 | a | main.rs:51:21:51:26 | ...: i64 | main.rs:51:36:53:5 | { ... } | main.rs:55:13:55:27 | pass_through(...) |
|
||||
| main.rs:103:29:103:29 | a | main.rs:79:27:79:32 | ...: i64 | main.rs:79:42:85:5 | { ... } | main.rs:103:13:103:30 | mn.data_through(...) |
|
||||
| main.rs:116:38:116:38 | a | main.rs:79:27:79:32 | ...: i64 | main.rs:79:42:85:5 | { ... } | main.rs:116:13:116:39 | ...::data_through(...) |
|
||||
| main.rs:103:29:103:29 | a | main.rs:79:28:79:33 | ...: i64 | main.rs:79:43:85:5 | { ... } | main.rs:103:13:103:30 | mn.data_through(...) |
|
||||
| main.rs:116:39:116:39 | a | main.rs:79:28:79:33 | ...: i64 | main.rs:79:43:85:5 | { ... } | main.rs:116:13:116:40 | ...::data_through(...) |
|
||||
| main.rs:134:24:134:33 | source(...) | main.rs:128:12:128:17 | ...: i64 | main.rs:128:28:130:5 | { ... } [MyInt] | main.rs:134:13:134:34 | ...::new(...) [MyInt] |
|
||||
| main.rs:187:49:187:49 | a [MyInt] | main.rs:175:18:175:21 | SelfParam [MyInt] | main.rs:175:48:177:5 | { ... } [MyInt] | main.rs:187:30:187:53 | ...::take_self(...) [MyInt] |
|
||||
| main.rs:192:54:192:54 | b [MyInt] | main.rs:179:26:179:37 | ...: MyInt [MyInt] | main.rs:179:49:181:5 | { ... } [MyInt] | main.rs:192:30:192:55 | ...::take_second(...) [MyInt] |
|
||||
| main.rs:237:16:237:25 | source(...) | main.rs:228:25:228:30 | ...: i64 | main.rs:228:12:228:22 | ...: ... [Return] [&ref] | main.rs:237:13:237:13 | [post] m [&ref] |
|
||||
testFailures
|
||||
#select
|
||||
| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) | source(...) |
|
||||
@@ -203,3 +219,4 @@ testFailures
|
||||
| main.rs:193:10:193:10 | c | main.rs:191:28:191:37 | source(...) | main.rs:193:10:193:10 | c | $@ | main.rs:191:28:191:37 | source(...) | source(...) |
|
||||
| main.rs:203:10:203:10 | a | main.rs:202:13:202:21 | source(...) | main.rs:203:10:203:10 | a | $@ | main.rs:202:13:202:21 | source(...) | source(...) |
|
||||
| main.rs:213:14:213:14 | c | main.rs:212:17:212:25 | source(...) | main.rs:213:14:213:14 | c | $@ | main.rs:212:17:212:25 | source(...) | source(...) |
|
||||
| main.rs:238:10:238:11 | * ... | main.rs:237:16:237:25 | source(...) | main.rs:238:10:238:11 | * ... | $@ | main.rs:237:16:237:25 | source(...) | source(...) |
|
||||
|
||||
@@ -64,11 +64,11 @@ struct MyFlag {
|
||||
}
|
||||
|
||||
impl MyFlag {
|
||||
fn data_in(self, n: i64) {
|
||||
fn data_in(&self, n: i64) {
|
||||
sink(n); // $ hasValueFlow=1 hasValueFlow=8
|
||||
}
|
||||
|
||||
fn get_data(self) -> i64 {
|
||||
fn get_data(&self) -> i64 {
|
||||
if self.flag {
|
||||
0
|
||||
} else {
|
||||
@@ -76,7 +76,7 @@ impl MyFlag {
|
||||
}
|
||||
}
|
||||
|
||||
fn data_through(self, n: i64) -> i64 {
|
||||
fn data_through(&self, n: i64) -> i64 {
|
||||
if self.flag {
|
||||
0
|
||||
} else {
|
||||
@@ -107,13 +107,13 @@ fn data_through_method() {
|
||||
fn data_in_to_method_called_as_function() {
|
||||
let mn = MyFlag { flag: true };
|
||||
let a = source(8);
|
||||
MyFlag::data_in(mn, a);
|
||||
MyFlag::data_in(&mn, a);
|
||||
}
|
||||
|
||||
fn data_through_method_called_as_function() {
|
||||
let mn = MyFlag { flag: true };
|
||||
let a = source(12);
|
||||
let b = MyFlag::data_through(mn, a);
|
||||
let b = MyFlag::data_through(&mn, a);
|
||||
sink(b); // $ hasValueFlow=12
|
||||
}
|
||||
|
||||
@@ -223,6 +223,29 @@ fn test_async_await() {
|
||||
futures::executor::block_on(test_async_await_async_part());
|
||||
}
|
||||
|
||||
// Flow out of mutable parameters.
|
||||
|
||||
fn set_int(n: &mut i64, c: i64) {
|
||||
*n = c;
|
||||
}
|
||||
|
||||
fn mutates_argument_1() {
|
||||
// Passing an already borrowed value to a function and then reading from the same borrow.
|
||||
let mut n = 0;
|
||||
let m = &mut n;
|
||||
sink(*m);
|
||||
set_int(m, source(37));
|
||||
sink(*m); // $ hasValueFlow=37
|
||||
}
|
||||
|
||||
fn mutates_argument_2() {
|
||||
// Borrowing at the call and then reading from the unborrowed variable.
|
||||
let mut n = 0;
|
||||
sink(n);
|
||||
set_int(&mut n, source(88));
|
||||
sink(n); // $ MISSING: hasValueFlow=88
|
||||
}
|
||||
|
||||
fn main() {
|
||||
data_out_of_call();
|
||||
data_in_to_call();
|
||||
@@ -235,4 +258,6 @@ fn main() {
|
||||
|
||||
test_operator_overloading();
|
||||
test_async_await();
|
||||
mutates_argument_1();
|
||||
mutates_argument_2();
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
| main.rs:103:13:103:30 | mn.data_through(...) | main.rs:79:5:85:5 | fn data_through |
|
||||
| main.rs:104:5:104:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
|
||||
| main.rs:109:13:109:21 | source(...) | main.rs:1:1:3:1 | fn source |
|
||||
| main.rs:110:5:110:26 | ...::data_in(...) | main.rs:67:5:69:5 | fn data_in |
|
||||
| main.rs:110:5:110:27 | ...::data_in(...) | main.rs:67:5:69:5 | fn data_in |
|
||||
| main.rs:115:13:115:22 | source(...) | main.rs:1:1:3:1 | fn source |
|
||||
| main.rs:116:13:116:39 | ...::data_through(...) | main.rs:79:5:85:5 | fn data_through |
|
||||
| main.rs:116:13:116:40 | ...::data_through(...) | main.rs:79:5:85:5 | fn data_through |
|
||||
| main.rs:117:5:117:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
|
||||
| main.rs:134:13:134:34 | ...::new(...) | main.rs:127:5:130:5 | fn new |
|
||||
| main.rs:134:24:134:33 | source(...) | main.rs:1:1:3:1 | fn source |
|
||||
@@ -56,12 +56,22 @@
|
||||
| main.rs:220:41:220:54 | async_source(...) | main.rs:201:1:205:1 | fn async_source |
|
||||
| main.rs:221:5:221:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
|
||||
| main.rs:223:33:223:61 | test_async_await_async_part(...) | main.rs:207:1:217:1 | fn test_async_await_async_part |
|
||||
| main.rs:227:5:227:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call |
|
||||
| main.rs:228:5:228:21 | data_in_to_call(...) | main.rs:25:1:28:1 | fn data_in_to_call |
|
||||
| main.rs:229:5:229:23 | data_through_call(...) | main.rs:34:1:38:1 | fn data_through_call |
|
||||
| main.rs:230:5:230:34 | data_through_nested_function(...) | main.rs:48:1:57:1 | fn data_through_nested_function |
|
||||
| main.rs:232:5:232:24 | data_out_of_method(...) | main.rs:88:1:92:1 | fn data_out_of_method |
|
||||
| main.rs:233:5:233:28 | data_in_to_method_call(...) | main.rs:94:1:98:1 | fn data_in_to_method_call |
|
||||
| main.rs:234:5:234:25 | data_through_method(...) | main.rs:100:1:105:1 | fn data_through_method |
|
||||
| main.rs:236:5:236:31 | test_operator_overloading(...) | main.rs:148:1:164:1 | fn test_operator_overloading |
|
||||
| main.rs:237:5:237:22 | test_async_await(...) | main.rs:219:1:224:1 | fn test_async_await |
|
||||
| main.rs:236:5:236:12 | sink(...) | main.rs:5:1:7:1 | fn sink |
|
||||
| main.rs:237:5:237:26 | set_int(...) | main.rs:228:1:230:1 | fn set_int |
|
||||
| main.rs:237:16:237:25 | source(...) | main.rs:1:1:3:1 | fn source |
|
||||
| main.rs:238:5:238:12 | sink(...) | main.rs:5:1:7:1 | fn sink |
|
||||
| main.rs:244:5:244:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
|
||||
| main.rs:245:5:245:31 | set_int(...) | main.rs:228:1:230:1 | fn set_int |
|
||||
| main.rs:245:21:245:30 | source(...) | main.rs:1:1:3:1 | fn source |
|
||||
| main.rs:246:5:246:11 | sink(...) | main.rs:5:1:7:1 | fn sink |
|
||||
| main.rs:250:5:250:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call |
|
||||
| main.rs:251:5:251:21 | data_in_to_call(...) | main.rs:25:1:28:1 | fn data_in_to_call |
|
||||
| main.rs:252:5:252:23 | data_through_call(...) | main.rs:34:1:38:1 | fn data_through_call |
|
||||
| main.rs:253:5:253:34 | data_through_nested_function(...) | main.rs:48:1:57:1 | fn data_through_nested_function |
|
||||
| main.rs:255:5:255:24 | data_out_of_method(...) | main.rs:88:1:92:1 | fn data_out_of_method |
|
||||
| main.rs:256:5:256:28 | data_in_to_method_call(...) | main.rs:94:1:98:1 | fn data_in_to_method_call |
|
||||
| main.rs:257:5:257:25 | data_through_method(...) | main.rs:100:1:105:1 | fn data_through_method |
|
||||
| main.rs:259:5:259:31 | test_operator_overloading(...) | main.rs:148:1:164:1 | fn test_operator_overloading |
|
||||
| main.rs:260:5:260:22 | test_async_await(...) | main.rs:219:1:224:1 | fn test_async_await |
|
||||
| main.rs:261:5:261:24 | mutates_argument_1(...) | main.rs:232:1:239:1 | fn mutates_argument_1 |
|
||||
| main.rs:262:5:262:24 | mutates_argument_2(...) | main.rs:241:1:247:1 | fn mutates_argument_2 |
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -79,16 +79,19 @@ edges
|
||||
| main.rs:229:11:229:12 | s1 [Some] | main.rs:230:9:230:15 | Some(...) [Some] | provenance | |
|
||||
| main.rs:230:9:230:15 | Some(...) [Some] | main.rs:230:14:230:14 | n | provenance | |
|
||||
| main.rs:230:14:230:14 | n | main.rs:230:25:230:25 | n | provenance | |
|
||||
| main.rs:240:9:240:10 | s1 [Some] | main.rs:241:10:241:20 | s1.unwrap(...) | provenance | MaD:1 |
|
||||
| main.rs:240:9:240:10 | s1 [Some] | main.rs:241:10:241:11 | s1 [Some] | provenance | |
|
||||
| main.rs:240:14:240:29 | Some(...) [Some] | main.rs:240:9:240:10 | s1 [Some] | provenance | |
|
||||
| main.rs:240:19:240:28 | source(...) | main.rs:240:14:240:29 | Some(...) [Some] | provenance | |
|
||||
| main.rs:245:9:245:10 | s1 [Some] | main.rs:246:10:246:24 | s1.unwrap_or(...) | provenance | MaD:3 |
|
||||
| main.rs:241:10:241:11 | s1 [Some] | main.rs:241:10:241:20 | s1.unwrap(...) | provenance | MaD:1 |
|
||||
| main.rs:245:9:245:10 | s1 [Some] | main.rs:246:10:246:11 | s1 [Some] | provenance | |
|
||||
| main.rs:245:14:245:29 | Some(...) [Some] | main.rs:245:9:245:10 | s1 [Some] | provenance | |
|
||||
| main.rs:245:19:245:28 | source(...) | main.rs:245:14:245:29 | Some(...) [Some] | provenance | |
|
||||
| main.rs:246:10:246:11 | s1 [Some] | main.rs:246:10:246:24 | s1.unwrap_or(...) | provenance | MaD:3 |
|
||||
| main.rs:249:23:249:32 | source(...) | main.rs:249:10:249:33 | s2.unwrap_or(...) | provenance | MaD:2 |
|
||||
| main.rs:253:9:253:10 | s1 [Some] | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | provenance | MaD:5 |
|
||||
| main.rs:253:9:253:10 | s1 [Some] | main.rs:254:10:254:11 | s1 [Some] | provenance | |
|
||||
| main.rs:253:14:253:29 | Some(...) [Some] | main.rs:253:9:253:10 | s1 [Some] | provenance | |
|
||||
| main.rs:253:19:253:28 | source(...) | main.rs:253:14:253:29 | Some(...) [Some] | provenance | |
|
||||
| main.rs:254:10:254:11 | s1 [Some] | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | provenance | MaD:5 |
|
||||
| main.rs:257:31:257:40 | source(...) | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | provenance | MaD:4 |
|
||||
| main.rs:261:9:261:10 | s1 [Some] | main.rs:263:14:263:15 | s1 [Some] | provenance | |
|
||||
| main.rs:261:14:261:29 | Some(...) [Some] | main.rs:261:9:261:10 | s1 [Some] | provenance | |
|
||||
@@ -96,28 +99,34 @@ edges
|
||||
| main.rs:263:9:263:10 | i1 | main.rs:264:10:264:11 | i1 | provenance | |
|
||||
| main.rs:263:14:263:15 | s1 [Some] | main.rs:263:14:263:16 | TryExpr | provenance | |
|
||||
| main.rs:263:14:263:16 | TryExpr | main.rs:263:9:263:10 | i1 | provenance | |
|
||||
| main.rs:270:9:270:10 | r1 [Ok] | main.rs:271:29:271:35 | r1.ok(...) [Some] | provenance | MaD:9 |
|
||||
| main.rs:270:9:270:10 | r1 [Ok] | main.rs:271:29:271:30 | r1 [Ok] | provenance | |
|
||||
| main.rs:270:33:270:46 | Ok(...) [Ok] | main.rs:270:9:270:10 | r1 [Ok] | provenance | |
|
||||
| main.rs:270:36:270:45 | source(...) | main.rs:270:33:270:46 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:271:9:271:11 | o1a [Some] | main.rs:273:10:273:21 | o1a.unwrap(...) | provenance | MaD:1 |
|
||||
| main.rs:271:9:271:11 | o1a [Some] | main.rs:273:10:273:12 | o1a [Some] | provenance | |
|
||||
| main.rs:271:29:271:30 | r1 [Ok] | main.rs:271:29:271:35 | r1.ok(...) [Some] | provenance | MaD:9 |
|
||||
| main.rs:271:29:271:35 | r1.ok(...) [Some] | main.rs:271:9:271:11 | o1a [Some] | provenance | |
|
||||
| main.rs:276:9:276:10 | r2 [Err] | main.rs:278:29:278:36 | r2.err(...) [Some] | provenance | MaD:6 |
|
||||
| main.rs:273:10:273:12 | o1a [Some] | main.rs:273:10:273:21 | o1a.unwrap(...) | provenance | MaD:1 |
|
||||
| main.rs:276:9:276:10 | r2 [Err] | main.rs:278:29:278:30 | r2 [Err] | provenance | |
|
||||
| main.rs:276:33:276:47 | Err(...) [Err] | main.rs:276:9:276:10 | r2 [Err] | provenance | |
|
||||
| main.rs:276:37:276:46 | source(...) | main.rs:276:33:276:47 | Err(...) [Err] | provenance | |
|
||||
| main.rs:278:9:278:11 | o2b [Some] | main.rs:280:10:280:21 | o2b.unwrap(...) | provenance | MaD:1 |
|
||||
| main.rs:278:9:278:11 | o2b [Some] | main.rs:280:10:280:12 | o2b [Some] | provenance | |
|
||||
| main.rs:278:29:278:30 | r2 [Err] | main.rs:278:29:278:36 | r2.err(...) [Some] | provenance | MaD:6 |
|
||||
| main.rs:278:29:278:36 | r2.err(...) [Some] | main.rs:278:9:278:11 | o2b [Some] | provenance | |
|
||||
| main.rs:280:10:280:12 | o2b [Some] | main.rs:280:10:280:21 | o2b.unwrap(...) | provenance | MaD:1 |
|
||||
| main.rs:284:9:284:10 | s1 [Ok] | main.rs:287:14:287:15 | s1 [Ok] | provenance | |
|
||||
| main.rs:284:32:284:45 | Ok(...) [Ok] | main.rs:284:9:284:10 | s1 [Ok] | provenance | |
|
||||
| main.rs:284:35:284:44 | source(...) | main.rs:284:32:284:45 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:287:9:287:10 | i1 | main.rs:289:10:289:11 | i1 | provenance | |
|
||||
| main.rs:287:14:287:15 | s1 [Ok] | main.rs:287:14:287:16 | TryExpr | provenance | |
|
||||
| main.rs:287:14:287:16 | TryExpr | main.rs:287:9:287:10 | i1 | provenance | |
|
||||
| main.rs:297:9:297:10 | s1 [Ok] | main.rs:298:10:298:22 | s1.expect(...) | provenance | MaD:7 |
|
||||
| main.rs:297:9:297:10 | s1 [Ok] | main.rs:298:10:298:11 | s1 [Ok] | provenance | |
|
||||
| main.rs:297:32:297:45 | Ok(...) [Ok] | main.rs:297:9:297:10 | s1 [Ok] | provenance | |
|
||||
| main.rs:297:35:297:44 | source(...) | main.rs:297:32:297:45 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:301:9:301:10 | s2 [Err] | main.rs:303:10:303:26 | s2.expect_err(...) | provenance | MaD:8 |
|
||||
| main.rs:298:10:298:11 | s1 [Ok] | main.rs:298:10:298:22 | s1.expect(...) | provenance | MaD:7 |
|
||||
| main.rs:301:9:301:10 | s2 [Err] | main.rs:303:10:303:11 | s2 [Err] | provenance | |
|
||||
| main.rs:301:32:301:46 | Err(...) [Err] | main.rs:301:9:301:10 | s2 [Err] | provenance | |
|
||||
| main.rs:301:36:301:45 | source(...) | main.rs:301:32:301:46 | Err(...) [Err] | provenance | |
|
||||
| main.rs:303:10:303:11 | s2 [Err] | main.rs:303:10:303:26 | s2.expect_err(...) | provenance | MaD:8 |
|
||||
| main.rs:312:9:312:10 | s1 [A] | main.rs:314:11:314:12 | s1 [A] | provenance | |
|
||||
| main.rs:312:14:312:39 | ...::A(...) [A] | main.rs:312:9:312:10 | s1 [A] | provenance | |
|
||||
| main.rs:312:29:312:38 | source(...) | main.rs:312:14:312:39 | ...::A(...) [A] | provenance | |
|
||||
@@ -203,10 +212,6 @@ edges
|
||||
| main.rs:481:10:481:11 | vs [element] | main.rs:481:10:481:14 | vs[0] | provenance | |
|
||||
| main.rs:485:9:485:9 | v | main.rs:486:14:486:14 | v | provenance | |
|
||||
| main.rs:485:14:485:15 | vs [element] | main.rs:485:9:485:9 | v | provenance | |
|
||||
| main.rs:504:9:504:18 | mut vs_mut [element] | main.rs:506:10:506:15 | vs_mut [element] | provenance | |
|
||||
| main.rs:504:22:504:42 | [...] [element] | main.rs:504:9:504:18 | mut vs_mut [element] | provenance | |
|
||||
| main.rs:504:23:504:32 | source(...) | main.rs:504:22:504:42 | [...] [element] | provenance | |
|
||||
| main.rs:506:10:506:15 | vs_mut [element] | main.rs:506:10:506:18 | vs_mut[0] | provenance | |
|
||||
| main.rs:516:9:516:9 | a | main.rs:521:10:521:10 | a | provenance | |
|
||||
| main.rs:516:13:516:22 | source(...) | main.rs:516:9:516:9 | a | provenance | |
|
||||
| main.rs:518:9:518:9 | c | main.rs:519:18:519:18 | c | provenance | |
|
||||
@@ -305,16 +310,19 @@ nodes
|
||||
| main.rs:240:9:240:10 | s1 [Some] | semmle.label | s1 [Some] |
|
||||
| main.rs:240:14:240:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:240:19:240:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:241:10:241:11 | s1 [Some] | semmle.label | s1 [Some] |
|
||||
| main.rs:241:10:241:20 | s1.unwrap(...) | semmle.label | s1.unwrap(...) |
|
||||
| main.rs:245:9:245:10 | s1 [Some] | semmle.label | s1 [Some] |
|
||||
| main.rs:245:14:245:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:245:19:245:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:246:10:246:11 | s1 [Some] | semmle.label | s1 [Some] |
|
||||
| main.rs:246:10:246:24 | s1.unwrap_or(...) | semmle.label | s1.unwrap_or(...) |
|
||||
| main.rs:249:10:249:33 | s2.unwrap_or(...) | semmle.label | s2.unwrap_or(...) |
|
||||
| main.rs:249:23:249:32 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:253:9:253:10 | s1 [Some] | semmle.label | s1 [Some] |
|
||||
| main.rs:253:14:253:29 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:253:19:253:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:254:10:254:11 | s1 [Some] | semmle.label | s1 [Some] |
|
||||
| main.rs:254:10:254:32 | s1.unwrap_or_else(...) | semmle.label | s1.unwrap_or_else(...) |
|
||||
| main.rs:257:10:257:41 | s2.unwrap_or_else(...) | semmle.label | s2.unwrap_or_else(...) |
|
||||
| main.rs:257:31:257:40 | source(...) | semmle.label | source(...) |
|
||||
@@ -329,13 +337,17 @@ nodes
|
||||
| main.rs:270:33:270:46 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
|
||||
| main.rs:270:36:270:45 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:271:9:271:11 | o1a [Some] | semmle.label | o1a [Some] |
|
||||
| main.rs:271:29:271:30 | r1 [Ok] | semmle.label | r1 [Ok] |
|
||||
| main.rs:271:29:271:35 | r1.ok(...) [Some] | semmle.label | r1.ok(...) [Some] |
|
||||
| main.rs:273:10:273:12 | o1a [Some] | semmle.label | o1a [Some] |
|
||||
| main.rs:273:10:273:21 | o1a.unwrap(...) | semmle.label | o1a.unwrap(...) |
|
||||
| main.rs:276:9:276:10 | r2 [Err] | semmle.label | r2 [Err] |
|
||||
| main.rs:276:33:276:47 | Err(...) [Err] | semmle.label | Err(...) [Err] |
|
||||
| main.rs:276:37:276:46 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:278:9:278:11 | o2b [Some] | semmle.label | o2b [Some] |
|
||||
| main.rs:278:29:278:30 | r2 [Err] | semmle.label | r2 [Err] |
|
||||
| main.rs:278:29:278:36 | r2.err(...) [Some] | semmle.label | r2.err(...) [Some] |
|
||||
| main.rs:280:10:280:12 | o2b [Some] | semmle.label | o2b [Some] |
|
||||
| main.rs:280:10:280:21 | o2b.unwrap(...) | semmle.label | o2b.unwrap(...) |
|
||||
| main.rs:284:9:284:10 | s1 [Ok] | semmle.label | s1 [Ok] |
|
||||
| main.rs:284:32:284:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
|
||||
@@ -347,10 +359,12 @@ nodes
|
||||
| main.rs:297:9:297:10 | s1 [Ok] | semmle.label | s1 [Ok] |
|
||||
| main.rs:297:32:297:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
|
||||
| main.rs:297:35:297:44 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:298:10:298:11 | s1 [Ok] | semmle.label | s1 [Ok] |
|
||||
| main.rs:298:10:298:22 | s1.expect(...) | semmle.label | s1.expect(...) |
|
||||
| main.rs:301:9:301:10 | s2 [Err] | semmle.label | s2 [Err] |
|
||||
| main.rs:301:32:301:46 | Err(...) [Err] | semmle.label | Err(...) [Err] |
|
||||
| main.rs:301:36:301:45 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:303:10:303:11 | s2 [Err] | semmle.label | s2 [Err] |
|
||||
| main.rs:303:10:303:26 | s2.expect_err(...) | semmle.label | s2.expect_err(...) |
|
||||
| main.rs:312:9:312:10 | s1 [A] | semmle.label | s1 [A] |
|
||||
| main.rs:312:14:312:39 | ...::A(...) [A] | semmle.label | ...::A(...) [A] |
|
||||
@@ -449,11 +463,6 @@ nodes
|
||||
| main.rs:485:9:485:9 | v | semmle.label | v |
|
||||
| main.rs:485:14:485:15 | vs [element] | semmle.label | vs [element] |
|
||||
| main.rs:486:14:486:14 | v | semmle.label | v |
|
||||
| main.rs:504:9:504:18 | mut vs_mut [element] | semmle.label | mut vs_mut [element] |
|
||||
| main.rs:504:22:504:42 | [...] [element] | semmle.label | [...] [element] |
|
||||
| main.rs:504:23:504:32 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:506:10:506:15 | vs_mut [element] | semmle.label | vs_mut [element] |
|
||||
| main.rs:506:10:506:18 | vs_mut[0] | semmle.label | vs_mut[0] |
|
||||
| main.rs:516:9:516:9 | a | semmle.label | a |
|
||||
| main.rs:516:13:516:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:518:9:518:9 | c | semmle.label | c |
|
||||
@@ -514,6 +523,5 @@ testFailures
|
||||
| main.rs:472:10:472:10 | a | main.rs:467:13:467:22 | source(...) | main.rs:472:10:472:10 | a | $@ | main.rs:467:13:467:22 | source(...) | source(...) |
|
||||
| main.rs:481:10:481:14 | vs[0] | main.rs:479:15:479:24 | source(...) | main.rs:481:10:481:14 | vs[0] | $@ | main.rs:479:15:479:24 | source(...) | source(...) |
|
||||
| main.rs:486:14:486:14 | v | main.rs:479:15:479:24 | source(...) | main.rs:486:14:486:14 | v | $@ | main.rs:479:15:479:24 | source(...) | source(...) |
|
||||
| main.rs:506:10:506:18 | vs_mut[0] | main.rs:504:23:504:32 | source(...) | main.rs:506:10:506:18 | vs_mut[0] | $@ | main.rs:504:23:504:32 | source(...) | source(...) |
|
||||
| main.rs:521:10:521:10 | a | main.rs:516:13:516:22 | source(...) | main.rs:521:10:521:10 | a | $@ | main.rs:516:13:516:22 | source(...) | source(...) |
|
||||
| main.rs:524:10:524:15 | * ... | main.rs:518:13:518:22 | source(...) | main.rs:524:10:524:15 | * ... | $@ | main.rs:518:13:518:22 | source(...) | source(...) |
|
||||
|
||||
@@ -503,7 +503,7 @@ fn iterators() {
|
||||
|
||||
let mut vs_mut = [source(92), 2, 3, 4];
|
||||
|
||||
sink(vs_mut[0]); // $ hasValueFlow=92
|
||||
sink(vs_mut[0]); // $ MISSING: hasValueFlow=92
|
||||
sink(*vs_mut.iter().next().unwrap()); // $ MISSING: hasValueFlow=92
|
||||
sink(*vs_mut.iter().nth(0).unwrap()); // $ MISSING: hasValueFlow=92
|
||||
|
||||
|
||||
@@ -4,112 +4,118 @@ models
|
||||
| 3 | Summary: lang:core; <crate::option::Option>::zip; Argument[0].Field[crate::option::Option::Some(0)]; ReturnValue.Field[crate::option::Option::Some(0)].Field[1]; value |
|
||||
| 4 | Summary: lang:core; <crate::result::Result as crate::clone::Clone>::clone; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue.Field[crate::result::Result::Ok(0)]; value |
|
||||
| 5 | Summary: lang:core; <crate::result::Result>::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value |
|
||||
| 6 | Summary: lang:core; crate::ptr::read; Argument[0].Reference; ReturnValue; value |
|
||||
| 7 | Summary: lang:core; crate::ptr::write; Argument[1]; Argument[0].Reference; value |
|
||||
edges
|
||||
| main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:19 | a.unwrap(...) | provenance | MaD:2 |
|
||||
| main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:21 | a.clone(...) [Some] | provenance | MaD:1 |
|
||||
| main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:21 | a.clone(...) [Some] | provenance | generated |
|
||||
| main.rs:12:13:12:28 | Some(...) [Some] | main.rs:12:9:12:9 | a [Some] | provenance | |
|
||||
| main.rs:12:18:12:27 | source(...) | main.rs:12:13:12:28 | Some(...) [Some] | provenance | |
|
||||
| main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:19 | b.unwrap(...) | provenance | MaD:2 |
|
||||
| main.rs:14:13:14:21 | a.clone(...) [Some] | main.rs:14:9:14:9 | b [Some] | provenance | |
|
||||
| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:19 | a.unwrap(...) | provenance | MaD:5 |
|
||||
| main.rs:19:9:19:9 | a [Ok] | main.rs:21:13:21:21 | a.clone(...) [Ok] | provenance | MaD:4 |
|
||||
| main.rs:19:9:19:9 | a [Ok] | main.rs:21:13:21:21 | a.clone(...) [Ok] | provenance | generated |
|
||||
| main.rs:19:31:19:44 | Ok(...) [Ok] | main.rs:19:9:19:9 | a [Ok] | provenance | |
|
||||
| main.rs:19:34:19:43 | source(...) | main.rs:19:31:19:44 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:19 | b.unwrap(...) | provenance | MaD:5 |
|
||||
| main.rs:21:13:21:21 | a.clone(...) [Ok] | main.rs:21:9:21:9 | b [Ok] | provenance | |
|
||||
| main.rs:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | |
|
||||
| main.rs:26:9:26:9 | a | main.rs:28:13:28:21 | a.clone(...) | provenance | generated |
|
||||
| main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | a | provenance | |
|
||||
| main.rs:28:9:28:9 | b | main.rs:29:10:29:10 | b | provenance | |
|
||||
| main.rs:28:13:28:21 | a.clone(...) | main.rs:28:9:28:9 | b | provenance | |
|
||||
| main.rs:41:13:41:13 | w [Wrapper] | main.rs:42:15:42:15 | w [Wrapper] | provenance | |
|
||||
| main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | main.rs:41:13:41:13 | w [Wrapper] | provenance | |
|
||||
| main.rs:41:30:41:39 | source(...) | main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | provenance | |
|
||||
| main.rs:42:15:42:15 | w [Wrapper] | main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | provenance | |
|
||||
| main.rs:42:15:42:15 | w [Wrapper] | main.rs:45:17:45:25 | w.clone(...) [Wrapper] | provenance | generated |
|
||||
| main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | main.rs:43:26:43:26 | n | provenance | |
|
||||
| main.rs:43:26:43:26 | n | main.rs:43:38:43:38 | n | provenance | |
|
||||
| main.rs:45:13:45:13 | u [Wrapper] | main.rs:46:15:46:15 | u [Wrapper] | provenance | |
|
||||
| main.rs:45:17:45:25 | w.clone(...) [Wrapper] | main.rs:45:13:45:13 | u [Wrapper] | provenance | |
|
||||
| main.rs:46:15:46:15 | u [Wrapper] | main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | provenance | |
|
||||
| main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | main.rs:47:26:47:26 | n | provenance | |
|
||||
| main.rs:47:26:47:26 | n | main.rs:47:38:47:38 | n | provenance | |
|
||||
| main.rs:58:13:58:13 | b [Some] | main.rs:59:23:59:23 | b [Some] | provenance | |
|
||||
| main.rs:58:17:58:32 | Some(...) [Some] | main.rs:58:13:58:13 | b [Some] | provenance | |
|
||||
| main.rs:58:22:58:31 | source(...) | main.rs:58:17:58:32 | Some(...) [Some] | provenance | |
|
||||
| main.rs:59:13:59:13 | z [Some, tuple.1] | main.rs:60:15:60:15 | z [Some, tuple.1] | provenance | |
|
||||
| main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | main.rs:59:13:59:13 | z [Some, tuple.1] | provenance | |
|
||||
| main.rs:59:23:59:23 | b [Some] | main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:3 |
|
||||
| main.rs:60:15:60:15 | z [Some, tuple.1] | main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | provenance | |
|
||||
| main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | main.rs:61:18:61:23 | TuplePat [tuple.1] | provenance | |
|
||||
| main.rs:61:18:61:23 | TuplePat [tuple.1] | main.rs:61:22:61:22 | m | provenance | |
|
||||
| main.rs:61:22:61:22 | m | main.rs:63:22:63:22 | m | provenance | |
|
||||
| main.rs:84:29:84:29 | [post] y [&ref] | main.rs:85:33:85:33 | y [&ref] | provenance | |
|
||||
| main.rs:84:32:84:41 | source(...) | main.rs:84:29:84:29 | [post] y [&ref] | provenance | MaD:7 |
|
||||
| main.rs:85:33:85:33 | y [&ref] | main.rs:85:18:85:34 | ...::read(...) | provenance | MaD:6 |
|
||||
| main.rs:13:9:13:9 | a [Some] | main.rs:14:10:14:10 | a [Some] | provenance | |
|
||||
| main.rs:13:9:13:9 | a [Some] | main.rs:15:13:15:13 | a [Some] | provenance | |
|
||||
| main.rs:13:13:13:28 | Some(...) [Some] | main.rs:13:9:13:9 | a [Some] | provenance | |
|
||||
| main.rs:13:18:13:27 | source(...) | main.rs:13:13:13:28 | Some(...) [Some] | provenance | |
|
||||
| main.rs:14:10:14:10 | a [Some] | main.rs:14:10:14:19 | a.unwrap(...) | provenance | MaD:2 |
|
||||
| main.rs:15:9:15:9 | b [Some] | main.rs:16:10:16:10 | b [Some] | provenance | |
|
||||
| main.rs:15:13:15:13 | a [Some] | main.rs:15:13:15:21 | a.clone(...) [Some] | provenance | MaD:1 |
|
||||
| main.rs:15:13:15:13 | a [Some] | main.rs:15:13:15:21 | a.clone(...) [Some] | provenance | generated |
|
||||
| main.rs:15:13:15:21 | a.clone(...) [Some] | main.rs:15:9:15:9 | b [Some] | provenance | |
|
||||
| main.rs:16:10:16:10 | b [Some] | main.rs:16:10:16:19 | b.unwrap(...) | provenance | MaD:2 |
|
||||
| main.rs:20:9:20:9 | a [Ok] | main.rs:21:10:21:10 | a [Ok] | provenance | |
|
||||
| main.rs:20:9:20:9 | a [Ok] | main.rs:22:13:22:13 | a [Ok] | provenance | |
|
||||
| main.rs:20:31:20:44 | Ok(...) [Ok] | main.rs:20:9:20:9 | a [Ok] | provenance | |
|
||||
| main.rs:20:34:20:43 | source(...) | main.rs:20:31:20:44 | Ok(...) [Ok] | provenance | |
|
||||
| main.rs:21:10:21:10 | a [Ok] | main.rs:21:10:21:19 | a.unwrap(...) | provenance | MaD:5 |
|
||||
| main.rs:22:9:22:9 | b [Ok] | main.rs:23:10:23:10 | b [Ok] | provenance | |
|
||||
| main.rs:22:13:22:13 | a [Ok] | main.rs:22:13:22:21 | a.clone(...) [Ok] | provenance | MaD:4 |
|
||||
| main.rs:22:13:22:13 | a [Ok] | main.rs:22:13:22:21 | a.clone(...) [Ok] | provenance | generated |
|
||||
| main.rs:22:13:22:21 | a.clone(...) [Ok] | main.rs:22:9:22:9 | b [Ok] | provenance | |
|
||||
| main.rs:23:10:23:10 | b [Ok] | main.rs:23:10:23:19 | b.unwrap(...) | provenance | MaD:5 |
|
||||
| main.rs:27:9:27:9 | a | main.rs:28:10:28:10 | a | provenance | |
|
||||
| main.rs:27:9:27:9 | a | main.rs:29:13:29:13 | a | provenance | |
|
||||
| main.rs:27:13:27:22 | source(...) | main.rs:27:9:27:9 | a | provenance | |
|
||||
| main.rs:29:9:29:9 | b | main.rs:30:10:30:10 | b | provenance | |
|
||||
| main.rs:29:13:29:13 | a | main.rs:29:13:29:21 | a.clone(...) | provenance | generated |
|
||||
| main.rs:29:13:29:21 | a.clone(...) | main.rs:29:9:29:9 | b | provenance | |
|
||||
| main.rs:42:13:42:13 | w [Wrapper] | main.rs:43:15:43:15 | w [Wrapper] | provenance | |
|
||||
| main.rs:42:17:42:41 | Wrapper {...} [Wrapper] | main.rs:42:13:42:13 | w [Wrapper] | provenance | |
|
||||
| main.rs:42:30:42:39 | source(...) | main.rs:42:17:42:41 | Wrapper {...} [Wrapper] | provenance | |
|
||||
| main.rs:43:15:43:15 | w [Wrapper] | main.rs:44:13:44:28 | Wrapper {...} [Wrapper] | provenance | |
|
||||
| main.rs:43:15:43:15 | w [Wrapper] | main.rs:46:17:46:17 | w [Wrapper] | provenance | |
|
||||
| main.rs:44:13:44:28 | Wrapper {...} [Wrapper] | main.rs:44:26:44:26 | n | provenance | |
|
||||
| main.rs:44:26:44:26 | n | main.rs:44:38:44:38 | n | provenance | |
|
||||
| main.rs:46:13:46:13 | u [Wrapper] | main.rs:47:15:47:15 | u [Wrapper] | provenance | |
|
||||
| main.rs:46:17:46:17 | w [Wrapper] | main.rs:46:17:46:25 | w.clone(...) [Wrapper] | provenance | generated |
|
||||
| main.rs:46:17:46:25 | w.clone(...) [Wrapper] | main.rs:46:13:46:13 | u [Wrapper] | provenance | |
|
||||
| main.rs:47:15:47:15 | u [Wrapper] | main.rs:48:13:48:28 | Wrapper {...} [Wrapper] | provenance | |
|
||||
| main.rs:48:13:48:28 | Wrapper {...} [Wrapper] | main.rs:48:26:48:26 | n | provenance | |
|
||||
| main.rs:48:26:48:26 | n | main.rs:48:38:48:38 | n | provenance | |
|
||||
| main.rs:59:13:59:13 | b [Some] | main.rs:60:23:60:23 | b [Some] | provenance | |
|
||||
| main.rs:59:17:59:32 | Some(...) [Some] | main.rs:59:13:59:13 | b [Some] | provenance | |
|
||||
| main.rs:59:22:59:31 | source(...) | main.rs:59:17:59:32 | Some(...) [Some] | provenance | |
|
||||
| main.rs:60:13:60:13 | z [Some, tuple.1] | main.rs:61:15:61:15 | z [Some, tuple.1] | provenance | |
|
||||
| main.rs:60:17:60:24 | a.zip(...) [Some, tuple.1] | main.rs:60:13:60:13 | z [Some, tuple.1] | provenance | |
|
||||
| main.rs:60:23:60:23 | b [Some] | main.rs:60:17:60:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:3 |
|
||||
| main.rs:61:15:61:15 | z [Some, tuple.1] | main.rs:62:13:62:24 | Some(...) [Some, tuple.1] | provenance | |
|
||||
| main.rs:62:13:62:24 | Some(...) [Some, tuple.1] | main.rs:62:18:62:23 | TuplePat [tuple.1] | provenance | |
|
||||
| main.rs:62:18:62:23 | TuplePat [tuple.1] | main.rs:62:22:62:22 | m | provenance | |
|
||||
| main.rs:62:22:62:22 | m | main.rs:64:22:64:22 | m | provenance | |
|
||||
nodes
|
||||
| main.rs:12:9:12:9 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:12:13:12:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:12:18:12:27 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:13:10:13:19 | a.unwrap(...) | semmle.label | a.unwrap(...) |
|
||||
| main.rs:14:9:14:9 | b [Some] | semmle.label | b [Some] |
|
||||
| main.rs:14:13:14:21 | a.clone(...) [Some] | semmle.label | a.clone(...) [Some] |
|
||||
| main.rs:15:10:15:19 | b.unwrap(...) | semmle.label | b.unwrap(...) |
|
||||
| main.rs:19:9:19:9 | a [Ok] | semmle.label | a [Ok] |
|
||||
| main.rs:19:31:19:44 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
|
||||
| main.rs:19:34:19:43 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:20:10:20:19 | a.unwrap(...) | semmle.label | a.unwrap(...) |
|
||||
| main.rs:21:9:21:9 | b [Ok] | semmle.label | b [Ok] |
|
||||
| main.rs:21:13:21:21 | a.clone(...) [Ok] | semmle.label | a.clone(...) [Ok] |
|
||||
| main.rs:22:10:22:19 | b.unwrap(...) | semmle.label | b.unwrap(...) |
|
||||
| main.rs:26:9:26:9 | a | semmle.label | a |
|
||||
| main.rs:26:13:26:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:27:10:27:10 | a | semmle.label | a |
|
||||
| main.rs:28:9:28:9 | b | semmle.label | b |
|
||||
| main.rs:28:13:28:21 | a.clone(...) | semmle.label | a.clone(...) |
|
||||
| main.rs:29:10:29:10 | b | semmle.label | b |
|
||||
| main.rs:41:13:41:13 | w [Wrapper] | semmle.label | w [Wrapper] |
|
||||
| main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
|
||||
| main.rs:41:30:41:39 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:42:15:42:15 | w [Wrapper] | semmle.label | w [Wrapper] |
|
||||
| main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
|
||||
| main.rs:43:26:43:26 | n | semmle.label | n |
|
||||
| main.rs:43:38:43:38 | n | semmle.label | n |
|
||||
| main.rs:45:13:45:13 | u [Wrapper] | semmle.label | u [Wrapper] |
|
||||
| main.rs:45:17:45:25 | w.clone(...) [Wrapper] | semmle.label | w.clone(...) [Wrapper] |
|
||||
| main.rs:46:15:46:15 | u [Wrapper] | semmle.label | u [Wrapper] |
|
||||
| main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
|
||||
| main.rs:47:26:47:26 | n | semmle.label | n |
|
||||
| main.rs:47:38:47:38 | n | semmle.label | n |
|
||||
| main.rs:58:13:58:13 | b [Some] | semmle.label | b [Some] |
|
||||
| main.rs:58:17:58:32 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:58:22:58:31 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:59:13:59:13 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] |
|
||||
| main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | semmle.label | a.zip(...) [Some, tuple.1] |
|
||||
| main.rs:59:23:59:23 | b [Some] | semmle.label | b [Some] |
|
||||
| main.rs:60:15:60:15 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] |
|
||||
| main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | semmle.label | Some(...) [Some, tuple.1] |
|
||||
| main.rs:61:18:61:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
|
||||
| main.rs:61:22:61:22 | m | semmle.label | m |
|
||||
| main.rs:63:22:63:22 | m | semmle.label | m |
|
||||
| main.rs:84:29:84:29 | [post] y [&ref] | semmle.label | [post] y [&ref] |
|
||||
| main.rs:84:32:84:41 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:85:18:85:34 | ...::read(...) | semmle.label | ...::read(...) |
|
||||
| main.rs:85:33:85:33 | y [&ref] | semmle.label | y [&ref] |
|
||||
| main.rs:13:9:13:9 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:13:13:13:28 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:13:18:13:27 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:14:10:14:10 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:14:10:14:19 | a.unwrap(...) | semmle.label | a.unwrap(...) |
|
||||
| main.rs:15:9:15:9 | b [Some] | semmle.label | b [Some] |
|
||||
| main.rs:15:13:15:13 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:15:13:15:21 | a.clone(...) [Some] | semmle.label | a.clone(...) [Some] |
|
||||
| main.rs:16:10:16:10 | b [Some] | semmle.label | b [Some] |
|
||||
| main.rs:16:10:16:19 | b.unwrap(...) | semmle.label | b.unwrap(...) |
|
||||
| main.rs:20:9:20:9 | a [Ok] | semmle.label | a [Ok] |
|
||||
| main.rs:20:31:20:44 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] |
|
||||
| main.rs:20:34:20:43 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:21:10:21:10 | a [Ok] | semmle.label | a [Ok] |
|
||||
| main.rs:21:10:21:19 | a.unwrap(...) | semmle.label | a.unwrap(...) |
|
||||
| main.rs:22:9:22:9 | b [Ok] | semmle.label | b [Ok] |
|
||||
| main.rs:22:13:22:13 | a [Ok] | semmle.label | a [Ok] |
|
||||
| main.rs:22:13:22:21 | a.clone(...) [Ok] | semmle.label | a.clone(...) [Ok] |
|
||||
| main.rs:23:10:23:10 | b [Ok] | semmle.label | b [Ok] |
|
||||
| main.rs:23:10:23:19 | b.unwrap(...) | semmle.label | b.unwrap(...) |
|
||||
| main.rs:27:9:27:9 | a | semmle.label | a |
|
||||
| main.rs:27:13:27:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:28:10:28:10 | a | semmle.label | a |
|
||||
| main.rs:29:9:29:9 | b | semmle.label | b |
|
||||
| main.rs:29:13:29:13 | a | semmle.label | a |
|
||||
| main.rs:29:13:29:21 | a.clone(...) | semmle.label | a.clone(...) |
|
||||
| main.rs:30:10:30:10 | b | semmle.label | b |
|
||||
| main.rs:42:13:42:13 | w [Wrapper] | semmle.label | w [Wrapper] |
|
||||
| main.rs:42:17:42:41 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
|
||||
| main.rs:42:30:42:39 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:43:15:43:15 | w [Wrapper] | semmle.label | w [Wrapper] |
|
||||
| main.rs:44:13:44:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
|
||||
| main.rs:44:26:44:26 | n | semmle.label | n |
|
||||
| main.rs:44:38:44:38 | n | semmle.label | n |
|
||||
| main.rs:46:13:46:13 | u [Wrapper] | semmle.label | u [Wrapper] |
|
||||
| main.rs:46:17:46:17 | w [Wrapper] | semmle.label | w [Wrapper] |
|
||||
| main.rs:46:17:46:25 | w.clone(...) [Wrapper] | semmle.label | w.clone(...) [Wrapper] |
|
||||
| main.rs:47:15:47:15 | u [Wrapper] | semmle.label | u [Wrapper] |
|
||||
| main.rs:48:13:48:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] |
|
||||
| main.rs:48:26:48:26 | n | semmle.label | n |
|
||||
| main.rs:48:38:48:38 | n | semmle.label | n |
|
||||
| main.rs:59:13:59:13 | b [Some] | semmle.label | b [Some] |
|
||||
| main.rs:59:17:59:32 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:59:22:59:31 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:60:13:60:13 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] |
|
||||
| main.rs:60:17:60:24 | a.zip(...) [Some, tuple.1] | semmle.label | a.zip(...) [Some, tuple.1] |
|
||||
| main.rs:60:23:60:23 | b [Some] | semmle.label | b [Some] |
|
||||
| main.rs:61:15:61:15 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] |
|
||||
| main.rs:62:13:62:24 | Some(...) [Some, tuple.1] | semmle.label | Some(...) [Some, tuple.1] |
|
||||
| main.rs:62:18:62:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] |
|
||||
| main.rs:62:22:62:22 | m | semmle.label | m |
|
||||
| main.rs:64:22:64:22 | m | semmle.label | m |
|
||||
subpaths
|
||||
testFailures
|
||||
#select
|
||||
| main.rs:13:10:13:19 | a.unwrap(...) | main.rs:12:18:12:27 | source(...) | main.rs:13:10:13:19 | a.unwrap(...) | $@ | main.rs:12:18:12:27 | source(...) | source(...) |
|
||||
| main.rs:15:10:15:19 | b.unwrap(...) | main.rs:12:18:12:27 | source(...) | main.rs:15:10:15:19 | b.unwrap(...) | $@ | main.rs:12:18:12:27 | source(...) | source(...) |
|
||||
| main.rs:20:10:20:19 | a.unwrap(...) | main.rs:19:34:19:43 | source(...) | main.rs:20:10:20:19 | a.unwrap(...) | $@ | main.rs:19:34:19:43 | source(...) | source(...) |
|
||||
| main.rs:22:10:22:19 | b.unwrap(...) | main.rs:19:34:19:43 | source(...) | main.rs:22:10:22:19 | b.unwrap(...) | $@ | main.rs:19:34:19:43 | source(...) | source(...) |
|
||||
| main.rs:27:10:27:10 | a | main.rs:26:13:26:22 | source(...) | main.rs:27:10:27:10 | a | $@ | main.rs:26:13:26:22 | source(...) | source(...) |
|
||||
| main.rs:29:10:29:10 | b | main.rs:26:13:26:22 | source(...) | main.rs:29:10:29:10 | b | $@ | main.rs:26:13:26:22 | source(...) | source(...) |
|
||||
| main.rs:43:38:43:38 | n | main.rs:41:30:41:39 | source(...) | main.rs:43:38:43:38 | n | $@ | main.rs:41:30:41:39 | source(...) | source(...) |
|
||||
| main.rs:47:38:47:38 | n | main.rs:41:30:41:39 | source(...) | main.rs:47:38:47:38 | n | $@ | main.rs:41:30:41:39 | source(...) | source(...) |
|
||||
| main.rs:63:22:63:22 | m | main.rs:58:22:58:31 | source(...) | main.rs:63:22:63:22 | m | $@ | main.rs:58:22:58:31 | source(...) | source(...) |
|
||||
| main.rs:85:18:85:34 | ...::read(...) | main.rs:84:32:84:41 | source(...) | main.rs:85:18:85:34 | ...::read(...) | $@ | main.rs:84:32:84:41 | source(...) | source(...) |
|
||||
| main.rs:14:10:14:19 | a.unwrap(...) | main.rs:13:18:13:27 | source(...) | main.rs:14:10:14:19 | a.unwrap(...) | $@ | main.rs:13:18:13:27 | source(...) | source(...) |
|
||||
| main.rs:16:10:16:19 | b.unwrap(...) | main.rs:13:18:13:27 | source(...) | main.rs:16:10:16:19 | b.unwrap(...) | $@ | main.rs:13:18:13:27 | source(...) | source(...) |
|
||||
| main.rs:21:10:21:19 | a.unwrap(...) | main.rs:20:34:20:43 | source(...) | main.rs:21:10:21:19 | a.unwrap(...) | $@ | main.rs:20:34:20:43 | source(...) | source(...) |
|
||||
| main.rs:23:10:23:19 | b.unwrap(...) | main.rs:20:34:20:43 | source(...) | main.rs:23:10:23:19 | b.unwrap(...) | $@ | main.rs:20:34:20:43 | source(...) | source(...) |
|
||||
| main.rs:28:10:28:10 | a | main.rs:27:13:27:22 | source(...) | main.rs:28:10:28:10 | a | $@ | main.rs:27:13:27:22 | source(...) | source(...) |
|
||||
| main.rs:30:10:30:10 | b | main.rs:27:13:27:22 | source(...) | main.rs:30:10:30:10 | b | $@ | main.rs:27:13:27:22 | source(...) | source(...) |
|
||||
| main.rs:44:38:44:38 | n | main.rs:42:30:42:39 | source(...) | main.rs:44:38:44:38 | n | $@ | main.rs:42:30:42:39 | source(...) | source(...) |
|
||||
| main.rs:48:38:48:38 | n | main.rs:42:30:42:39 | source(...) | main.rs:48:38:48:38 | n | $@ | main.rs:42:30:42:39 | source(...) | source(...) |
|
||||
| main.rs:64:22:64:22 | m | main.rs:59:22:59:31 | source(...) | main.rs:64:22:64:22 | m | $@ | main.rs:59:22:59:31 | source(...) | source(...) |
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
fn source(i: i64) -> i64 {
|
||||
1000 + i
|
||||
}
|
||||
@@ -30,27 +31,27 @@ fn i64_clone() {
|
||||
}
|
||||
|
||||
mod my_clone {
|
||||
use super::{sink, source};
|
||||
use super::{source, sink};
|
||||
|
||||
#[derive(Clone)]
|
||||
struct Wrapper {
|
||||
n: i64,
|
||||
n: i64
|
||||
}
|
||||
|
||||
pub fn wrapper_clone() {
|
||||
let w = Wrapper { n: source(73) };
|
||||
match w {
|
||||
Wrapper { n: n } => sink(n), // $ hasValueFlow=73
|
||||
Wrapper { n: n } => sink(n) // $ hasValueFlow=73
|
||||
}
|
||||
let u = w.clone();
|
||||
match u {
|
||||
Wrapper { n: n } => sink(n), // $ hasValueFlow=73
|
||||
Wrapper { n: n } => sink(n) // $ hasValueFlow=73
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mod flow_through_option {
|
||||
use super::{sink, source};
|
||||
use super::{source, sink};
|
||||
// Test the auto generated flow summaries for `Option`
|
||||
|
||||
fn zip_flow() {
|
||||
@@ -61,8 +62,8 @@ mod flow_through_option {
|
||||
Some((n, m)) => {
|
||||
sink(n);
|
||||
sink(m); // $ hasValueFlow=38
|
||||
}
|
||||
None => (),
|
||||
},
|
||||
None => ()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,20 +74,6 @@ mod flow_through_option {
|
||||
}
|
||||
}
|
||||
|
||||
mod ptr {
|
||||
use super::{sink, source};
|
||||
|
||||
fn read_write() {
|
||||
let mut x: i64 = 0;
|
||||
let y = &mut x as *mut i64;
|
||||
unsafe {
|
||||
sink(std::ptr::read(y));
|
||||
std::ptr::write(y, source(30));
|
||||
sink(std::ptr::read(y)); // $ hasValueFlow=30
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
option_clone();
|
||||
result_clone();
|
||||
|
||||
@@ -1,301 +1,154 @@
|
||||
models
|
||||
edges
|
||||
| main.rs:17:13:17:13 | a | main.rs:18:18:18:18 | a | provenance | |
|
||||
| main.rs:17:17:17:26 | source(...) | main.rs:17:13:17:13 | a | provenance | |
|
||||
| main.rs:18:13:18:13 | b [&ref] | main.rs:19:18:19:18 | b [&ref] | provenance | |
|
||||
| main.rs:18:17:18:18 | &a [&ref] | main.rs:18:13:18:13 | b [&ref] | provenance | |
|
||||
| main.rs:18:18:18:18 | a | main.rs:18:17:18:18 | &a [&ref] | provenance | |
|
||||
| main.rs:19:13:19:13 | c | main.rs:20:14:20:14 | c | provenance | |
|
||||
| main.rs:19:17:19:18 | * ... | main.rs:19:13:19:13 | c | provenance | |
|
||||
| main.rs:19:18:19:18 | b [&ref] | main.rs:19:17:19:18 | * ... | provenance | |
|
||||
| main.rs:23:29:23:30 | &... [&ref] | main.rs:23:30:23:30 | n | provenance | |
|
||||
| main.rs:23:29:23:36 | ...: ... [&ref] | main.rs:23:29:23:30 | &... [&ref] | provenance | |
|
||||
| main.rs:23:30:23:30 | n | main.rs:24:14:24:14 | n | provenance | |
|
||||
| main.rs:28:13:28:15 | val | main.rs:29:31:29:33 | val | provenance | |
|
||||
| main.rs:28:19:28:28 | source(...) | main.rs:28:13:28:15 | val | provenance | |
|
||||
| main.rs:29:30:29:33 | &val [&ref] | main.rs:23:29:23:36 | ...: ... [&ref] | provenance | |
|
||||
| main.rs:29:31:29:33 | val | main.rs:29:30:29:33 | &val [&ref] | provenance | |
|
||||
| main.rs:33:13:33:13 | a [&ref, tuple.0] | main.rs:36:23:36:23 | a [&ref, tuple.0] | provenance | |
|
||||
| main.rs:33:17:33:32 | &... [&ref, tuple.0] | main.rs:33:13:33:13 | a [&ref, tuple.0] | provenance | |
|
||||
| main.rs:33:18:33:32 | TupleExpr [tuple.0] | main.rs:33:17:33:32 | &... [&ref, tuple.0] | provenance | |
|
||||
| main.rs:33:19:33:28 | source(...) | main.rs:33:18:33:32 | TupleExpr [tuple.0] | provenance | |
|
||||
| main.rs:36:13:36:13 | b | main.rs:39:14:39:14 | b | provenance | |
|
||||
| main.rs:36:23:36:23 | a [&ref, tuple.0] | main.rs:37:13:37:19 | &... [&ref, tuple.0] | provenance | |
|
||||
| main.rs:37:13:37:19 | &... [&ref, tuple.0] | main.rs:37:14:37:19 | TuplePat [tuple.0] | provenance | |
|
||||
| main.rs:37:14:37:19 | TuplePat [tuple.0] | main.rs:37:15:37:15 | n | provenance | |
|
||||
| main.rs:37:15:37:15 | n | main.rs:36:13:36:13 | b | provenance | |
|
||||
| main.rs:51:13:51:13 | a | main.rs:52:13:52:17 | ref p | provenance | |
|
||||
| main.rs:51:17:51:26 | source(...) | main.rs:51:13:51:13 | a | provenance | |
|
||||
| main.rs:52:13:52:17 | ref p | main.rs:52:17:52:17 | p [&ref] | provenance | |
|
||||
| main.rs:52:17:52:17 | p [&ref] | main.rs:53:15:53:15 | p [&ref] | provenance | |
|
||||
| main.rs:53:15:53:15 | p [&ref] | main.rs:53:14:53:15 | * ... | provenance | |
|
||||
| main.rs:57:13:57:13 | a [Some] | main.rs:58:15:58:15 | a [Some] | provenance | |
|
||||
| main.rs:57:17:57:32 | Some(...) [Some] | main.rs:57:13:57:13 | a [Some] | provenance | |
|
||||
| main.rs:57:22:57:31 | source(...) | main.rs:57:17:57:32 | Some(...) [Some] | provenance | |
|
||||
| main.rs:58:15:58:15 | a [Some] | main.rs:59:13:59:23 | Some(...) [Some] | provenance | |
|
||||
| main.rs:59:13:59:23 | Some(...) [Some] | main.rs:59:18:59:22 | ref p | provenance | |
|
||||
| main.rs:59:18:59:22 | ref p | main.rs:59:22:59:22 | p [&ref] | provenance | |
|
||||
| main.rs:59:22:59:22 | p [&ref] | main.rs:59:34:59:34 | p [&ref] | provenance | |
|
||||
| main.rs:59:34:59:34 | p [&ref] | main.rs:59:33:59:34 | * ... | provenance | |
|
||||
| main.rs:73:10:73:10 | [post] b [&ref] | main.rs:74:15:74:15 | b [&ref] | provenance | |
|
||||
| main.rs:73:14:73:23 | source(...) | main.rs:73:10:73:10 | [post] b [&ref] | provenance | |
|
||||
| main.rs:74:15:74:15 | b [&ref] | main.rs:74:14:74:15 | * ... | provenance | |
|
||||
| main.rs:105:10:105:10 | [post] c [&ref] | main.rs:106:15:106:15 | c [&ref] | provenance | |
|
||||
| main.rs:105:14:105:23 | source(...) | main.rs:105:10:105:10 | [post] c [&ref] | provenance | |
|
||||
| main.rs:106:15:106:15 | c [&ref] | main.rs:106:14:106:15 | * ... | provenance | |
|
||||
| main.rs:112:13:112:21 | ref mut a | main.rs:112:21:112:21 | a [&ref] | provenance | |
|
||||
| main.rs:112:21:112:21 | a [&ref] | main.rs:113:15:113:15 | a [&ref] | provenance | |
|
||||
| main.rs:112:25:112:34 | source(...) | main.rs:112:13:112:21 | ref mut a | provenance | |
|
||||
| main.rs:113:15:113:15 | a [&ref] | main.rs:113:14:113:15 | * ... | provenance | |
|
||||
| main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | main.rs:150:11:150:11 | m [MyNumber] | provenance | |
|
||||
| main.rs:150:11:150:11 | m [MyNumber] | main.rs:151:9:151:34 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:151:9:151:34 | ...::MyNumber(...) [MyNumber] | main.rs:151:28:151:33 | number | provenance | |
|
||||
| main.rs:151:28:151:33 | number | main.rs:149:34:153:1 | { ... } | provenance | |
|
||||
| main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:157:15:157:18 | self [MyNumber] | provenance | |
|
||||
| main.rs:157:15:157:18 | self [MyNumber] | main.rs:158:13:158:38 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:158:13:158:38 | ...::MyNumber(...) [MyNumber] | main.rs:158:32:158:37 | number | provenance | |
|
||||
| main.rs:158:32:158:37 | number | main.rs:156:31:160:5 | { ... } | provenance | |
|
||||
| main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:163:15:163:18 | self [&ref, MyNumber] | provenance | |
|
||||
| main.rs:163:15:163:18 | self [&ref, MyNumber] | main.rs:164:13:164:39 | &... [&ref, MyNumber] | provenance | |
|
||||
| main.rs:164:13:164:39 | &... [&ref, MyNumber] | main.rs:164:14:164:39 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:164:14:164:39 | ...::MyNumber(...) [MyNumber] | main.rs:164:33:164:38 | number | provenance | |
|
||||
| main.rs:164:33:164:38 | number | main.rs:162:26:166:5 | { ... } | provenance | |
|
||||
| main.rs:174:13:174:21 | my_number [MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | provenance | |
|
||||
| main.rs:174:13:174:21 | my_number [MyNumber] | main.rs:175:14:175:34 | my_number.to_number(...) | provenance | |
|
||||
| main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | main.rs:174:13:174:21 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:174:44:174:53 | source(...) | main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:179:13:179:21 | my_number [MyNumber] | main.rs:180:16:180:24 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | main.rs:179:13:179:21 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:179:44:179:53 | source(...) | main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:180:15:180:24 | &my_number [&ref, MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | provenance | |
|
||||
| main.rs:180:15:180:24 | &my_number [&ref, MyNumber] | main.rs:180:14:180:31 | ... .get(...) | provenance | |
|
||||
| main.rs:180:16:180:24 | my_number [MyNumber] | main.rs:180:15:180:24 | &my_number [&ref, MyNumber] | provenance | |
|
||||
| main.rs:184:13:184:21 | my_number [MyNumber] | main.rs:186:14:186:22 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:184:25:184:54 | ...::MyNumber(...) [MyNumber] | main.rs:184:13:184:21 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:184:44:184:53 | source(...) | main.rs:184:25:184:54 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:186:14:186:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | provenance | |
|
||||
| main.rs:186:14:186:22 | my_number [MyNumber] | main.rs:186:14:186:28 | my_number.get(...) | provenance | |
|
||||
| main.rs:190:13:190:21 | my_number [&ref, MyNumber] | main.rs:192:14:192:22 | my_number [&ref, MyNumber] | provenance | |
|
||||
| main.rs:190:25:190:55 | &... [&ref, MyNumber] | main.rs:190:13:190:21 | my_number [&ref, MyNumber] | provenance | |
|
||||
| main.rs:190:26:190:55 | ...::MyNumber(...) [MyNumber] | main.rs:190:25:190:55 | &... [&ref, MyNumber] | provenance | |
|
||||
| main.rs:190:45:190:54 | source(...) | main.rs:190:26:190:55 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | provenance | |
|
||||
| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | main.rs:192:14:192:34 | my_number.to_number(...) | provenance | |
|
||||
| main.rs:200:29:200:38 | ...: i64 | main.rs:201:14:201:18 | value | provenance | |
|
||||
| main.rs:201:10:201:10 | [post] n [&ref] | main.rs:200:16:200:26 | ...: ... [Return] [&ref] | provenance | |
|
||||
| main.rs:201:14:201:18 | value | main.rs:201:10:201:10 | [post] n [&ref] | provenance | |
|
||||
| main.rs:210:17:210:17 | [post] p [&ref] | main.rs:211:15:211:15 | p [&ref] | provenance | |
|
||||
| main.rs:210:20:210:29 | source(...) | main.rs:200:29:200:38 | ...: i64 | provenance | |
|
||||
| main.rs:210:20:210:29 | source(...) | main.rs:210:17:210:17 | [post] p [&ref] | provenance | |
|
||||
| main.rs:211:15:211:15 | p [&ref] | main.rs:211:14:211:15 | * ... | provenance | |
|
||||
| main.rs:218:17:218:22 | [post] &mut n [&ref] | main.rs:218:22:218:22 | [post] n | provenance | |
|
||||
| main.rs:218:22:218:22 | [post] n | main.rs:219:14:219:14 | n | provenance | |
|
||||
| main.rs:218:25:218:34 | source(...) | main.rs:200:29:200:38 | ...: i64 | provenance | |
|
||||
| main.rs:218:25:218:34 | source(...) | main.rs:218:17:218:22 | [post] &mut n [&ref] | provenance | |
|
||||
| main.rs:223:27:223:37 | ...: i64 | main.rs:224:40:224:45 | number | provenance | |
|
||||
| main.rs:224:14:224:17 | [post] self [&ref, MyNumber] | main.rs:223:16:223:24 | SelfParam [Return] [&ref, MyNumber] | provenance | |
|
||||
| main.rs:224:21:224:46 | ...::MyNumber(...) [MyNumber] | main.rs:224:14:224:17 | [post] self [&ref, MyNumber] | provenance | |
|
||||
| main.rs:224:40:224:45 | number | main.rs:224:21:224:46 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:228:37:228:47 | ...: i64 | main.rs:229:33:229:38 | number | provenance | |
|
||||
| main.rs:229:10:229:10 | [post] n [&ref, MyNumber] | main.rs:228:19:228:34 | ...: ... [Return] [&ref, MyNumber] | provenance | |
|
||||
| main.rs:229:14:229:39 | ...::MyNumber(...) [MyNumber] | main.rs:229:10:229:10 | [post] n [&ref, MyNumber] | provenance | |
|
||||
| main.rs:229:33:229:38 | number | main.rs:229:14:229:39 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:234:20:234:33 | [post] &mut my_number [&ref, MyNumber] | main.rs:234:25:234:33 | [post] my_number [MyNumber] | provenance | |
|
||||
| main.rs:234:25:234:33 | [post] my_number [MyNumber] | main.rs:235:14:235:22 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:234:25:234:33 | [post] my_number [MyNumber] | main.rs:237:14:237:22 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:234:36:234:45 | source(...) | main.rs:228:37:228:47 | ...: i64 | provenance | |
|
||||
| main.rs:234:36:234:45 | source(...) | main.rs:234:20:234:33 | [post] &mut my_number [&ref, MyNumber] | provenance | |
|
||||
| main.rs:235:14:235:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | provenance | |
|
||||
| main.rs:235:14:235:22 | my_number [MyNumber] | main.rs:235:14:235:28 | my_number.get(...) | provenance | |
|
||||
| main.rs:237:14:237:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | provenance | |
|
||||
| main.rs:237:14:237:22 | my_number [MyNumber] | main.rs:237:14:237:28 | my_number.get(...) | provenance | |
|
||||
| main.rs:243:9:243:17 | [post] my_number [MyNumber] | main.rs:244:24:244:32 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:243:9:243:17 | [post] my_number [MyNumber] | main.rs:246:24:246:32 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:243:23:243:32 | source(...) | main.rs:223:27:223:37 | ...: i64 | provenance | |
|
||||
| main.rs:243:23:243:32 | source(...) | main.rs:243:9:243:17 | [post] my_number [MyNumber] | provenance | |
|
||||
| main.rs:244:24:244:32 | my_number [MyNumber] | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | provenance | |
|
||||
| main.rs:244:24:244:32 | my_number [MyNumber] | main.rs:244:14:244:33 | to_number(...) | provenance | |
|
||||
| main.rs:246:24:246:32 | my_number [MyNumber] | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | provenance | |
|
||||
| main.rs:246:24:246:32 | my_number [MyNumber] | main.rs:246:14:246:33 | to_number(...) | provenance | |
|
||||
| main.rs:252:10:252:23 | [post] &mut my_number [&ref, MyNumber] | main.rs:252:15:252:23 | [post] my_number [MyNumber] | provenance | |
|
||||
| main.rs:252:15:252:23 | [post] my_number [MyNumber] | main.rs:253:24:253:32 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:252:15:252:23 | [post] my_number [MyNumber] | main.rs:255:24:255:32 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:252:30:252:39 | source(...) | main.rs:223:27:223:37 | ...: i64 | provenance | |
|
||||
| main.rs:252:30:252:39 | source(...) | main.rs:252:10:252:23 | [post] &mut my_number [&ref, MyNumber] | provenance | |
|
||||
| main.rs:253:24:253:32 | my_number [MyNumber] | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | provenance | |
|
||||
| main.rs:253:24:253:32 | my_number [MyNumber] | main.rs:253:14:253:33 | to_number(...) | provenance | |
|
||||
| main.rs:255:24:255:32 | my_number [MyNumber] | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | provenance | |
|
||||
| main.rs:255:24:255:32 | my_number [MyNumber] | main.rs:255:14:255:33 | to_number(...) | provenance | |
|
||||
| main.rs:13:9:13:9 | a | main.rs:14:14:14:14 | a | provenance | |
|
||||
| main.rs:13:13:13:22 | source(...) | main.rs:13:9:13:9 | a | provenance | |
|
||||
| main.rs:14:9:14:9 | b [&ref] | main.rs:15:14:15:14 | b [&ref] | provenance | |
|
||||
| main.rs:14:13:14:14 | &a [&ref] | main.rs:14:9:14:9 | b [&ref] | provenance | |
|
||||
| main.rs:14:14:14:14 | a | main.rs:14:13:14:14 | &a [&ref] | provenance | |
|
||||
| main.rs:15:9:15:9 | c | main.rs:16:10:16:10 | c | provenance | |
|
||||
| main.rs:15:13:15:14 | * ... | main.rs:15:9:15:9 | c | provenance | |
|
||||
| main.rs:15:14:15:14 | b [&ref] | main.rs:15:13:15:14 | * ... | provenance | |
|
||||
| main.rs:31:6:31:6 | [post] b [&ref] | main.rs:32:11:32:11 | b [&ref] | provenance | |
|
||||
| main.rs:31:10:31:19 | source(...) | main.rs:31:6:31:6 | [post] b [&ref] | provenance | |
|
||||
| main.rs:32:11:32:11 | b [&ref] | main.rs:32:10:32:11 | * ... | provenance | |
|
||||
| main.rs:37:25:37:26 | &... [&ref] | main.rs:37:26:37:26 | n | provenance | |
|
||||
| main.rs:37:25:37:32 | ...: ... [&ref] | main.rs:37:25:37:26 | &... [&ref] | provenance | |
|
||||
| main.rs:37:26:37:26 | n | main.rs:38:10:38:10 | n | provenance | |
|
||||
| main.rs:42:9:42:11 | val | main.rs:43:27:43:29 | val | provenance | |
|
||||
| main.rs:42:15:42:24 | source(...) | main.rs:42:9:42:11 | val | provenance | |
|
||||
| main.rs:43:26:43:29 | &val [&ref] | main.rs:37:25:37:32 | ...: ... [&ref] | provenance | |
|
||||
| main.rs:43:27:43:29 | val | main.rs:43:26:43:29 | &val [&ref] | provenance | |
|
||||
| main.rs:50:13:50:13 | a | main.rs:51:13:51:17 | ref p | provenance | |
|
||||
| main.rs:50:17:50:26 | source(...) | main.rs:50:13:50:13 | a | provenance | |
|
||||
| main.rs:51:13:51:17 | ref p | main.rs:51:17:51:17 | p [&ref] | provenance | |
|
||||
| main.rs:51:17:51:17 | p [&ref] | main.rs:52:15:52:15 | p [&ref] | provenance | |
|
||||
| main.rs:52:15:52:15 | p [&ref] | main.rs:52:14:52:15 | * ... | provenance | |
|
||||
| main.rs:56:13:56:21 | ref mut a | main.rs:56:21:56:21 | a [&ref] | provenance | |
|
||||
| main.rs:56:21:56:21 | a [&ref] | main.rs:57:15:57:15 | a [&ref] | provenance | |
|
||||
| main.rs:56:25:56:34 | source(...) | main.rs:56:13:56:21 | ref mut a | provenance | |
|
||||
| main.rs:57:15:57:15 | a [&ref] | main.rs:57:14:57:15 | * ... | provenance | |
|
||||
| main.rs:63:13:63:13 | a [Some] | main.rs:64:23:64:23 | a [Some] | provenance | |
|
||||
| main.rs:63:17:63:32 | Some(...) [Some] | main.rs:63:13:63:13 | a [Some] | provenance | |
|
||||
| main.rs:63:22:63:31 | source(...) | main.rs:63:17:63:32 | Some(...) [Some] | provenance | |
|
||||
| main.rs:64:23:64:23 | a [Some] | main.rs:65:13:65:23 | Some(...) [Some] | provenance | |
|
||||
| main.rs:65:13:65:23 | Some(...) [Some] | main.rs:65:18:65:22 | ref p | provenance | |
|
||||
| main.rs:65:18:65:22 | ref p | main.rs:65:22:65:22 | p [&ref] | provenance | |
|
||||
| main.rs:65:22:65:22 | p [&ref] | main.rs:65:34:65:34 | p [&ref] | provenance | |
|
||||
| main.rs:65:34:65:34 | p [&ref] | main.rs:65:33:65:34 | * ... | provenance | |
|
||||
| main.rs:76:18:76:21 | SelfParam [MyNumber] | main.rs:77:15:77:18 | self [MyNumber] | provenance | |
|
||||
| main.rs:77:15:77:18 | self [MyNumber] | main.rs:78:13:78:38 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:78:13:78:38 | ...::MyNumber(...) [MyNumber] | main.rs:78:32:78:37 | number | provenance | |
|
||||
| main.rs:78:32:78:37 | number | main.rs:76:31:80:5 | { ... } | provenance | |
|
||||
| main.rs:82:19:82:23 | SelfParam [&ref, MyNumber] | main.rs:83:15:83:18 | self [&ref, MyNumber] | provenance | |
|
||||
| main.rs:83:15:83:18 | self [&ref, MyNumber] | main.rs:84:13:84:39 | &... [&ref, MyNumber] | provenance | |
|
||||
| main.rs:84:13:84:39 | &... [&ref, MyNumber] | main.rs:84:14:84:39 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:84:14:84:39 | ...::MyNumber(...) [MyNumber] | main.rs:84:33:84:38 | number | provenance | |
|
||||
| main.rs:84:33:84:38 | number | main.rs:82:33:86:5 | { ... } | provenance | |
|
||||
| main.rs:90:9:90:17 | my_number [MyNumber] | main.rs:91:10:91:18 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:90:21:90:50 | ...::MyNumber(...) [MyNumber] | main.rs:90:9:90:17 | my_number [MyNumber] | provenance | |
|
||||
| main.rs:90:40:90:49 | source(...) | main.rs:90:21:90:50 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:91:10:91:18 | my_number [MyNumber] | main.rs:76:18:76:21 | SelfParam [MyNumber] | provenance | |
|
||||
| main.rs:91:10:91:18 | my_number [MyNumber] | main.rs:91:10:91:30 | my_number.to_number(...) | provenance | |
|
||||
| main.rs:100:9:100:17 | my_number [&ref, MyNumber] | main.rs:101:10:101:18 | my_number [&ref, MyNumber] | provenance | |
|
||||
| main.rs:100:21:100:51 | &... [&ref, MyNumber] | main.rs:100:9:100:17 | my_number [&ref, MyNumber] | provenance | |
|
||||
| main.rs:100:22:100:51 | ...::MyNumber(...) [MyNumber] | main.rs:100:21:100:51 | &... [&ref, MyNumber] | provenance | |
|
||||
| main.rs:100:41:100:50 | source(...) | main.rs:100:22:100:51 | ...::MyNumber(...) [MyNumber] | provenance | |
|
||||
| main.rs:101:10:101:18 | my_number [&ref, MyNumber] | main.rs:82:19:82:23 | SelfParam [&ref, MyNumber] | provenance | |
|
||||
| main.rs:101:10:101:18 | my_number [&ref, MyNumber] | main.rs:101:10:101:31 | my_number.get_number(...) | provenance | |
|
||||
| main.rs:105:9:105:9 | a [&ref, tuple.0] | main.rs:108:19:108:19 | a [&ref, tuple.0] | provenance | |
|
||||
| main.rs:105:13:105:28 | &... [&ref, tuple.0] | main.rs:105:9:105:9 | a [&ref, tuple.0] | provenance | |
|
||||
| main.rs:105:14:105:28 | TupleExpr [tuple.0] | main.rs:105:13:105:28 | &... [&ref, tuple.0] | provenance | |
|
||||
| main.rs:105:15:105:24 | source(...) | main.rs:105:14:105:28 | TupleExpr [tuple.0] | provenance | |
|
||||
| main.rs:108:9:108:9 | b | main.rs:111:10:111:10 | b | provenance | |
|
||||
| main.rs:108:19:108:19 | a [&ref, tuple.0] | main.rs:109:9:109:15 | &... [&ref, tuple.0] | provenance | |
|
||||
| main.rs:109:9:109:15 | &... [&ref, tuple.0] | main.rs:109:10:109:15 | TuplePat [tuple.0] | provenance | |
|
||||
| main.rs:109:10:109:15 | TuplePat [tuple.0] | main.rs:109:11:109:11 | n | provenance | |
|
||||
| main.rs:109:11:109:11 | n | main.rs:108:9:108:9 | b | provenance | |
|
||||
nodes
|
||||
| main.rs:17:13:17:13 | a | semmle.label | a |
|
||||
| main.rs:17:17:17:26 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:18:13:18:13 | b [&ref] | semmle.label | b [&ref] |
|
||||
| main.rs:18:17:18:18 | &a [&ref] | semmle.label | &a [&ref] |
|
||||
| main.rs:18:18:18:18 | a | semmle.label | a |
|
||||
| main.rs:19:13:19:13 | c | semmle.label | c |
|
||||
| main.rs:19:17:19:18 | * ... | semmle.label | * ... |
|
||||
| main.rs:19:18:19:18 | b [&ref] | semmle.label | b [&ref] |
|
||||
| main.rs:20:14:20:14 | c | semmle.label | c |
|
||||
| main.rs:23:29:23:30 | &... [&ref] | semmle.label | &... [&ref] |
|
||||
| main.rs:23:29:23:36 | ...: ... [&ref] | semmle.label | ...: ... [&ref] |
|
||||
| main.rs:23:30:23:30 | n | semmle.label | n |
|
||||
| main.rs:24:14:24:14 | n | semmle.label | n |
|
||||
| main.rs:28:13:28:15 | val | semmle.label | val |
|
||||
| main.rs:28:19:28:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:29:30:29:33 | &val [&ref] | semmle.label | &val [&ref] |
|
||||
| main.rs:29:31:29:33 | val | semmle.label | val |
|
||||
| main.rs:33:13:33:13 | a [&ref, tuple.0] | semmle.label | a [&ref, tuple.0] |
|
||||
| main.rs:33:17:33:32 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] |
|
||||
| main.rs:33:18:33:32 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
|
||||
| main.rs:33:19:33:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:36:13:36:13 | b | semmle.label | b |
|
||||
| main.rs:36:23:36:23 | a [&ref, tuple.0] | semmle.label | a [&ref, tuple.0] |
|
||||
| main.rs:37:13:37:19 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] |
|
||||
| main.rs:37:14:37:19 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] |
|
||||
| main.rs:37:15:37:15 | n | semmle.label | n |
|
||||
| main.rs:39:14:39:14 | b | semmle.label | b |
|
||||
| main.rs:51:13:51:13 | a | semmle.label | a |
|
||||
| main.rs:51:17:51:26 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:52:13:52:17 | ref p | semmle.label | ref p |
|
||||
| main.rs:52:17:52:17 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:53:14:53:15 | * ... | semmle.label | * ... |
|
||||
| main.rs:53:15:53:15 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:57:13:57:13 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:57:17:57:32 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:57:22:57:31 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:58:15:58:15 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:59:13:59:23 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:59:18:59:22 | ref p | semmle.label | ref p |
|
||||
| main.rs:59:22:59:22 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:59:33:59:34 | * ... | semmle.label | * ... |
|
||||
| main.rs:59:34:59:34 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:73:10:73:10 | [post] b [&ref] | semmle.label | [post] b [&ref] |
|
||||
| main.rs:73:14:73:23 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:74:14:74:15 | * ... | semmle.label | * ... |
|
||||
| main.rs:74:15:74:15 | b [&ref] | semmle.label | b [&ref] |
|
||||
| main.rs:105:10:105:10 | [post] c [&ref] | semmle.label | [post] c [&ref] |
|
||||
| main.rs:105:14:105:23 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:106:14:106:15 | * ... | semmle.label | * ... |
|
||||
| main.rs:106:15:106:15 | c [&ref] | semmle.label | c [&ref] |
|
||||
| main.rs:112:13:112:21 | ref mut a | semmle.label | ref mut a |
|
||||
| main.rs:112:21:112:21 | a [&ref] | semmle.label | a [&ref] |
|
||||
| main.rs:112:25:112:34 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:113:14:113:15 | * ... | semmle.label | * ... |
|
||||
| main.rs:113:15:113:15 | a [&ref] | semmle.label | a [&ref] |
|
||||
| main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | semmle.label | ...: MyNumber [MyNumber] |
|
||||
| main.rs:149:34:153:1 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:150:11:150:11 | m [MyNumber] | semmle.label | m [MyNumber] |
|
||||
| main.rs:151:9:151:34 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:151:28:151:33 | number | semmle.label | number |
|
||||
| main.rs:156:18:156:21 | SelfParam [MyNumber] | semmle.label | SelfParam [MyNumber] |
|
||||
| main.rs:156:31:160:5 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:157:15:157:18 | self [MyNumber] | semmle.label | self [MyNumber] |
|
||||
| main.rs:158:13:158:38 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:158:32:158:37 | number | semmle.label | number |
|
||||
| main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | semmle.label | SelfParam [&ref, MyNumber] |
|
||||
| main.rs:162:26:166:5 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:163:15:163:18 | self [&ref, MyNumber] | semmle.label | self [&ref, MyNumber] |
|
||||
| main.rs:164:13:164:39 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] |
|
||||
| main.rs:164:14:164:39 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:164:33:164:38 | number | semmle.label | number |
|
||||
| main.rs:174:13:174:21 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:174:25:174:54 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:174:44:174:53 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:175:14:175:34 | my_number.to_number(...) | semmle.label | my_number.to_number(...) |
|
||||
| main.rs:179:13:179:21 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:179:25:179:54 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:179:44:179:53 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:180:14:180:31 | ... .get(...) | semmle.label | ... .get(...) |
|
||||
| main.rs:180:15:180:24 | &my_number [&ref, MyNumber] | semmle.label | &my_number [&ref, MyNumber] |
|
||||
| main.rs:180:16:180:24 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:184:13:184:21 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:184:25:184:54 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:184:44:184:53 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:186:14:186:22 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:186:14:186:28 | my_number.get(...) | semmle.label | my_number.get(...) |
|
||||
| main.rs:190:13:190:21 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] |
|
||||
| main.rs:190:25:190:55 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] |
|
||||
| main.rs:190:26:190:55 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:190:45:190:54 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] |
|
||||
| main.rs:192:14:192:34 | my_number.to_number(...) | semmle.label | my_number.to_number(...) |
|
||||
| main.rs:200:16:200:26 | ...: ... [Return] [&ref] | semmle.label | ...: ... [Return] [&ref] |
|
||||
| main.rs:200:29:200:38 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:201:10:201:10 | [post] n [&ref] | semmle.label | [post] n [&ref] |
|
||||
| main.rs:201:14:201:18 | value | semmle.label | value |
|
||||
| main.rs:210:17:210:17 | [post] p [&ref] | semmle.label | [post] p [&ref] |
|
||||
| main.rs:210:20:210:29 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:211:14:211:15 | * ... | semmle.label | * ... |
|
||||
| main.rs:211:15:211:15 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:218:17:218:22 | [post] &mut n [&ref] | semmle.label | [post] &mut n [&ref] |
|
||||
| main.rs:218:22:218:22 | [post] n | semmle.label | [post] n |
|
||||
| main.rs:218:25:218:34 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:219:14:219:14 | n | semmle.label | n |
|
||||
| main.rs:223:16:223:24 | SelfParam [Return] [&ref, MyNumber] | semmle.label | SelfParam [Return] [&ref, MyNumber] |
|
||||
| main.rs:223:27:223:37 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:224:14:224:17 | [post] self [&ref, MyNumber] | semmle.label | [post] self [&ref, MyNumber] |
|
||||
| main.rs:224:21:224:46 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:224:40:224:45 | number | semmle.label | number |
|
||||
| main.rs:228:19:228:34 | ...: ... [Return] [&ref, MyNumber] | semmle.label | ...: ... [Return] [&ref, MyNumber] |
|
||||
| main.rs:228:37:228:47 | ...: i64 | semmle.label | ...: i64 |
|
||||
| main.rs:229:10:229:10 | [post] n [&ref, MyNumber] | semmle.label | [post] n [&ref, MyNumber] |
|
||||
| main.rs:229:14:229:39 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:229:33:229:38 | number | semmle.label | number |
|
||||
| main.rs:234:20:234:33 | [post] &mut my_number [&ref, MyNumber] | semmle.label | [post] &mut my_number [&ref, MyNumber] |
|
||||
| main.rs:234:25:234:33 | [post] my_number [MyNumber] | semmle.label | [post] my_number [MyNumber] |
|
||||
| main.rs:234:36:234:45 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:235:14:235:22 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:235:14:235:28 | my_number.get(...) | semmle.label | my_number.get(...) |
|
||||
| main.rs:237:14:237:22 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:237:14:237:28 | my_number.get(...) | semmle.label | my_number.get(...) |
|
||||
| main.rs:243:9:243:17 | [post] my_number [MyNumber] | semmle.label | [post] my_number [MyNumber] |
|
||||
| main.rs:243:23:243:32 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:244:14:244:33 | to_number(...) | semmle.label | to_number(...) |
|
||||
| main.rs:244:24:244:32 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:246:14:246:33 | to_number(...) | semmle.label | to_number(...) |
|
||||
| main.rs:246:24:246:32 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:252:10:252:23 | [post] &mut my_number [&ref, MyNumber] | semmle.label | [post] &mut my_number [&ref, MyNumber] |
|
||||
| main.rs:252:15:252:23 | [post] my_number [MyNumber] | semmle.label | [post] my_number [MyNumber] |
|
||||
| main.rs:252:30:252:39 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:253:14:253:33 | to_number(...) | semmle.label | to_number(...) |
|
||||
| main.rs:253:24:253:32 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:255:14:255:33 | to_number(...) | semmle.label | to_number(...) |
|
||||
| main.rs:255:24:255:32 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:13:9:13:9 | a | semmle.label | a |
|
||||
| main.rs:13:13:13:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:14:9:14:9 | b [&ref] | semmle.label | b [&ref] |
|
||||
| main.rs:14:13:14:14 | &a [&ref] | semmle.label | &a [&ref] |
|
||||
| main.rs:14:14:14:14 | a | semmle.label | a |
|
||||
| main.rs:15:9:15:9 | c | semmle.label | c |
|
||||
| main.rs:15:13:15:14 | * ... | semmle.label | * ... |
|
||||
| main.rs:15:14:15:14 | b [&ref] | semmle.label | b [&ref] |
|
||||
| main.rs:16:10:16:10 | c | semmle.label | c |
|
||||
| main.rs:31:6:31:6 | [post] b [&ref] | semmle.label | [post] b [&ref] |
|
||||
| main.rs:31:10:31:19 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:32:10:32:11 | * ... | semmle.label | * ... |
|
||||
| main.rs:32:11:32:11 | b [&ref] | semmle.label | b [&ref] |
|
||||
| main.rs:37:25:37:26 | &... [&ref] | semmle.label | &... [&ref] |
|
||||
| main.rs:37:25:37:32 | ...: ... [&ref] | semmle.label | ...: ... [&ref] |
|
||||
| main.rs:37:26:37:26 | n | semmle.label | n |
|
||||
| main.rs:38:10:38:10 | n | semmle.label | n |
|
||||
| main.rs:42:9:42:11 | val | semmle.label | val |
|
||||
| main.rs:42:15:42:24 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:43:26:43:29 | &val [&ref] | semmle.label | &val [&ref] |
|
||||
| main.rs:43:27:43:29 | val | semmle.label | val |
|
||||
| main.rs:50:13:50:13 | a | semmle.label | a |
|
||||
| main.rs:50:17:50:26 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:51:13:51:17 | ref p | semmle.label | ref p |
|
||||
| main.rs:51:17:51:17 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:52:14:52:15 | * ... | semmle.label | * ... |
|
||||
| main.rs:52:15:52:15 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:56:13:56:21 | ref mut a | semmle.label | ref mut a |
|
||||
| main.rs:56:21:56:21 | a [&ref] | semmle.label | a [&ref] |
|
||||
| main.rs:56:25:56:34 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:57:14:57:15 | * ... | semmle.label | * ... |
|
||||
| main.rs:57:15:57:15 | a [&ref] | semmle.label | a [&ref] |
|
||||
| main.rs:63:13:63:13 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:63:17:63:32 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:63:22:63:31 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:64:23:64:23 | a [Some] | semmle.label | a [Some] |
|
||||
| main.rs:65:13:65:23 | Some(...) [Some] | semmle.label | Some(...) [Some] |
|
||||
| main.rs:65:18:65:22 | ref p | semmle.label | ref p |
|
||||
| main.rs:65:22:65:22 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:65:33:65:34 | * ... | semmle.label | * ... |
|
||||
| main.rs:65:34:65:34 | p [&ref] | semmle.label | p [&ref] |
|
||||
| main.rs:76:18:76:21 | SelfParam [MyNumber] | semmle.label | SelfParam [MyNumber] |
|
||||
| main.rs:76:31:80:5 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:77:15:77:18 | self [MyNumber] | semmle.label | self [MyNumber] |
|
||||
| main.rs:78:13:78:38 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:78:32:78:37 | number | semmle.label | number |
|
||||
| main.rs:82:19:82:23 | SelfParam [&ref, MyNumber] | semmle.label | SelfParam [&ref, MyNumber] |
|
||||
| main.rs:82:33:86:5 | { ... } | semmle.label | { ... } |
|
||||
| main.rs:83:15:83:18 | self [&ref, MyNumber] | semmle.label | self [&ref, MyNumber] |
|
||||
| main.rs:84:13:84:39 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] |
|
||||
| main.rs:84:14:84:39 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:84:33:84:38 | number | semmle.label | number |
|
||||
| main.rs:90:9:90:17 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:90:21:90:50 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:90:40:90:49 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:91:10:91:18 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
|
||||
| main.rs:91:10:91:30 | my_number.to_number(...) | semmle.label | my_number.to_number(...) |
|
||||
| main.rs:100:9:100:17 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] |
|
||||
| main.rs:100:21:100:51 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] |
|
||||
| main.rs:100:22:100:51 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
|
||||
| main.rs:100:41:100:50 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:101:10:101:18 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] |
|
||||
| main.rs:101:10:101:31 | my_number.get_number(...) | semmle.label | my_number.get_number(...) |
|
||||
| main.rs:105:9:105:9 | a [&ref, tuple.0] | semmle.label | a [&ref, tuple.0] |
|
||||
| main.rs:105:13:105:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] |
|
||||
| main.rs:105:14:105:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] |
|
||||
| main.rs:105:15:105:24 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:108:9:108:9 | b | semmle.label | b |
|
||||
| main.rs:108:19:108:19 | a [&ref, tuple.0] | semmle.label | a [&ref, tuple.0] |
|
||||
| main.rs:109:9:109:15 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] |
|
||||
| main.rs:109:10:109:15 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] |
|
||||
| main.rs:109:11:109:11 | n | semmle.label | n |
|
||||
| main.rs:111:10:111:10 | b | semmle.label | b |
|
||||
subpaths
|
||||
| main.rs:174:13:174:21 | my_number [MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:175:14:175:34 | my_number.to_number(...) |
|
||||
| main.rs:180:15:180:24 | &my_number [&ref, MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:180:14:180:31 | ... .get(...) |
|
||||
| main.rs:186:14:186:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:186:14:186:28 | my_number.get(...) |
|
||||
| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:192:14:192:34 | my_number.to_number(...) |
|
||||
| main.rs:210:20:210:29 | source(...) | main.rs:200:29:200:38 | ...: i64 | main.rs:200:16:200:26 | ...: ... [Return] [&ref] | main.rs:210:17:210:17 | [post] p [&ref] |
|
||||
| main.rs:218:25:218:34 | source(...) | main.rs:200:29:200:38 | ...: i64 | main.rs:200:16:200:26 | ...: ... [Return] [&ref] | main.rs:218:17:218:22 | [post] &mut n [&ref] |
|
||||
| main.rs:234:36:234:45 | source(...) | main.rs:228:37:228:47 | ...: i64 | main.rs:228:19:228:34 | ...: ... [Return] [&ref, MyNumber] | main.rs:234:20:234:33 | [post] &mut my_number [&ref, MyNumber] |
|
||||
| main.rs:235:14:235:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:235:14:235:28 | my_number.get(...) |
|
||||
| main.rs:237:14:237:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:237:14:237:28 | my_number.get(...) |
|
||||
| main.rs:243:23:243:32 | source(...) | main.rs:223:27:223:37 | ...: i64 | main.rs:223:16:223:24 | SelfParam [Return] [&ref, MyNumber] | main.rs:243:9:243:17 | [post] my_number [MyNumber] |
|
||||
| main.rs:244:24:244:32 | my_number [MyNumber] | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | main.rs:149:34:153:1 | { ... } | main.rs:244:14:244:33 | to_number(...) |
|
||||
| main.rs:246:24:246:32 | my_number [MyNumber] | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | main.rs:149:34:153:1 | { ... } | main.rs:246:14:246:33 | to_number(...) |
|
||||
| main.rs:252:30:252:39 | source(...) | main.rs:223:27:223:37 | ...: i64 | main.rs:223:16:223:24 | SelfParam [Return] [&ref, MyNumber] | main.rs:252:10:252:23 | [post] &mut my_number [&ref, MyNumber] |
|
||||
| main.rs:253:24:253:32 | my_number [MyNumber] | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | main.rs:149:34:153:1 | { ... } | main.rs:253:14:253:33 | to_number(...) |
|
||||
| main.rs:255:24:255:32 | my_number [MyNumber] | main.rs:149:14:149:24 | ...: MyNumber [MyNumber] | main.rs:149:34:153:1 | { ... } | main.rs:255:14:255:33 | to_number(...) |
|
||||
| main.rs:91:10:91:18 | my_number [MyNumber] | main.rs:76:18:76:21 | SelfParam [MyNumber] | main.rs:76:31:80:5 | { ... } | main.rs:91:10:91:30 | my_number.to_number(...) |
|
||||
| main.rs:101:10:101:18 | my_number [&ref, MyNumber] | main.rs:82:19:82:23 | SelfParam [&ref, MyNumber] | main.rs:82:33:86:5 | { ... } | main.rs:101:10:101:31 | my_number.get_number(...) |
|
||||
testFailures
|
||||
#select
|
||||
| main.rs:20:14:20:14 | c | main.rs:17:17:17:26 | source(...) | main.rs:20:14:20:14 | c | $@ | main.rs:17:17:17:26 | source(...) | source(...) |
|
||||
| main.rs:24:14:24:14 | n | main.rs:28:19:28:28 | source(...) | main.rs:24:14:24:14 | n | $@ | main.rs:28:19:28:28 | source(...) | source(...) |
|
||||
| main.rs:39:14:39:14 | b | main.rs:33:19:33:28 | source(...) | main.rs:39:14:39:14 | b | $@ | main.rs:33:19:33:28 | source(...) | source(...) |
|
||||
| main.rs:53:14:53:15 | * ... | main.rs:51:17:51:26 | source(...) | main.rs:53:14:53:15 | * ... | $@ | main.rs:51:17:51:26 | source(...) | source(...) |
|
||||
| main.rs:59:33:59:34 | * ... | main.rs:57:22:57:31 | source(...) | main.rs:59:33:59:34 | * ... | $@ | main.rs:57:22:57:31 | source(...) | source(...) |
|
||||
| main.rs:74:14:74:15 | * ... | main.rs:73:14:73:23 | source(...) | main.rs:74:14:74:15 | * ... | $@ | main.rs:73:14:73:23 | source(...) | source(...) |
|
||||
| main.rs:106:14:106:15 | * ... | main.rs:105:14:105:23 | source(...) | main.rs:106:14:106:15 | * ... | $@ | main.rs:105:14:105:23 | source(...) | source(...) |
|
||||
| main.rs:113:14:113:15 | * ... | main.rs:112:25:112:34 | source(...) | main.rs:113:14:113:15 | * ... | $@ | main.rs:112:25:112:34 | source(...) | source(...) |
|
||||
| main.rs:175:14:175:34 | my_number.to_number(...) | main.rs:174:44:174:53 | source(...) | main.rs:175:14:175:34 | my_number.to_number(...) | $@ | main.rs:174:44:174:53 | source(...) | source(...) |
|
||||
| main.rs:180:14:180:31 | ... .get(...) | main.rs:179:44:179:53 | source(...) | main.rs:180:14:180:31 | ... .get(...) | $@ | main.rs:179:44:179:53 | source(...) | source(...) |
|
||||
| main.rs:186:14:186:28 | my_number.get(...) | main.rs:184:44:184:53 | source(...) | main.rs:186:14:186:28 | my_number.get(...) | $@ | main.rs:184:44:184:53 | source(...) | source(...) |
|
||||
| main.rs:192:14:192:34 | my_number.to_number(...) | main.rs:190:45:190:54 | source(...) | main.rs:192:14:192:34 | my_number.to_number(...) | $@ | main.rs:190:45:190:54 | source(...) | source(...) |
|
||||
| main.rs:211:14:211:15 | * ... | main.rs:210:20:210:29 | source(...) | main.rs:211:14:211:15 | * ... | $@ | main.rs:210:20:210:29 | source(...) | source(...) |
|
||||
| main.rs:219:14:219:14 | n | main.rs:218:25:218:34 | source(...) | main.rs:219:14:219:14 | n | $@ | main.rs:218:25:218:34 | source(...) | source(...) |
|
||||
| main.rs:235:14:235:28 | my_number.get(...) | main.rs:234:36:234:45 | source(...) | main.rs:235:14:235:28 | my_number.get(...) | $@ | main.rs:234:36:234:45 | source(...) | source(...) |
|
||||
| main.rs:237:14:237:28 | my_number.get(...) | main.rs:234:36:234:45 | source(...) | main.rs:237:14:237:28 | my_number.get(...) | $@ | main.rs:234:36:234:45 | source(...) | source(...) |
|
||||
| main.rs:244:14:244:33 | to_number(...) | main.rs:243:23:243:32 | source(...) | main.rs:244:14:244:33 | to_number(...) | $@ | main.rs:243:23:243:32 | source(...) | source(...) |
|
||||
| main.rs:246:14:246:33 | to_number(...) | main.rs:243:23:243:32 | source(...) | main.rs:246:14:246:33 | to_number(...) | $@ | main.rs:243:23:243:32 | source(...) | source(...) |
|
||||
| main.rs:253:14:253:33 | to_number(...) | main.rs:252:30:252:39 | source(...) | main.rs:253:14:253:33 | to_number(...) | $@ | main.rs:252:30:252:39 | source(...) | source(...) |
|
||||
| main.rs:255:14:255:33 | to_number(...) | main.rs:252:30:252:39 | source(...) | main.rs:255:14:255:33 | to_number(...) | $@ | main.rs:252:30:252:39 | source(...) | source(...) |
|
||||
| main.rs:16:10:16:10 | c | main.rs:13:13:13:22 | source(...) | main.rs:16:10:16:10 | c | $@ | main.rs:13:13:13:22 | source(...) | source(...) |
|
||||
| main.rs:32:10:32:11 | * ... | main.rs:31:10:31:19 | source(...) | main.rs:32:10:32:11 | * ... | $@ | main.rs:31:10:31:19 | source(...) | source(...) |
|
||||
| main.rs:38:10:38:10 | n | main.rs:42:15:42:24 | source(...) | main.rs:38:10:38:10 | n | $@ | main.rs:42:15:42:24 | source(...) | source(...) |
|
||||
| main.rs:52:14:52:15 | * ... | main.rs:50:17:50:26 | source(...) | main.rs:52:14:52:15 | * ... | $@ | main.rs:50:17:50:26 | source(...) | source(...) |
|
||||
| main.rs:57:14:57:15 | * ... | main.rs:56:25:56:34 | source(...) | main.rs:57:14:57:15 | * ... | $@ | main.rs:56:25:56:34 | source(...) | source(...) |
|
||||
| main.rs:65:33:65:34 | * ... | main.rs:63:22:63:31 | source(...) | main.rs:65:33:65:34 | * ... | $@ | main.rs:63:22:63:31 | source(...) | source(...) |
|
||||
| main.rs:91:10:91:30 | my_number.to_number(...) | main.rs:90:40:90:49 | source(...) | main.rs:91:10:91:30 | my_number.to_number(...) | $@ | main.rs:90:40:90:49 | source(...) | source(...) |
|
||||
| main.rs:101:10:101:31 | my_number.get_number(...) | main.rs:100:41:100:50 | source(...) | main.rs:101:10:101:31 | my_number.get_number(...) | $@ | main.rs:100:41:100:50 | source(...) | source(...) |
|
||||
| main.rs:111:10:111:10 | b | main.rs:105:15:105:24 | source(...) | main.rs:111:10:111:10 | b | $@ | main.rs:105:15:105:24 | source(...) | source(...) |
|
||||
|
||||
@@ -9,105 +9,49 @@ fn sink(s: i64) {
|
||||
println!("{}", s);
|
||||
}
|
||||
|
||||
// Intraprocedural tests involving immutable borrows
|
||||
mod intraprocedural_immutable_borrows {
|
||||
fn read_through_borrow() {
|
||||
let a = source(21);
|
||||
let b = &a;
|
||||
let c = *b;
|
||||
sink(c); // $ hasValueFlow=21
|
||||
}
|
||||
|
||||
fn write_through_borrow() {
|
||||
let mut a = 1;
|
||||
sink(a);
|
||||
let b = &mut a;
|
||||
*b = source(39);
|
||||
sink(a); // $ MISSING: hasValueFlow=39
|
||||
}
|
||||
|
||||
fn write_and_read_through_borrow() {
|
||||
let mut a = 12;
|
||||
let b = &mut a;
|
||||
sink(*b);
|
||||
*b = source(37);
|
||||
sink(*b); // $ hasValueFlow=37
|
||||
*b = 0;
|
||||
sink(*b); // now cleared
|
||||
}
|
||||
|
||||
fn takes_borrowed_value(&n: &i64) {
|
||||
sink(n); // $ hasValueFlow=83
|
||||
}
|
||||
|
||||
fn pass_borrowed_value() {
|
||||
let val = source(83);
|
||||
takes_borrowed_value(&val);
|
||||
}
|
||||
|
||||
mod test_ref_pattern {
|
||||
use super::{sink, source};
|
||||
|
||||
pub fn read_through_borrow() {
|
||||
let a = source(21);
|
||||
let b = &a;
|
||||
let c = *b;
|
||||
sink(c); // $ hasValueFlow=21
|
||||
}
|
||||
|
||||
fn takes_borrowed_value(&n: &i64) {
|
||||
sink(n); // $ hasValueFlow=83
|
||||
}
|
||||
|
||||
pub fn pass_borrowed_value() {
|
||||
let val = source(83);
|
||||
takes_borrowed_value(&val);
|
||||
}
|
||||
|
||||
pub fn ref_nested_pattern_match() {
|
||||
let a = &(source(23), 1);
|
||||
|
||||
// Match "in order", reference pattern then tuple pattern
|
||||
let b = match a {
|
||||
&(n, _) => n,
|
||||
};
|
||||
sink(b); // $ hasValueFlow=23
|
||||
|
||||
// Match "out of order", tuple pattern then deref pattern
|
||||
let c = match a {
|
||||
(n, _) => match n {
|
||||
&i => i,
|
||||
},
|
||||
};
|
||||
sink(c); // $ MISSING: hasValueFlow=23
|
||||
}
|
||||
|
||||
pub fn read_through_ref_pattern() {
|
||||
pub fn read_through_ref() {
|
||||
let a = source(21);
|
||||
let ref p = a;
|
||||
sink(*p); // $ hasValueFlow=21
|
||||
}
|
||||
|
||||
pub fn ref_pattern_in_match() {
|
||||
let a = Some(source(17));
|
||||
match a {
|
||||
Some(ref p) => sink(*p), // $ hasValueFlow=17
|
||||
None => (),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Intraprocedural tests involving mutable borrows
|
||||
mod intraprocedural_mutable_borrows {
|
||||
use super::{sink, source};
|
||||
|
||||
pub fn write_and_read_through_borrow() {
|
||||
let mut a = 12;
|
||||
let b = &mut a;
|
||||
sink(*b);
|
||||
*b = source(37);
|
||||
sink(*b); // $ hasValueFlow=37
|
||||
*b = 0;
|
||||
sink(*b); // now cleared
|
||||
}
|
||||
|
||||
pub fn write_through_borrow() {
|
||||
let mut a = 1;
|
||||
sink(a);
|
||||
let b = &mut a;
|
||||
*b = source(39);
|
||||
sink(a); // $ MISSING: hasValueFlow=39
|
||||
}
|
||||
|
||||
pub fn write_borrow_directly() {
|
||||
let mut a = 1;
|
||||
sink(a);
|
||||
*(&mut a) = source(87);
|
||||
sink(a); // $ MISSING: hasValueFlow=87
|
||||
}
|
||||
|
||||
pub fn clear_through_borrow() {
|
||||
let mut to_be_cleared = source(34);
|
||||
let p = &mut to_be_cleared;
|
||||
*p = 0;
|
||||
sink(to_be_cleared); // variable is cleared
|
||||
}
|
||||
|
||||
pub fn write_through_borrow_in_match(cond: bool) {
|
||||
let mut a = 1;
|
||||
let mut b = 2;
|
||||
let c = if cond { &mut a } else { &mut b };
|
||||
*c = source(24);
|
||||
sink(*c); // $ hasValueFlow=24
|
||||
sink(a); // $ MISSING: hasValueFlow=24
|
||||
sink(b); // $ MISSING: hasValueFlow=24
|
||||
}
|
||||
|
||||
pub fn write_through_ref_mut() {
|
||||
let ref mut a = source(78);
|
||||
sink(*a); // $ hasValueFlow=78
|
||||
@@ -115,43 +59,19 @@ mod intraprocedural_mutable_borrows {
|
||||
sink(*a); // now cleared
|
||||
}
|
||||
|
||||
pub fn mutate_tuple() {
|
||||
let mut t = (1, 2, 3);
|
||||
sink(t.1);
|
||||
let r = &mut t.1;
|
||||
*r = source(48);
|
||||
sink(t.1); // $ MISSING: hasValueFlow=48
|
||||
let r = &mut t.1;
|
||||
*r = 0;
|
||||
sink(t.1); // now cleared
|
||||
}
|
||||
|
||||
pub fn tuple_match_mut() {
|
||||
let mut a = (0, 1);
|
||||
sink(a.0);
|
||||
sink(a.1);
|
||||
match a {
|
||||
(ref mut x, ref mut y) => {
|
||||
*x = source(71);
|
||||
*y = 2;
|
||||
}
|
||||
}
|
||||
sink(a.0); // $ MISSING: hasValueFlow=71
|
||||
sink(a.1);
|
||||
pub fn ref_pattern_in_match() {
|
||||
let a = Some(source(17));
|
||||
let b = match a {
|
||||
Some(ref p) => sink(*p), // $ hasValueFlow=17
|
||||
None => (),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
enum MyNumber {
|
||||
MyNumber(i64),
|
||||
}
|
||||
|
||||
fn to_number(m: MyNumber) -> i64 {
|
||||
match m {
|
||||
MyNumber::MyNumber(number) => number,
|
||||
}
|
||||
}
|
||||
|
||||
impl MyNumber {
|
||||
fn to_number(self) -> i64 {
|
||||
match self {
|
||||
@@ -159,129 +79,58 @@ impl MyNumber {
|
||||
}
|
||||
}
|
||||
|
||||
fn get(&self) -> i64 {
|
||||
fn get_number(&self) -> i64 {
|
||||
match self {
|
||||
&MyNumber::MyNumber(number) => number,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Interprocedural tests involving immutable borrows
|
||||
mod interprocedural_immutable_borrows {
|
||||
use super::*;
|
||||
|
||||
pub fn through_self_in_method_no_borrow() {
|
||||
let my_number = MyNumber::MyNumber(source(33));
|
||||
sink(my_number.to_number()); // $ hasValueFlow=33
|
||||
}
|
||||
|
||||
pub fn through_self_in_method_explicit_borrow() {
|
||||
let my_number = MyNumber::MyNumber(source(40));
|
||||
sink((&my_number).get()); // $ hasValueFlow=40
|
||||
}
|
||||
|
||||
pub fn through_self_in_method_implicit_borrow() {
|
||||
let my_number = MyNumber::MyNumber(source(85));
|
||||
// Implicit borrow
|
||||
sink(my_number.get()); // $ hasValueFlow=85
|
||||
}
|
||||
|
||||
pub fn through_self_in_method_implicit_deref() {
|
||||
let my_number = &MyNumber::MyNumber(source(58));
|
||||
// Implicit dereference
|
||||
sink(my_number.to_number()); // $ hasValueFlow=58
|
||||
}
|
||||
fn through_self_in_method_no_borrow() {
|
||||
let my_number = MyNumber::MyNumber(source(33));
|
||||
sink(my_number.to_number()); // $ hasValueFlow=33
|
||||
}
|
||||
|
||||
// Interprocedural tests involving mutable borrows
|
||||
mod interprocedural_mutable_borrows {
|
||||
use super::*;
|
||||
|
||||
fn set_int(n: &mut i64, value: i64) {
|
||||
*n = value;
|
||||
}
|
||||
|
||||
pub fn mutates_existing_borrow() {
|
||||
// Passing an already borrowed value to a function and then reading from
|
||||
// the same borrow.
|
||||
let mut n = 0;
|
||||
let p = &mut n;
|
||||
sink(*p);
|
||||
set_int(p, source(38));
|
||||
sink(*p); // $ hasValueFlow=38
|
||||
}
|
||||
|
||||
pub fn mutate_primitive_through_function() {
|
||||
// Borrowing at the call and then reading from the unborrowed variable.
|
||||
let mut n = 0;
|
||||
sink(n);
|
||||
set_int(&mut n, source(55));
|
||||
sink(n); // $ hasValueFlow=55
|
||||
}
|
||||
|
||||
impl MyNumber {
|
||||
fn set(&mut self, number: i64) {
|
||||
*self = MyNumber::MyNumber(number);
|
||||
}
|
||||
}
|
||||
|
||||
fn set_number(n: &mut MyNumber, number: i64) {
|
||||
*n = MyNumber::MyNumber(number);
|
||||
}
|
||||
|
||||
pub fn mutate_enum_through_function() {
|
||||
let mut my_number = MyNumber::MyNumber(0);
|
||||
set_number(&mut my_number, source(64));
|
||||
sink(my_number.get()); // $ hasValueFlow=64
|
||||
set_number(&mut my_number, 0);
|
||||
sink(my_number.get()); // $ SPURIOUS: hasValueFlow=64
|
||||
}
|
||||
|
||||
pub fn mutate_enum_through_method_implicit_borrow() {
|
||||
let mut my_number = MyNumber::MyNumber(0);
|
||||
// Implicit borrow.
|
||||
my_number.set(source(45));
|
||||
sink(to_number(my_number)); // $ hasValueFlow=45
|
||||
my_number.set(0);
|
||||
sink(to_number(my_number)); // $ SPURIOUS: hasValueFlow=45
|
||||
}
|
||||
|
||||
pub fn mutate_enum_through_method_explicit_borrow() {
|
||||
let mut my_number = MyNumber::MyNumber(0);
|
||||
// Explicit borrow.
|
||||
(&mut my_number).set(source(99));
|
||||
sink(to_number(my_number)); // $ hasValueFlow=99
|
||||
(&mut my_number).set(0);
|
||||
sink(to_number(my_number)); // $ SPURIOUS: hasValueFlow=99
|
||||
}
|
||||
fn through_self_in_method_implicit_borrow() {
|
||||
let my_number = MyNumber::MyNumber(source(85));
|
||||
sink(my_number.get_number()); // $ MISSING: hasValueFlow=85
|
||||
}
|
||||
|
||||
use interprocedural_immutable_borrows::*;
|
||||
use interprocedural_mutable_borrows::*;
|
||||
use intraprocedural_immutable_borrows::*;
|
||||
use intraprocedural_mutable_borrows::*;
|
||||
fn through_self_in_method_explicit_borrow() {
|
||||
let my_number = &MyNumber::MyNumber(source(40));
|
||||
sink(my_number.get_number()); // $ hasValueFlow=40
|
||||
}
|
||||
|
||||
fn ref_nested_pattern_match() {
|
||||
let a = &(source(23), 1);
|
||||
|
||||
// Match "in order", reference pattern then tuple pattern
|
||||
let b = match a {
|
||||
&(n, _) => n,
|
||||
};
|
||||
sink(b); // $ hasValueFlow=23
|
||||
|
||||
// Match "out of order", tuple pattern then deref pattern
|
||||
let c = match a {
|
||||
(n, _) => match n {
|
||||
&i => i,
|
||||
},
|
||||
};
|
||||
sink(c); // $ MISSING: hasValueFlow=23
|
||||
}
|
||||
|
||||
use test_ref_pattern::*;
|
||||
|
||||
fn main() {
|
||||
read_through_borrow();
|
||||
write_through_borrow();
|
||||
write_borrow_directly();
|
||||
clear_through_borrow();
|
||||
write_through_borrow_in_match(true);
|
||||
write_and_read_through_borrow();
|
||||
pass_borrowed_value();
|
||||
through_self_in_method_no_borrow();
|
||||
through_self_in_method_explicit_borrow();
|
||||
through_self_in_method_implicit_borrow();
|
||||
through_self_in_method_implicit_deref();
|
||||
mutates_existing_borrow();
|
||||
mutate_primitive_through_function();
|
||||
mutate_enum_through_function();
|
||||
mutate_enum_through_method_implicit_borrow();
|
||||
mutate_enum_through_method_explicit_borrow();
|
||||
through_self_in_method_explicit_borrow();
|
||||
ref_nested_pattern_match();
|
||||
read_through_ref_pattern();
|
||||
read_through_ref();
|
||||
write_through_ref_mut();
|
||||
ref_pattern_in_match();
|
||||
mutate_tuple();
|
||||
tuple_match_mut();
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ async fn test_hyper_http(case: i64) -> Result<(), Box<dyn std::error::Error>> {
|
||||
// more realistic uses of results...
|
||||
let request = http::Request::builder().uri(url).body(String::from(""))?;
|
||||
let mut response = sender.send_request(request).await?; // $ Alert[rust/summary/taint-sources]
|
||||
sink(&response); // $ hasTaintFlow=request
|
||||
sink(&response); // $ MISSING: hasTaintFlow=request
|
||||
|
||||
if !response.status().is_success() {
|
||||
return Err("request failed".into())
|
||||
|
||||
@@ -17,8 +17,9 @@ edges
|
||||
| main.rs:52:9:52:10 | s2 | main.rs:53:10:53:11 | s2 | provenance | |
|
||||
| main.rs:52:14:52:29 | ...::from(...) | main.rs:52:9:52:10 | s2 | provenance | |
|
||||
| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:1 |
|
||||
| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str(...) | provenance | MaD:2 |
|
||||
| main.rs:63:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | |
|
||||
| main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | s | provenance | |
|
||||
| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str(...) | provenance | MaD:2 |
|
||||
| main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | |
|
||||
| main.rs:68:9:68:9 | s | main.rs:73:34:73:59 | MacroExpr | provenance | |
|
||||
| main.rs:68:13:68:22 | source(...) | main.rs:68:9:68:9 | s | provenance | |
|
||||
@@ -65,6 +66,7 @@ nodes
|
||||
| main.rs:53:10:53:11 | s2 | semmle.label | s2 |
|
||||
| main.rs:63:9:63:9 | s | semmle.label | s |
|
||||
| main.rs:63:13:63:22 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:64:16:64:16 | s | semmle.label | s |
|
||||
| main.rs:64:16:64:25 | s.as_str(...) | semmle.label | s.as_str(...) |
|
||||
| main.rs:68:9:68:9 | s | semmle.label | s |
|
||||
| main.rs:68:13:68:22 | source(...) | semmle.label | source(...) |
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
nonSsaVariable
|
||||
| main.rs:371:13:371:13 | a |
|
||||
| main.rs:379:13:379:13 | i |
|
||||
| main.rs:402:13:402:13 | x |
|
||||
| main.rs:409:13:409:13 | z |
|
||||
| main.rs:422:13:422:13 | x |
|
||||
| main.rs:456:13:456:13 | z |
|
||||
| main.rs:531:13:531:13 | a |
|
||||
| main.rs:568:11:568:11 | a |
|
||||
definition
|
||||
| main.rs:3:14:3:14 | s | main.rs:3:14:3:14 | s |
|
||||
| main.rs:7:14:7:14 | i | main.rs:7:14:7:14 | i |
|
||||
@@ -101,24 +110,13 @@ definition
|
||||
| main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x |
|
||||
| main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v |
|
||||
| main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text |
|
||||
| main.rs:371:13:371:13 | a | main.rs:371:13:371:13 | a |
|
||||
| main.rs:372:5:372:5 | a | main.rs:371:13:371:13 | a |
|
||||
| main.rs:374:6:374:11 | &mut a | main.rs:371:13:371:13 | a |
|
||||
| main.rs:379:13:379:13 | i | main.rs:379:13:379:13 | i |
|
||||
| main.rs:380:9:380:13 | ref_i | main.rs:380:9:380:13 | ref_i |
|
||||
| main.rs:381:9:381:14 | &mut i | main.rs:379:13:379:13 | i |
|
||||
| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x |
|
||||
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x |
|
||||
| main.rs:393:39:393:39 | y | main.rs:393:39:393:39 | y |
|
||||
| main.rs:402:13:402:13 | x | main.rs:402:13:402:13 | x |
|
||||
| main.rs:403:9:403:9 | y | main.rs:403:9:403:9 | y |
|
||||
| main.rs:404:22:404:27 | &mut x | main.rs:402:13:402:13 | x |
|
||||
| main.rs:409:13:409:13 | z | main.rs:409:13:409:13 | z |
|
||||
| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w |
|
||||
| main.rs:413:9:413:14 | &mut z | main.rs:409:13:409:13 | z |
|
||||
| main.rs:422:13:422:13 | x | main.rs:422:13:422:13 | x |
|
||||
| main.rs:423:9:423:9 | y | main.rs:423:9:423:9 | y |
|
||||
| main.rs:424:9:424:14 | &mut x | main.rs:422:13:422:13 | x |
|
||||
| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x |
|
||||
| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap |
|
||||
| main.rs:432:15:434:5 | <captured entry> x | main.rs:430:9:430:9 | x |
|
||||
@@ -129,9 +127,7 @@ definition
|
||||
| main.rs:450:13:450:20 | closure2 | main.rs:450:13:450:20 | closure2 |
|
||||
| main.rs:451:9:451:9 | y | main.rs:448:13:448:13 | y |
|
||||
| main.rs:453:5:453:14 | <captured exit> y | main.rs:448:13:448:13 | y |
|
||||
| main.rs:456:13:456:13 | z | main.rs:456:13:456:13 | z |
|
||||
| main.rs:458:13:458:20 | closure3 | main.rs:458:13:458:20 | closure3 |
|
||||
| main.rs:458:24:460:5 | <captured entry> z | main.rs:456:13:456:13 | z |
|
||||
| main.rs:466:13:466:13 | i | main.rs:466:13:466:13 | i |
|
||||
| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block |
|
||||
| main.rs:468:9:468:9 | i | main.rs:466:13:466:13 | i |
|
||||
@@ -150,16 +146,11 @@ definition
|
||||
| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f |
|
||||
| main.rs:521:21:524:9 | <captured entry> self | main.rs:520:23:520:26 | self |
|
||||
| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n |
|
||||
| main.rs:531:13:531:13 | a | main.rs:531:13:531:13 | a |
|
||||
| main.rs:532:15:532:15 | a | main.rs:531:13:531:13 | a |
|
||||
| main.rs:535:5:535:5 | a | main.rs:531:13:531:13 | a |
|
||||
| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a |
|
||||
| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a |
|
||||
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x |
|
||||
| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z |
|
||||
| main.rs:562:15:562:18 | self | main.rs:562:15:562:18 | self |
|
||||
| main.rs:568:11:568:11 | a | main.rs:568:11:568:11 | a |
|
||||
| main.rs:569:3:569:3 | a | main.rs:568:11:568:11 | a |
|
||||
| main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro |
|
||||
| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro |
|
||||
| main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro |
|
||||
@@ -255,12 +246,7 @@ read
|
||||
| main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x | main.rs:356:13:356:13 | x |
|
||||
| main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v | main.rs:365:12:365:12 | v |
|
||||
| main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text | main.rs:366:19:366:22 | text |
|
||||
| main.rs:372:5:372:5 | a | main.rs:371:13:371:13 | a | main.rs:373:15:373:15 | a |
|
||||
| main.rs:372:5:372:5 | a | main.rs:371:13:371:13 | a | main.rs:374:11:374:11 | a |
|
||||
| main.rs:374:6:374:11 | &mut a | main.rs:371:13:371:13 | a | main.rs:375:15:375:15 | a |
|
||||
| main.rs:379:13:379:13 | i | main.rs:379:13:379:13 | i | main.rs:381:14:381:14 | i |
|
||||
| main.rs:380:9:380:13 | ref_i | main.rs:380:9:380:13 | ref_i | main.rs:382:6:382:10 | ref_i |
|
||||
| main.rs:381:9:381:14 | &mut i | main.rs:379:13:379:13 | i | main.rs:383:15:383:15 | i |
|
||||
| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:387:6:387:6 | x |
|
||||
| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:388:10:388:10 | x |
|
||||
| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:389:10:389:10 | x |
|
||||
@@ -270,17 +256,10 @@ read
|
||||
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:396:10:396:10 | x |
|
||||
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:398:9:398:9 | x |
|
||||
| main.rs:393:39:393:39 | y | main.rs:393:39:393:39 | y | main.rs:397:6:397:6 | y |
|
||||
| main.rs:402:13:402:13 | x | main.rs:402:13:402:13 | x | main.rs:404:27:404:27 | x |
|
||||
| main.rs:403:9:403:9 | y | main.rs:403:9:403:9 | y | main.rs:405:6:405:6 | y |
|
||||
| main.rs:404:22:404:27 | &mut x | main.rs:402:13:402:13 | x | main.rs:407:15:407:15 | x |
|
||||
| main.rs:404:22:404:27 | &mut x | main.rs:402:13:402:13 | x | main.rs:411:19:411:19 | x |
|
||||
| main.rs:409:13:409:13 | z | main.rs:409:13:409:13 | z | main.rs:413:14:413:14 | z |
|
||||
| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:414:9:414:9 | w |
|
||||
| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:416:7:416:7 | w |
|
||||
| main.rs:413:9:413:14 | &mut z | main.rs:409:13:409:13 | z | main.rs:418:15:418:15 | z |
|
||||
| main.rs:422:13:422:13 | x | main.rs:422:13:422:13 | x | main.rs:424:14:424:14 | x |
|
||||
| main.rs:423:9:423:9 | y | main.rs:423:9:423:9 | y | main.rs:425:6:425:6 | y |
|
||||
| main.rs:424:9:424:14 | &mut x | main.rs:422:13:422:13 | x | main.rs:426:15:426:15 | x |
|
||||
| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x |
|
||||
| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap |
|
||||
| main.rs:432:15:434:5 | <captured entry> x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x |
|
||||
@@ -289,9 +268,7 @@ read
|
||||
| main.rs:442:20:444:5 | <captured entry> x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x |
|
||||
| main.rs:450:13:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 |
|
||||
| main.rs:453:5:453:14 | <captured exit> y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y |
|
||||
| main.rs:456:13:456:13 | z | main.rs:456:13:456:13 | z | main.rs:462:15:462:15 | z |
|
||||
| main.rs:458:13:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 |
|
||||
| main.rs:458:24:460:5 | <captured entry> z | main.rs:456:13:456:13 | z | main.rs:459:9:459:9 | z |
|
||||
| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block |
|
||||
| main.rs:471:5:471:15 | <captured exit> i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i |
|
||||
| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b |
|
||||
@@ -314,10 +291,6 @@ read
|
||||
| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f | main.rs:526:9:526:9 | f |
|
||||
| main.rs:521:21:524:9 | <captured entry> self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self |
|
||||
| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n |
|
||||
| main.rs:531:13:531:13 | a | main.rs:531:13:531:13 | a | main.rs:532:15:532:15 | a |
|
||||
| main.rs:532:15:532:15 | a | main.rs:531:13:531:13 | a | main.rs:533:5:533:5 | a |
|
||||
| main.rs:532:15:532:15 | a | main.rs:531:13:531:13 | a | main.rs:534:15:534:15 | a |
|
||||
| main.rs:535:5:535:5 | a | main.rs:531:13:531:13 | a | main.rs:536:15:536:15 | a |
|
||||
| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a |
|
||||
| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a |
|
||||
| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:543:15:543:15 | a |
|
||||
@@ -326,8 +299,6 @@ read
|
||||
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:551:15:551:15 | x |
|
||||
| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | main.rs:554:20:554:20 | z |
|
||||
| main.rs:562:15:562:18 | self | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self |
|
||||
| main.rs:568:11:568:11 | a | main.rs:568:11:568:11 | a | main.rs:569:3:569:3 | a |
|
||||
| main.rs:569:3:569:3 | a | main.rs:568:11:568:11 | a | main.rs:571:13:571:13 | a |
|
||||
| main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | main.rs:595:15:595:28 | var_from_macro |
|
||||
| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro |
|
||||
| main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | main.rs:601:15:601:26 | var_in_macro |
|
||||
@@ -411,24 +382,13 @@ firstRead
|
||||
| main.rs:355:14:355:14 | x | main.rs:355:14:355:14 | x | main.rs:356:13:356:13 | x |
|
||||
| main.rs:362:9:362:9 | v | main.rs:362:9:362:9 | v | main.rs:365:12:365:12 | v |
|
||||
| main.rs:364:9:364:12 | text | main.rs:364:9:364:12 | text | main.rs:366:19:366:22 | text |
|
||||
| main.rs:371:13:371:13 | a | main.rs:371:13:371:13 | a | main.rs:372:5:372:5 | a |
|
||||
| main.rs:372:5:372:5 | a | main.rs:371:13:371:13 | a | main.rs:373:15:373:15 | a |
|
||||
| main.rs:374:6:374:11 | &mut a | main.rs:371:13:371:13 | a | main.rs:375:15:375:15 | a |
|
||||
| main.rs:379:13:379:13 | i | main.rs:379:13:379:13 | i | main.rs:381:14:381:14 | i |
|
||||
| main.rs:380:9:380:13 | ref_i | main.rs:380:9:380:13 | ref_i | main.rs:382:6:382:10 | ref_i |
|
||||
| main.rs:381:9:381:14 | &mut i | main.rs:379:13:379:13 | i | main.rs:383:15:383:15 | i |
|
||||
| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:387:6:387:6 | x |
|
||||
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:394:6:394:6 | x |
|
||||
| main.rs:393:39:393:39 | y | main.rs:393:39:393:39 | y | main.rs:397:6:397:6 | y |
|
||||
| main.rs:402:13:402:13 | x | main.rs:402:13:402:13 | x | main.rs:404:27:404:27 | x |
|
||||
| main.rs:403:9:403:9 | y | main.rs:403:9:403:9 | y | main.rs:405:6:405:6 | y |
|
||||
| main.rs:404:22:404:27 | &mut x | main.rs:402:13:402:13 | x | main.rs:407:15:407:15 | x |
|
||||
| main.rs:409:13:409:13 | z | main.rs:409:13:409:13 | z | main.rs:413:14:413:14 | z |
|
||||
| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:414:9:414:9 | w |
|
||||
| main.rs:413:9:413:14 | &mut z | main.rs:409:13:409:13 | z | main.rs:418:15:418:15 | z |
|
||||
| main.rs:422:13:422:13 | x | main.rs:422:13:422:13 | x | main.rs:424:14:424:14 | x |
|
||||
| main.rs:423:9:423:9 | y | main.rs:423:9:423:9 | y | main.rs:425:6:425:6 | y |
|
||||
| main.rs:424:9:424:14 | &mut x | main.rs:422:13:422:13 | x | main.rs:426:15:426:15 | x |
|
||||
| main.rs:430:9:430:9 | x | main.rs:430:9:430:9 | x | main.rs:436:15:436:15 | x |
|
||||
| main.rs:432:9:432:11 | cap | main.rs:432:9:432:11 | cap | main.rs:435:5:435:7 | cap |
|
||||
| main.rs:432:15:434:5 | <captured entry> x | main.rs:430:9:430:9 | x | main.rs:433:19:433:19 | x |
|
||||
@@ -437,9 +397,7 @@ firstRead
|
||||
| main.rs:442:20:444:5 | <captured entry> x | main.rs:440:13:440:13 | x | main.rs:443:19:443:19 | x |
|
||||
| main.rs:450:13:450:20 | closure2 | main.rs:450:13:450:20 | closure2 | main.rs:453:5:453:12 | closure2 |
|
||||
| main.rs:453:5:453:14 | <captured exit> y | main.rs:448:13:448:13 | y | main.rs:454:15:454:15 | y |
|
||||
| main.rs:456:13:456:13 | z | main.rs:456:13:456:13 | z | main.rs:462:15:462:15 | z |
|
||||
| main.rs:458:13:458:20 | closure3 | main.rs:458:13:458:20 | closure3 | main.rs:461:5:461:12 | closure3 |
|
||||
| main.rs:458:24:460:5 | <captured entry> z | main.rs:456:13:456:13 | z | main.rs:459:9:459:9 | z |
|
||||
| main.rs:467:9:467:13 | block | main.rs:467:9:467:13 | block | main.rs:471:5:471:9 | block |
|
||||
| main.rs:471:5:471:15 | <captured exit> i | main.rs:466:13:466:13 | i | main.rs:472:15:472:15 | i |
|
||||
| main.rs:475:8:475:8 | b | main.rs:475:8:475:8 | b | main.rs:479:8:479:8 | b |
|
||||
@@ -456,16 +414,11 @@ firstRead
|
||||
| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f |
|
||||
| main.rs:521:21:524:9 | <captured entry> self | main.rs:520:23:520:26 | self | main.rs:523:13:523:16 | self |
|
||||
| main.rs:521:22:521:22 | n | main.rs:521:22:521:22 | n | main.rs:523:25:523:25 | n |
|
||||
| main.rs:531:13:531:13 | a | main.rs:531:13:531:13 | a | main.rs:532:15:532:15 | a |
|
||||
| main.rs:532:15:532:15 | a | main.rs:531:13:531:13 | a | main.rs:533:5:533:5 | a |
|
||||
| main.rs:535:5:535:5 | a | main.rs:531:13:531:13 | a | main.rs:536:15:536:15 | a |
|
||||
| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a |
|
||||
| main.rs:544:5:544:5 | a | main.rs:540:13:540:13 | a | main.rs:545:15:545:15 | a |
|
||||
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x |
|
||||
| main.rs:553:9:553:9 | z | main.rs:553:9:553:9 | z | main.rs:554:20:554:20 | z |
|
||||
| main.rs:562:15:562:18 | self | main.rs:562:15:562:18 | self | main.rs:563:6:563:9 | self |
|
||||
| main.rs:568:11:568:11 | a | main.rs:568:11:568:11 | a | main.rs:569:3:569:3 | a |
|
||||
| main.rs:569:3:569:3 | a | main.rs:568:11:568:11 | a | main.rs:571:13:571:13 | a |
|
||||
| main.rs:593:9:593:22 | var_from_macro | main.rs:593:9:593:22 | var_from_macro | main.rs:595:15:595:28 | var_from_macro |
|
||||
| main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro | main.rs:594:9:594:25 | var_in_macro |
|
||||
| main.rs:596:9:596:20 | var_in_macro | main.rs:596:9:596:20 | var_in_macro | main.rs:601:15:601:26 | var_in_macro |
|
||||
@@ -484,14 +437,12 @@ adjacentReads
|
||||
| main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 | main.rs:292:9:292:11 | a10 | main.rs:296:15:296:17 | a10 |
|
||||
| main.rs:290:9:290:11 | a10 | main.rs:279:13:279:15 | a10 | main.rs:296:15:296:17 | a10 | main.rs:310:15:310:17 | a10 |
|
||||
| main.rs:333:9:333:9 | f | main.rs:333:9:333:9 | f | main.rs:336:15:336:15 | f | main.rs:342:15:342:15 | f |
|
||||
| main.rs:372:5:372:5 | a | main.rs:371:13:371:13 | a | main.rs:373:15:373:15 | a | main.rs:374:11:374:11 | a |
|
||||
| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:387:6:387:6 | x | main.rs:388:10:388:10 | x |
|
||||
| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:388:10:388:10 | x | main.rs:389:10:389:10 | x |
|
||||
| main.rs:386:17:386:17 | x | main.rs:386:17:386:17 | x | main.rs:389:10:389:10 | x | main.rs:390:12:390:12 | x |
|
||||
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:394:6:394:6 | x | main.rs:395:10:395:10 | x |
|
||||
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:395:10:395:10 | x | main.rs:396:10:396:10 | x |
|
||||
| main.rs:393:22:393:22 | x | main.rs:393:22:393:22 | x | main.rs:396:10:396:10 | x | main.rs:398:9:398:9 | x |
|
||||
| main.rs:404:22:404:27 | &mut x | main.rs:402:13:402:13 | x | main.rs:407:15:407:15 | x | main.rs:411:19:411:19 | x |
|
||||
| main.rs:410:9:410:9 | w | main.rs:410:9:410:9 | w | main.rs:414:9:414:9 | w | main.rs:416:7:416:7 | w |
|
||||
| main.rs:476:13:476:13 | x | main.rs:476:13:476:13 | x | main.rs:477:15:477:15 | x | main.rs:478:15:478:15 | x |
|
||||
| main.rs:480:9:480:9 | x | main.rs:476:13:476:13 | x | main.rs:481:19:481:19 | x | main.rs:482:19:482:19 | x |
|
||||
@@ -501,7 +452,6 @@ adjacentReads
|
||||
| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | main.rs:500:19:500:19 | x |
|
||||
| main.rs:492:9:492:9 | x | main.rs:492:9:492:9 | x | main.rs:496:19:496:19 | x | main.rs:502:19:502:19 | x |
|
||||
| main.rs:521:17:521:17 | f | main.rs:521:17:521:17 | f | main.rs:525:9:525:9 | f | main.rs:526:9:526:9 | f |
|
||||
| main.rs:532:15:532:15 | a | main.rs:531:13:531:13 | a | main.rs:533:5:533:5 | a | main.rs:534:15:534:15 | a |
|
||||
| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:541:15:541:15 | a | main.rs:542:5:542:5 | a |
|
||||
| main.rs:540:13:540:13 | a | main.rs:540:13:540:13 | a | main.rs:542:5:542:5 | a | main.rs:543:15:543:15 | a |
|
||||
| main.rs:549:9:549:9 | x | main.rs:549:9:549:9 | x | main.rs:550:20:550:20 | x | main.rs:551:15:551:15 | x |
|
||||
@@ -603,14 +553,9 @@ assigns
|
||||
| main.rs:333:9:333:9 | f | main.rs:334:9:335:9 | \|...\| x |
|
||||
| main.rs:354:13:354:13 | f | main.rs:355:13:356:13 | \|...\| x |
|
||||
| main.rs:362:9:362:9 | v | main.rs:362:13:362:41 | &... |
|
||||
| main.rs:371:13:371:13 | a | main.rs:371:17:371:17 | 0 |
|
||||
| main.rs:379:13:379:13 | i | main.rs:379:17:379:17 | 1 |
|
||||
| main.rs:380:9:380:13 | ref_i | main.rs:381:9:381:14 | &mut i |
|
||||
| main.rs:402:13:402:13 | x | main.rs:402:17:402:17 | 2 |
|
||||
| main.rs:403:9:403:9 | y | main.rs:404:9:404:28 | mutate_param(...) |
|
||||
| main.rs:409:13:409:13 | z | main.rs:409:17:409:17 | 4 |
|
||||
| main.rs:410:9:410:9 | w | main.rs:411:9:411:19 | &mut ... |
|
||||
| main.rs:422:13:422:13 | x | main.rs:422:17:422:17 | 1 |
|
||||
| main.rs:423:9:423:9 | y | main.rs:424:9:424:14 | &mut x |
|
||||
| main.rs:430:9:430:9 | x | main.rs:430:13:430:15 | 100 |
|
||||
| main.rs:432:9:432:11 | cap | main.rs:432:15:434:5 | \|...\| ... |
|
||||
@@ -619,7 +564,6 @@ assigns
|
||||
| main.rs:448:13:448:13 | y | main.rs:448:17:448:17 | 2 |
|
||||
| main.rs:450:13:450:20 | closure2 | main.rs:450:24:452:5 | \|...\| ... |
|
||||
| main.rs:451:9:451:9 | y | main.rs:451:13:451:13 | 3 |
|
||||
| main.rs:456:13:456:13 | z | main.rs:456:17:456:17 | 2 |
|
||||
| main.rs:458:13:458:20 | closure3 | main.rs:458:24:460:5 | \|...\| ... |
|
||||
| main.rs:466:13:466:13 | i | main.rs:466:22:466:22 | 0 |
|
||||
| main.rs:467:9:467:13 | block | main.rs:467:17:469:5 | { ... } |
|
||||
@@ -629,13 +573,10 @@ assigns
|
||||
| main.rs:484:9:484:9 | x | main.rs:484:13:484:13 | 3 |
|
||||
| main.rs:492:9:492:9 | x | main.rs:492:13:492:13 | 1 |
|
||||
| main.rs:521:17:521:17 | f | main.rs:521:21:524:9 | \|...\| ... |
|
||||
| main.rs:531:13:531:13 | a | main.rs:531:17:531:35 | MyStruct {...} |
|
||||
| main.rs:535:5:535:5 | a | main.rs:535:9:535:27 | MyStruct {...} |
|
||||
| main.rs:540:13:540:13 | a | main.rs:540:17:540:25 | [...] |
|
||||
| main.rs:544:5:544:5 | a | main.rs:544:9:544:17 | [...] |
|
||||
| main.rs:549:9:549:9 | x | main.rs:549:13:549:14 | 16 |
|
||||
| main.rs:553:9:553:9 | z | main.rs:553:13:553:14 | 17 |
|
||||
| main.rs:568:11:568:11 | a | main.rs:568:15:568:33 | MyStruct {...} |
|
||||
| main.rs:593:9:593:22 | var_from_macro | main.rs:594:9:594:25 | MacroExpr |
|
||||
| main.rs:594:9:594:25 | var_in_macro | main.rs:594:23:594:24 | 37 |
|
||||
| main.rs:596:9:596:20 | var_in_macro | main.rs:596:24:596:25 | 33 |
|
||||
|
||||
@@ -5,6 +5,8 @@ import codeql.rust.dataflow.Ssa
|
||||
import codeql.rust.dataflow.internal.SsaImpl
|
||||
import ExposedForTestingOnly
|
||||
|
||||
query predicate nonSsaVariable(Variable v) { not v instanceof Ssa::Variable }
|
||||
|
||||
query predicate definition(Ssa::Definition def, Variable v) { def.getSourceVariable() = v }
|
||||
|
||||
query predicate read(Ssa::Definition def, Variable v, CfgNode read) {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
| Macro calls - resolved | 8 |
|
||||
| Macro calls - total | 9 |
|
||||
| Macro calls - unresolved | 1 |
|
||||
| Taint edges - number of edges | 1670 |
|
||||
| Taint edges - number of edges | 1471 |
|
||||
| Taint reach - nodes tainted | 0 |
|
||||
| Taint reach - per million nodes | 0 |
|
||||
| Taint sinks - cryptographic operations | 0 |
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
#select
|
||||
| sqlx.rs:62:26:62:46 | safe_query_3.as_str(...) | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:62:26:62:46 | safe_query_3.as_str(...) | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value |
|
||||
| sqlx.rs:65:30:65:52 | unsafe_query_2.as_str(...) | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:65:30:65:52 | unsafe_query_2.as_str(...) | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value |
|
||||
| sqlx.rs:67:30:67:52 | unsafe_query_4.as_str(...) | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:67:30:67:52 | unsafe_query_4.as_str(...) | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value |
|
||||
| sqlx.rs:73:25:73:45 | safe_query_3.as_str(...) | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:73:25:73:45 | safe_query_3.as_str(...) | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value |
|
||||
| sqlx.rs:76:29:76:51 | unsafe_query_2.as_str(...) | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:76:29:76:51 | unsafe_query_2.as_str(...) | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value |
|
||||
| sqlx.rs:78:29:78:51 | unsafe_query_4.as_str(...) | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:78:29:78:51 | unsafe_query_4.as_str(...) | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value |
|
||||
edges
|
||||
| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse(...) [Ok] | provenance | MaD:6 |
|
||||
| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | |
|
||||
| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:37 | remote_string | provenance | |
|
||||
| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:56:34:56:89 | MacroExpr | provenance | |
|
||||
| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:1 |
|
||||
| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap(...) | provenance | MaD:4 |
|
||||
@@ -15,28 +12,27 @@ edges
|
||||
| sqlx.rs:48:25:48:85 | ... .text(...) [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:5 |
|
||||
| sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | |
|
||||
| sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | |
|
||||
| sqlx.rs:49:25:49:37 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse(...) [Ok] | provenance | MaD:6 |
|
||||
| sqlx.rs:49:25:49:52 | remote_string.parse(...) [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:5 |
|
||||
| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | |
|
||||
| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:62:26:62:46 | safe_query_3.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:73:25:73:45 | safe_query_3.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:62:26:62:37 | safe_query_3 | provenance | |
|
||||
| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:73:25:73:36 | safe_query_3 | provenance | |
|
||||
| sqlx.rs:52:24:52:88 | res | sqlx.rs:52:32:52:87 | { ... } | provenance | |
|
||||
| sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:24:52:88 | res | provenance | |
|
||||
| sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | |
|
||||
| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:3 |
|
||||
| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:7 |
|
||||
| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:65:30:65:43 | unsafe_query_2 [&ref] | provenance | |
|
||||
| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:76:29:76:42 | unsafe_query_2 [&ref] | provenance | |
|
||||
| sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | |
|
||||
| sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | |
|
||||
| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:67:30:67:52 | unsafe_query_4.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:78:29:78:51 | unsafe_query_4.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:67:30:67:43 | unsafe_query_4 | provenance | |
|
||||
| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:78:29:78:42 | unsafe_query_4 | provenance | |
|
||||
| sqlx.rs:56:26:56:90 | res | sqlx.rs:56:34:56:89 | { ... } | provenance | |
|
||||
| sqlx.rs:56:34:56:89 | ...::format(...) | sqlx.rs:56:26:56:90 | res | provenance | |
|
||||
| sqlx.rs:56:34:56:89 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | |
|
||||
| sqlx.rs:56:34:56:89 | MacroExpr | sqlx.rs:56:34:56:89 | ...::format(...) | provenance | MaD:3 |
|
||||
| sqlx.rs:56:34:56:89 | { ... } | sqlx.rs:56:34:56:89 | ...::must_use(...) | provenance | MaD:7 |
|
||||
| sqlx.rs:65:30:65:43 | unsafe_query_2 [&ref] | sqlx.rs:65:30:65:52 | unsafe_query_2.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:76:29:76:42 | unsafe_query_2 [&ref] | sqlx.rs:76:29:76:51 | unsafe_query_2.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:62:26:62:37 | safe_query_3 | sqlx.rs:62:26:62:46 | safe_query_3.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:67:30:67:43 | unsafe_query_4 | sqlx.rs:67:30:67:52 | unsafe_query_4.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:73:25:73:36 | safe_query_3 | sqlx.rs:73:25:73:45 | safe_query_3.as_str(...) | provenance | MaD:2 |
|
||||
| sqlx.rs:78:29:78:42 | unsafe_query_4 | sqlx.rs:78:29:78:51 | unsafe_query_4.as_str(...) | provenance | MaD:2 |
|
||||
models
|
||||
| 1 | Source: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; remote; ReturnValue.Field[crate::result::Result::Ok(0)] |
|
||||
| 2 | Summary: lang:alloc; <crate::string::String>::as_str; Argument[self]; ReturnValue; taint |
|
||||
@@ -54,6 +50,7 @@ nodes
|
||||
| sqlx.rs:48:25:48:85 | ... .text(...) [Ok] | semmle.label | ... .text(...) [Ok] |
|
||||
| sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) |
|
||||
| sqlx.rs:49:9:49:21 | remote_number | semmle.label | remote_number |
|
||||
| sqlx.rs:49:25:49:37 | remote_string | semmle.label | remote_string |
|
||||
| sqlx.rs:49:25:49:52 | remote_string.parse(...) [Ok] | semmle.label | remote_string.parse(...) [Ok] |
|
||||
| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) |
|
||||
| sqlx.rs:52:9:52:20 | safe_query_3 | semmle.label | safe_query_3 |
|
||||
@@ -62,21 +59,18 @@ nodes
|
||||
| sqlx.rs:52:32:52:87 | ...::must_use(...) | semmle.label | ...::must_use(...) |
|
||||
| sqlx.rs:52:32:52:87 | MacroExpr | semmle.label | MacroExpr |
|
||||
| sqlx.rs:52:32:52:87 | { ... } | semmle.label | { ... } |
|
||||
| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | semmle.label | unsafe_query_2 [&ref] |
|
||||
| sqlx.rs:54:26:54:39 | &remote_string [&ref] | semmle.label | &remote_string [&ref] |
|
||||
| sqlx.rs:54:27:54:39 | remote_string | semmle.label | remote_string |
|
||||
| sqlx.rs:56:9:56:22 | unsafe_query_4 | semmle.label | unsafe_query_4 |
|
||||
| sqlx.rs:56:26:56:90 | res | semmle.label | res |
|
||||
| sqlx.rs:56:34:56:89 | ...::format(...) | semmle.label | ...::format(...) |
|
||||
| sqlx.rs:56:34:56:89 | ...::must_use(...) | semmle.label | ...::must_use(...) |
|
||||
| sqlx.rs:56:34:56:89 | MacroExpr | semmle.label | MacroExpr |
|
||||
| sqlx.rs:56:34:56:89 | { ... } | semmle.label | { ... } |
|
||||
| sqlx.rs:62:26:62:37 | safe_query_3 | semmle.label | safe_query_3 |
|
||||
| sqlx.rs:62:26:62:46 | safe_query_3.as_str(...) | semmle.label | safe_query_3.as_str(...) |
|
||||
| sqlx.rs:65:30:65:43 | unsafe_query_2 [&ref] | semmle.label | unsafe_query_2 [&ref] |
|
||||
| sqlx.rs:65:30:65:52 | unsafe_query_2.as_str(...) | semmle.label | unsafe_query_2.as_str(...) |
|
||||
| sqlx.rs:67:30:67:43 | unsafe_query_4 | semmle.label | unsafe_query_4 |
|
||||
| sqlx.rs:67:30:67:52 | unsafe_query_4.as_str(...) | semmle.label | unsafe_query_4.as_str(...) |
|
||||
| sqlx.rs:73:25:73:36 | safe_query_3 | semmle.label | safe_query_3 |
|
||||
| sqlx.rs:73:25:73:45 | safe_query_3.as_str(...) | semmle.label | safe_query_3.as_str(...) |
|
||||
| sqlx.rs:76:29:76:42 | unsafe_query_2 [&ref] | semmle.label | unsafe_query_2 [&ref] |
|
||||
| sqlx.rs:76:29:76:51 | unsafe_query_2.as_str(...) | semmle.label | unsafe_query_2.as_str(...) |
|
||||
| sqlx.rs:78:29:78:42 | unsafe_query_4 | semmle.label | unsafe_query_4 |
|
||||
| sqlx.rs:78:29:78:51 | unsafe_query_4.as_str(...) | semmle.label | unsafe_query_4.as_str(...) |
|
||||
subpaths
|
||||
|
||||
@@ -62,7 +62,7 @@ async fn test_sqlx_mysql(url: &str, enable_remote: bool) -> Result<(), sqlx::Err
|
||||
let _ = conn.execute(safe_query_3.as_str()).await?; // $ sql-sink SPURIOUS: Alert[rust/sql-injection]=remote1
|
||||
let _ = conn.execute(unsafe_query_1.as_str()).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=args1
|
||||
if enable_remote {
|
||||
let _ = conn.execute(unsafe_query_2.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote1
|
||||
let _ = conn.execute(unsafe_query_2.as_str()).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1
|
||||
let _ = conn.execute(unsafe_query_3.as_str()).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1
|
||||
let _ = conn.execute(unsafe_query_4.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote1
|
||||
}
|
||||
@@ -73,7 +73,7 @@ async fn test_sqlx_mysql(url: &str, enable_remote: bool) -> Result<(), sqlx::Err
|
||||
let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink SPURIOUS: Alert[rust/sql-injection]=remote1
|
||||
let _ = sqlx::query(unsafe_query_1.as_str()).execute(&pool).await?; // $ sql-sink MISSING: Alert[rust/sql-injection][rust/sql-injection]=args1
|
||||
if enable_remote {
|
||||
let _ = sqlx::query(unsafe_query_2.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1
|
||||
let _ = sqlx::query(unsafe_query_2.as_str()).execute(&pool).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1
|
||||
let _ = sqlx::query(unsafe_query_3.as_str()).execute(&pool).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1
|
||||
let _ = sqlx::query(unsafe_query_4.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1
|
||||
}
|
||||
|
||||
@@ -180,38 +180,43 @@ edges
|
||||
| test_logging.rs:167:40:167:63 | ...::Some(...) [Some] | test_logging.rs:167:17:167:64 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 |
|
||||
| test_logging.rs:167:40:167:63 | MacroExpr | test_logging.rs:167:40:167:63 | ...::Some(...) [Some] | provenance | |
|
||||
| test_logging.rs:167:56:167:63 | password | test_logging.rs:167:40:167:63 | MacroExpr | provenance | |
|
||||
| test_logging.rs:168:34:168:66 | MacroExpr | test_logging.rs:168:34:168:75 | ... .as_str(...) | provenance | MaD:12 |
|
||||
| test_logging.rs:168:34:168:66 | res | test_logging.rs:168:42:168:65 | { ... } | provenance | |
|
||||
| test_logging.rs:168:34:168:75 | ... .as_str(...) | test_logging.rs:168:27:168:32 | expect | provenance | MaD:1 Sink:MaD:1 |
|
||||
| test_logging.rs:168:42:168:65 | ...::format(...) | test_logging.rs:168:34:168:66 | res | provenance | |
|
||||
| test_logging.rs:168:42:168:65 | ...::must_use(...) | test_logging.rs:168:34:168:75 | ... .as_str(...) | provenance | MaD:12 |
|
||||
| test_logging.rs:168:42:168:65 | ...::must_use(...) | test_logging.rs:168:34:168:66 | MacroExpr | provenance | |
|
||||
| test_logging.rs:168:42:168:65 | MacroExpr | test_logging.rs:168:42:168:65 | ...::format(...) | provenance | MaD:13 |
|
||||
| test_logging.rs:168:42:168:65 | { ... } | test_logging.rs:168:42:168:65 | ...::must_use(...) | provenance | MaD:14 |
|
||||
| test_logging.rs:168:58:168:65 | password | test_logging.rs:168:42:168:65 | MacroExpr | provenance | |
|
||||
| test_logging.rs:174:36:174:70 | MacroExpr | test_logging.rs:174:36:174:81 | ... .as_bytes(...) | provenance | MaD:11 |
|
||||
| test_logging.rs:174:36:174:70 | res | test_logging.rs:174:44:174:69 | { ... } | provenance | |
|
||||
| test_logging.rs:174:36:174:81 | ... .as_bytes(...) | test_logging.rs:174:30:174:34 | write | provenance | MaD:5 Sink:MaD:5 |
|
||||
| test_logging.rs:174:44:174:69 | ...::format(...) | test_logging.rs:174:36:174:70 | res | provenance | |
|
||||
| test_logging.rs:174:44:174:69 | ...::must_use(...) | test_logging.rs:174:36:174:81 | ... .as_bytes(...) | provenance | MaD:11 |
|
||||
| test_logging.rs:174:44:174:69 | ...::must_use(...) | test_logging.rs:174:36:174:70 | MacroExpr | provenance | |
|
||||
| test_logging.rs:174:44:174:69 | MacroExpr | test_logging.rs:174:44:174:69 | ...::format(...) | provenance | MaD:13 |
|
||||
| test_logging.rs:174:44:174:69 | { ... } | test_logging.rs:174:44:174:69 | ...::must_use(...) | provenance | MaD:14 |
|
||||
| test_logging.rs:174:62:174:69 | password | test_logging.rs:174:44:174:69 | MacroExpr | provenance | |
|
||||
| test_logging.rs:175:40:175:74 | MacroExpr | test_logging.rs:175:40:175:85 | ... .as_bytes(...) | provenance | MaD:11 |
|
||||
| test_logging.rs:175:40:175:74 | res | test_logging.rs:175:48:175:73 | { ... } | provenance | |
|
||||
| test_logging.rs:175:40:175:85 | ... .as_bytes(...) | test_logging.rs:175:30:175:38 | write_all | provenance | MaD:6 Sink:MaD:6 |
|
||||
| test_logging.rs:175:48:175:73 | ...::format(...) | test_logging.rs:175:40:175:74 | res | provenance | |
|
||||
| test_logging.rs:175:48:175:73 | ...::must_use(...) | test_logging.rs:175:40:175:85 | ... .as_bytes(...) | provenance | MaD:11 |
|
||||
| test_logging.rs:175:48:175:73 | ...::must_use(...) | test_logging.rs:175:40:175:74 | MacroExpr | provenance | |
|
||||
| test_logging.rs:175:48:175:73 | MacroExpr | test_logging.rs:175:48:175:73 | ...::format(...) | provenance | MaD:13 |
|
||||
| test_logging.rs:175:48:175:73 | { ... } | test_logging.rs:175:48:175:73 | ...::must_use(...) | provenance | MaD:14 |
|
||||
| test_logging.rs:175:66:175:73 | password | test_logging.rs:175:48:175:73 | MacroExpr | provenance | |
|
||||
| test_logging.rs:178:15:178:49 | MacroExpr | test_logging.rs:178:15:178:60 | ... .as_bytes(...) | provenance | MaD:11 |
|
||||
| test_logging.rs:178:15:178:49 | res | test_logging.rs:178:23:178:48 | { ... } | provenance | |
|
||||
| test_logging.rs:178:15:178:60 | ... .as_bytes(...) | test_logging.rs:178:9:178:13 | write | provenance | MaD:5 Sink:MaD:5 |
|
||||
| test_logging.rs:178:23:178:48 | ...::format(...) | test_logging.rs:178:15:178:49 | res | provenance | |
|
||||
| test_logging.rs:178:23:178:48 | ...::must_use(...) | test_logging.rs:178:15:178:60 | ... .as_bytes(...) | provenance | MaD:11 |
|
||||
| test_logging.rs:178:23:178:48 | ...::must_use(...) | test_logging.rs:178:15:178:49 | MacroExpr | provenance | |
|
||||
| test_logging.rs:178:23:178:48 | MacroExpr | test_logging.rs:178:23:178:48 | ...::format(...) | provenance | MaD:13 |
|
||||
| test_logging.rs:178:23:178:48 | { ... } | test_logging.rs:178:23:178:48 | ...::must_use(...) | provenance | MaD:14 |
|
||||
| test_logging.rs:178:41:178:48 | password | test_logging.rs:178:23:178:48 | MacroExpr | provenance | |
|
||||
| test_logging.rs:181:15:181:49 | MacroExpr | test_logging.rs:181:15:181:60 | ... .as_bytes(...) | provenance | MaD:11 |
|
||||
| test_logging.rs:181:15:181:49 | res | test_logging.rs:181:23:181:48 | { ... } | provenance | |
|
||||
| test_logging.rs:181:15:181:60 | ... .as_bytes(...) | test_logging.rs:181:9:181:13 | write | provenance | MaD:4 Sink:MaD:4 |
|
||||
| test_logging.rs:181:23:181:48 | ...::format(...) | test_logging.rs:181:15:181:49 | res | provenance | |
|
||||
| test_logging.rs:181:23:181:48 | ...::must_use(...) | test_logging.rs:181:15:181:60 | ... .as_bytes(...) | provenance | MaD:11 |
|
||||
| test_logging.rs:181:23:181:48 | ...::must_use(...) | test_logging.rs:181:15:181:49 | MacroExpr | provenance | |
|
||||
| test_logging.rs:181:23:181:48 | MacroExpr | test_logging.rs:181:23:181:48 | ...::format(...) | provenance | MaD:13 |
|
||||
| test_logging.rs:181:23:181:48 | { ... } | test_logging.rs:181:23:181:48 | ...::must_use(...) | provenance | MaD:14 |
|
||||
| test_logging.rs:181:41:181:48 | password | test_logging.rs:181:23:181:48 | MacroExpr | provenance | |
|
||||
@@ -399,6 +404,7 @@ nodes
|
||||
| test_logging.rs:167:40:167:63 | MacroExpr | semmle.label | MacroExpr |
|
||||
| test_logging.rs:167:56:167:63 | password | semmle.label | password |
|
||||
| test_logging.rs:168:27:168:32 | expect | semmle.label | expect |
|
||||
| test_logging.rs:168:34:168:66 | MacroExpr | semmle.label | MacroExpr |
|
||||
| test_logging.rs:168:34:168:66 | res | semmle.label | res |
|
||||
| test_logging.rs:168:34:168:75 | ... .as_str(...) | semmle.label | ... .as_str(...) |
|
||||
| test_logging.rs:168:42:168:65 | ...::format(...) | semmle.label | ...::format(...) |
|
||||
@@ -407,6 +413,7 @@ nodes
|
||||
| test_logging.rs:168:42:168:65 | { ... } | semmle.label | { ... } |
|
||||
| test_logging.rs:168:58:168:65 | password | semmle.label | password |
|
||||
| test_logging.rs:174:30:174:34 | write | semmle.label | write |
|
||||
| test_logging.rs:174:36:174:70 | MacroExpr | semmle.label | MacroExpr |
|
||||
| test_logging.rs:174:36:174:70 | res | semmle.label | res |
|
||||
| test_logging.rs:174:36:174:81 | ... .as_bytes(...) | semmle.label | ... .as_bytes(...) |
|
||||
| test_logging.rs:174:44:174:69 | ...::format(...) | semmle.label | ...::format(...) |
|
||||
@@ -415,6 +422,7 @@ nodes
|
||||
| test_logging.rs:174:44:174:69 | { ... } | semmle.label | { ... } |
|
||||
| test_logging.rs:174:62:174:69 | password | semmle.label | password |
|
||||
| test_logging.rs:175:30:175:38 | write_all | semmle.label | write_all |
|
||||
| test_logging.rs:175:40:175:74 | MacroExpr | semmle.label | MacroExpr |
|
||||
| test_logging.rs:175:40:175:74 | res | semmle.label | res |
|
||||
| test_logging.rs:175:40:175:85 | ... .as_bytes(...) | semmle.label | ... .as_bytes(...) |
|
||||
| test_logging.rs:175:48:175:73 | ...::format(...) | semmle.label | ...::format(...) |
|
||||
@@ -423,6 +431,7 @@ nodes
|
||||
| test_logging.rs:175:48:175:73 | { ... } | semmle.label | { ... } |
|
||||
| test_logging.rs:175:66:175:73 | password | semmle.label | password |
|
||||
| test_logging.rs:178:9:178:13 | write | semmle.label | write |
|
||||
| test_logging.rs:178:15:178:49 | MacroExpr | semmle.label | MacroExpr |
|
||||
| test_logging.rs:178:15:178:49 | res | semmle.label | res |
|
||||
| test_logging.rs:178:15:178:60 | ... .as_bytes(...) | semmle.label | ... .as_bytes(...) |
|
||||
| test_logging.rs:178:23:178:48 | ...::format(...) | semmle.label | ...::format(...) |
|
||||
@@ -431,6 +440,7 @@ nodes
|
||||
| test_logging.rs:178:23:178:48 | { ... } | semmle.label | { ... } |
|
||||
| test_logging.rs:178:41:178:48 | password | semmle.label | password |
|
||||
| test_logging.rs:181:9:181:13 | write | semmle.label | write |
|
||||
| test_logging.rs:181:15:181:49 | MacroExpr | semmle.label | MacroExpr |
|
||||
| test_logging.rs:181:15:181:49 | res | semmle.label | res |
|
||||
| test_logging.rs:181:15:181:60 | ... .as_bytes(...) | semmle.label | ... .as_bytes(...) |
|
||||
| test_logging.rs:181:23:181:48 | ...::format(...) | semmle.label | ...::format(...) |
|
||||
|
||||
@@ -1,12 +1,2 @@
|
||||
unexpectedModel
|
||||
| Unexpected summary found: repo::test;<crate::option::MyOption as crate::clone::Clone>::clone;Argument[self].Field[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated |
|
||||
| Unexpected summary found: repo::test;<crate::option::MyOption as crate::convert::From>::from;Argument[0].Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)].Reference;value;dfc-generated |
|
||||
| Unexpected summary found: repo::test;<crate::option::MyOption>::cloned;Argument[self].Field[crate::option::MyOption::MySome(0)].Reference;ReturnValue.Field[crate::option::MyOption::MySome(0)];value;dfc-generated |
|
||||
| Unexpected summary found: repo::test;<crate::option::MyOption>::get_or_insert;Argument[0];Argument[self].Field[crate::option::MyOption::MySome(0)];value;dfc-generated |
|
||||
| Unexpected summary found: repo::test;<crate::option::MyOption>::get_or_insert;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated |
|
||||
| Unexpected summary found: repo::test;<crate::option::MyOption>::get_or_insert_default;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated |
|
||||
| Unexpected summary found: repo::test;<crate::option::MyOption>::get_or_insert_with;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated |
|
||||
| Unexpected summary found: repo::test;<crate::option::MyOption>::insert;Argument[self].Field[crate::option::MyOption::MySome(0)];ReturnValue.Reference;value;dfc-generated |
|
||||
expectedModel
|
||||
| Expected summary missing: repo::test;<crate::option::MyOption>::take_if;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0].Reference;value;dfc-generated |
|
||||
| Expected summary missing: repo::test;<crate::option::MyOption>::take_if;Argument[self].Reference;ReturnValue;value;dfc-generated |
|
||||
|
||||
@@ -5,19 +5,8 @@
|
||||
|
||||
use core::ops::{Deref, DerefMut};
|
||||
use core::pin::Pin;
|
||||
use core::ptr;
|
||||
use core::{hint, mem};
|
||||
|
||||
// summary=repo::test;crate::option::replace;Argument[0].Reference;ReturnValue;value;dfc-generated
|
||||
// summary=repo::test;crate::option::replace;Argument[1];Argument[0].Reference;value;dfc-generated
|
||||
pub fn replace<T>(dest: &mut T, src: T) -> T {
|
||||
unsafe {
|
||||
let result = ptr::read(dest);
|
||||
ptr::write(dest, src);
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Eq, Debug, Hash)]
|
||||
pub enum MyOption<T> {
|
||||
MyNone,
|
||||
@@ -337,14 +326,14 @@ impl<T> MyOption<T> {
|
||||
unsafe { self.as_mut().unwrap_unchecked() }
|
||||
}
|
||||
|
||||
// summary=repo::test;<crate::option::MyOption>::take;Argument[self].Reference;ReturnValue;value;dfc-generated
|
||||
// MISSING: Uses `mem::replace`
|
||||
pub fn take(&mut self) -> MyOption<T> {
|
||||
// FIXME(const-hack) replace `mem::replace` by `mem::take` when the latter is const ready
|
||||
replace(self, MyNone)
|
||||
mem::replace(self, MyNone)
|
||||
}
|
||||
|
||||
// summary=repo::test;<crate::option::MyOption>::take_if;Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];Argument[0].Parameter[0].Reference;value;dfc-generated
|
||||
// summary=repo::test;<crate::option::MyOption>::take_if;Argument[self].Reference;ReturnValue;value;dfc-generated
|
||||
// MISSING: Uses `take` which doesn't have flow
|
||||
pub fn take_if<P>(&mut self, predicate: P) -> MyOption<T>
|
||||
where
|
||||
P: FnOnce(&mut T) -> bool,
|
||||
@@ -356,10 +345,9 @@ impl<T> MyOption<T> {
|
||||
}
|
||||
}
|
||||
|
||||
// summary=repo::test;<crate::option::MyOption>::replace;Argument[0];Argument[self].Reference.Field[crate::option::MyOption::MySome(0)];value;dfc-generated
|
||||
// summary=repo::test;<crate::option::MyOption>::replace;Argument[self].Reference;ReturnValue;value;dfc-generated
|
||||
// MISSING: Uses `mem::replace`
|
||||
pub fn replace(&mut self, value: T) -> MyOption<T> {
|
||||
replace(self, MySome(value))
|
||||
mem::replace(self, MySome(value))
|
||||
}
|
||||
|
||||
// summary=repo::test;<crate::option::MyOption>::zip;Argument[0].Field[crate::option::MyOption::MySome(0)];ReturnValue.Field[crate::option::MyOption::MySome(0)].Field[1];value;dfc-generated
|
||||
|
||||
@@ -26,11 +26,7 @@ signature module InputSig<LocationSig Location, DF::InputSig<Location> Lang> {
|
||||
|
||||
/**
|
||||
* Holds if taint flow configurations should allow implicit reads of `c` at sinks
|
||||
* and inputs to additional taint steps defined in the flow `Config`.
|
||||
*
|
||||
* Note that this (deliberately) does not include at additional taint steps defined
|
||||
* globally in `defaultAdditionalTaintStep`. These models are expected to be precise
|
||||
* and therefore to not require implicit reads.
|
||||
* and inputs to additional taint steps.
|
||||
*/
|
||||
bindingset[node]
|
||||
predicate defaultImplicitTaintRead(Lang::Node node, Lang::ContentSet c);
|
||||
|
||||
Reference in New Issue
Block a user