Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/anonymous-func' into routines, go
Browse files Browse the repository at this point in the history
routine with anonymous function test
  • Loading branch information
VincenzoArceri committed Jul 19, 2021
2 parents dfef624 + 5f22780 commit 432526b
Show file tree
Hide file tree
Showing 32 changed files with 540 additions and 104 deletions.
@@ -0,0 +1,10 @@
digraph {
"node0" [shape="rect",color="black",peripheries="2",label=<return (tuple)(1, 2)<BR/>{{<BR/>heap [[ monolith ]]<BR/>value [[ heap[w]:heap: [1, 2]<BR/>ret_value@f: _|_ ]]<BR/>}} -&gt; [ret_value@f]>];
subgraph cluster_legend {
label="Legend";
style=dotted;
node [shape=plaintext];
"legend" [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, single</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, double</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>];
}

}
@@ -0,0 +1,14 @@
digraph {
"node0" [shape="rect",color="black",label=<x, _ := [unresolved]f()<BR/>{{<BR/>heap [[ monolith ]]<BR/>value [[ x: [-Inf, +Inf] ]]<BR/>}} -&gt; [x]>];
"node1" [shape="rect",color="black",peripheries="2",label=<ret<BR/>{{<BR/>heap [[ monolith ]]<BR/>value [[ y: [-Inf, +Inf] ]]<BR/>}} -&gt; [skip]>];
"node2" [shape="rect",color="gray",label=<_, y := [unresolved]f()<BR/>{{<BR/>heap [[ monolith ]]<BR/>value [[ y: [-Inf, +Inf] ]]<BR/>}} -&gt; [y]>];
"node0" -> "node2" [color="black"];
"node2" -> "node1" [color="black"];
subgraph cluster_legend {
label="Legend";
style=dotted;
node [shape=plaintext];
"legend" [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, single</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, double</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>];
}

}
@@ -0,0 +1,14 @@
digraph {
"node0" [shape="rect",color="black",label=<x, _ = [unresolved]f()<BR/>{{<BR/>heap [[ monolith ]]<BR/>value [[ x: [-Inf, +Inf] ]]<BR/>}} -&gt; [x]>];
"node1" [shape="rect",color="gray",label=<_, y = [unresolved]f()<BR/>{{<BR/>heap [[ monolith ]]<BR/>value [[ y: [-Inf, +Inf] ]]<BR/>}} -&gt; [y]>];
"node2" [shape="rect",color="black",peripheries="2",label=<ret<BR/>{{<BR/>heap [[ monolith ]]<BR/>value [[ y: [-Inf, +Inf] ]]<BR/>}} -&gt; [skip]>];
"node0" -> "node1" [color="black"];
"node1" -> "node2" [color="black"];
subgraph cluster_legend {
label="Legend";
style=dotted;
node [shape=plaintext];
"legend" [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, single</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, double</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>];
}

}
35 changes: 35 additions & 0 deletions go-lisa/go-testcases/blankidentifier/blankidentifier.go
@@ -0,0 +1,35 @@
package main

func f() (int,int) {
return 1,2
}

//https://golang.org/doc/effective_go#blank_assign
func blankAssig(){
x, _ := f()
_, y := f()
}


//https://golang.org/doc/effective_go#maps
fun mapTest(tz string) {

var timeZone = map[string]int{
"UTC": 0*60*60,
"EST": -5*60*60,
"CST": -6*60*60,
"MST": -7*60*60,
"PST": -8*60*60,
}

_, present := timeZone[tz]

}

func main() {

blankAssig()
mapTest("PST")
}


45 changes: 45 additions & 0 deletions go-lisa/go-testcases/blankidentifier/others/others.go
@@ -0,0 +1,45 @@
//This file contains some cases not yet covered or to investigate

import (
"fmt"
"io"
)

//https://golang.org/doc/effective_go#for
func rangeTest(){

array := []int{2, 3, 4}
sum := 0
for _, value := range array {
sum += value
}
}

//https://golang.org/doc/effective_go#blank_import
import _ "net/http/pprof"

//https://golang.org/doc/effective_go#blank_unused
var _ = fmt.Printf
var _ io.Reader

//https://golang.org/doc/effective_go#constants
type ByteSize float64
const (
_ = iota // ignore first value by assigning to blank identifier
KB ByteSize = 1 << (10 * iota)
MB
GB
TB
PB
EB
ZB
YB
)

