Skip to content

Commit 32aeae8

Browse files
committed
Add result node test with SPURIOUS result
1 parent 76d6bc8 commit 32aeae8

5 files changed

Lines changed: 48 additions & 1 deletion

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
| main.go:21:9:21:10 | 23 | Result node with index 0 |
2+
| main.go:21:13:21:14 | 42 | Result node with index 1 |
3+
| resultParameters.go:5:10:5:10 | 0 | Result node with index 0 |
4+
| resultParameters.go:9:10:9:10 | 1 | Result node with index 0 |
5+
| resultParameters.go:11:10:11:10 | 2 | Result node with index 0 |
6+
| resultParameters.go:13:9:13:9 | 3 | Result node with index 0 |
7+
| resultParameters.go:16:26:16:26 | implicit read of r | Result node with index 0 |
8+
| resultParameters.go:21:38:21:38 | implicit read of r | Result node with index 0 |
9+
| resultParameters.go:24:10:24:10 | 1 | Result node with index 0 |
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* @kind problem
3+
* @id result-node
4+
*/
5+
6+
import go
7+
8+
from DataFlow::ResultNode r
9+
select r, "Result node with index " + r.getIndex()
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
query: ResultNode.ql
2+
postprocess: utils/test/InlineExpectationsTestQuery.ql

go/ql/test/library-tests/semmle/go/dataflow/Nodes/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ func f() {
1818
}
1919

2020
func test() (int, int) {
21-
return 23, 42
21+
return 23, 42 // $ Alert[result-node]
2222
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package main
2+
3+
func multipleReturns(selector int) int {
4+
if selector == 0 {
5+
return 0 // $ Alert[result-node]
6+
}
7+
switch selector {
8+
case 1:
9+
return 1 // $ Alert[result-node]
10+
case 2:
11+
return 2 // $ Alert[result-node]
12+
}
13+
return 3 // $ Alert[result-node]
14+
}
15+
16+
func resultParameter1() (r int) { // $ Alert[result-node] // implicit reads of result parameters are located at the result parameter declaration
17+
r = 0
18+
return
19+
}
20+
21+
func resultParameter2(selector int) (r int) { // $ Alert[result-node] // implicit reads of result parameters are located at the result parameter declaration
22+
r = 0
23+
if selector == 1 {
24+
return 1 // $ SPURIOUS: Alert[result-node]
25+
}
26+
return
27+
}

0 commit comments

Comments
 (0)