const (
C1 = iota + 1
_
C3
C4
)
fmt.Println(C1, C3, C4) // "1 3 4"
4 changes: 4 additions & 0 deletions go-lisa/go-testcases/blankidentifier/report.json
@@ -0,0 +1,4 @@
{
"warnings" : [ ],
"files" : [ "analysis___[int__,_int__]_~LiSAProgram.f().dot", "analysis___untyped_~LiSAProgram.blankAssig().dot" ]
}
1 change: 1 addition & 0 deletions go-lisa/go-testcases/cfg/routine/go-routine.go
Expand Up @@ -13,4 +13,5 @@ func say(s string) {
func main() {
go say("world")
say("hello")
go func(int i){ return i + 1}(5)
}
2 changes: 1 addition & 1 deletion go-lisa/go-testcases/cfg/routine/report.json
@@ -1,4 +1,4 @@
{
"warnings" : [ ],
"files" : [ "untyped_~LiSAProgram.main().dot", "untyped_~LiSAProgram.say(string_s).dot" ]
"files" : [ "untyped_~LiSAProgram.anonymousFunction0(i_int).dot", "untyped_~LiSAProgram.main().dot", "untyped_~LiSAProgram.say(string_s).dot" ]
}
@@ -0,0 +1,10 @@
digraph {
"node0" [shape="rect",color="black",peripheries="2",label=<return +(i, 1)>];
subgraph cluster_legend {
label="Legend";
style=dotted;
node [shape=plaintext];
"legend" [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0"><tr><td align="right">node border&nbsp;</td><td align="left"><font color="gray">gray</font>, single</td></tr><tr><td align="right">entrypoint border&nbsp;</td><td align="left"><font color="black">black</font>, single</td></tr><tr><td align="right">exitpoint border&nbsp;</td><td align="left"><font color="black">black</font>, double</td></tr><tr><td align="right">sequential edge&nbsp;</td><td align="left"><font color="black">black</font>, solid</td></tr><tr><td align="right">true edge&nbsp;</td><td align="left"><font color="blue">blue</font>, dashed</td></tr><tr><td align="right">false edge&nbsp;</td><td align="left"><font color="red">red</font>, dashed</td></tr></table>>];
}

}
10 changes: 6 additions & 4 deletions go-lisa/go-testcases/cfg/routine/untyped_~LiSAProgram.main().dot
@@ -1,9 +1,11 @@
digraph {
"node0" [shape="rect",color="black",label=<go [unresolved]say(&quot;world&quot;)>];
"node1" [shape="rect",color="black",peripheries="2",label=<ret>];
"node2" [shape="rect",color="gray",label=<[unresolved]say(&quot;hello&quot;)>];
"node0" -> "node2" [color="black"];
"node2" -> "node1" [color="black"];
"node1" [shape="rect",color="gray",label=<[unresolved]say(&quot;hello&quot;)>];
"node2" [shape="rect",color="gray",label=<go [1 targets]func(inti){returni+1}(5)>];
"node3" [shape="rect",color="black",peripheries="2",label=<ret>];
"node0" -> "node1" [color="black"];
"node1" -> "node2" [color="black"];
"node2" -> "node3" [color="black"];
subgraph cluster_legend {
label="Legend";
style=dotted;
Expand Down
@@ -1,14 +1,14 @@
digraph {
"node0" [shape="rect",color="black",label=<i := 0>];
"node1" [shape="rect",color="gray",label=<[unresolved]Println(s)>];
"node2" [shape="rect",color="gray",label=<i = +(i, 1)>];
"node3" [shape="rect",color="black",peripheries="2",label=<ret>];
"node4" [shape="rect",color="gray",label=<&lt;(i, 5)>];
"node0" -> "node4" [color="black"];
"node1" -> "node2" [color="black"];
"node2" -> "node4" [color="black"];
"node4" -> "node1" [color="blue",style="dashed"];
"node4" -> "node3" [color="red",style="dashed"];
"node1" [shape="rect",color="gray",label=<i = +(i, 1)>];
"node2" [shape="rect",color="black",peripheries="2",label=<ret>];
"node3" [shape="rect",color="gray",label=<&lt;(i, 5)>];
"node4" [shape="rect",color="gray",label=<[unresolved]Println(s)>];
"node0" -> "node3" [color="black"];
"node1" -> "node3" [color="black"];
"node3" -> "node2" [color="red",style="dashed"];
"node3" -> "node4" [color="blue",style="dashed"];
"node4" -> "node1" [color="black"];
subgraph cluster_legend {
label="Legend";
style=dotted;
Expand Down
@@ -1,11 +1,11 @@
digraph {
"node0" [shape="rect",color="black",label=<arr1 := [unresolved]build(1, 2, 3)<BR/>{{<BR/>heap [[ [heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21] ]]<BR/>value [[ heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21: [-5, 6] ]]<BR/>}} -&gt; [arr1]>];
"node1" [shape="rect",color="gray",label=<x, y = [unresolved]f()<BR/>{{<BR/>heap [[ [heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':22:11, heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21] ]]<BR/>value [[ heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':22:11: [1, 2]<BR/>heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21: [-5, 6]<BR/>x: [1, 2]<BR/>y: [1, 2] ]]<BR/>}} -&gt; [x, y]>];
"node1" [shape="rect",color="gray",label=<arr2 := [unresolved]build(-(5), 5, 6)<BR/>{{<BR/>heap [[ [heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21] ]]<BR/>value [[ heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21: [-5, 6] ]]<BR/>}} -&gt; [arr2]>];
"node2" [shape="rect",color="black",peripheries="2",label=<ret<BR/>{{<BR/>heap [[ [heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':22:11, heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21] ]]<BR/>value [[ heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':22:11: [1, 2]<BR/>heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21: [-5, 6]<BR/>x: [1, 2]<BR/>y: [1, 2] ]]<BR/>}} -&gt; [skip]>];
"node3" [shape="rect",color="gray",label=<arr2 := [unresolved]build(-(5), 5, 6)<BR/>{{<BR/>heap [[ [heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21] ]]<BR/>value [[ heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21: [-5, 6] ]]<BR/>}} -&gt; [arr2]>];
"node1" -> "node2" [color="black"];
"node0" -> "node3" [color="black"];
"node3" -> "node1" [color="black"];
"node3" [shape="rect",color="gray",label=<x, y := [unresolved]f()<BR/>{{<BR/>heap [[ [heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':22:11, heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21] ]]<BR/>value [[ heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':22:11: [1, 2]<BR/>heap[w]:pp@'go-testcases/interprocedural/interproc2/interprocedural.go':5:21: [-5, 6]<BR/>x: [1, 2]<BR/>y: [1, 2] ]]<BR/>}} -&gt; [x, y]>];
"node1" -> "node3" [color="black"];
"node0" -> "node1" [color="black"];
"node3" -> "node2" [color="black"];
subgraph cluster_legend {
label="Legend";
style=dotted;
Expand Down

0 comments on commit 432526b

Please sign in to comment.