mirror of https://github.com/crytic/slither
Merge pull request #635 from crytic/feature/parser-testing
comprehensive parser testsbugfix/variabledeclaration
commit
665d706625
@ -0,0 +1,44 @@ |
||||
--- |
||||
name: Parser tests |
||||
|
||||
defaults: |
||||
run: |
||||
# To load bashrc |
||||
shell: bash -ieo pipefail {0} |
||||
|
||||
on: |
||||
pull_request: |
||||
branches: [master, dev] |
||||
schedule: |
||||
# run CI every day even if no PRs/merges occur |
||||
- cron: '0 12 * * *' |
||||
|
||||
jobs: |
||||
build: |
||||
name: Parser tests |
||||
runs-on: ubuntu-latest |
||||
|
||||
steps: |
||||
- name: Checkout Code |
||||
uses: actions/checkout@v2 |
||||
|
||||
- name: Set up Python 3.6 |
||||
uses: actions/setup-python@v2 |
||||
with: |
||||
python-version: 3.6 |
||||
|
||||
- name: Install dependencies |
||||
run: | |
||||
python setup.py install |
||||
pip install deepdiff |
||||
pip install pytest |
||||
|
||||
git clone https://github.com/crytic/solc-select.git |
||||
./solc-select/scripts/install.sh |
||||
export PATH=/home/runner/.solc-select:$PATH |
||||
echo "export PATH=/home/runner/.solc-select:$PATH" >> ~/.bashrc |
||||
|
||||
- name: Test with pytest |
||||
run: | |
||||
pytest tests/test_ast_parsing.py |
||||
|
@ -0,0 +1,11 @@ |
||||
contract C { |
||||
function f() public { |
||||
assembly { |
||||
let x := 0 |
||||
} |
||||
|
||||
assembly "evmasm" { |
||||
let x := 0 |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,15 @@ |
||||
contract C { |
||||
function f() public { |
||||
uint assign; |
||||
assign = 10; |
||||
|
||||
assign |= 10; |
||||
assign ^= 10; |
||||
assign &= 10; |
||||
assign += 10; |
||||
assign -= 10; |
||||
assign *= 10; |
||||
assign /= 10; |
||||
assign %= 10; |
||||
} |
||||
} |
@ -0,0 +1,17 @@ |
||||
contract C { |
||||
function f() public { |
||||
uint assign; |
||||
assign = 10; |
||||
|
||||
assign |= 10; |
||||
assign ^= 10; |
||||
assign &= 10; |
||||
assign <<= 10; |
||||
assign >>= 10; |
||||
assign += 10; |
||||
assign -= 10; |
||||
assign *= 10; |
||||
assign /= 10; |
||||
assign %= 10; |
||||
} |
||||
} |
@ -0,0 +1,22 @@ |
||||
contract C { |
||||
function f() public { |
||||
1**2; |
||||
1*2; |
||||
1/2; |
||||
1&2; |
||||
1+2; |
||||
1-2; |
||||
1 & 2; |
||||
1 ^ 2; |
||||
1 | 2; |
||||
1 < 2; |
||||
1 > 2; |
||||
1 <= 2; |
||||
1 >= 2; |
||||
1 == 2; |
||||
1 != 2; |
||||
true && false; |
||||
true || false; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,24 @@ |
||||
contract C { |
||||
function f() public { |
||||
1**2; |
||||
1*2; |
||||
1/2; |
||||
1&2; |
||||
1+2; |
||||
1-2; |
||||
1 << 2; |
||||
1 >> 2; |
||||
1 & 2; |
||||
1 ^ 2; |
||||
1 | 2; |
||||
1 < 2; |
||||
1 > 2; |
||||
1 <= 2; |
||||
1 >= 2; |
||||
1 == 2; |
||||
1 != 2; |
||||
true && false; |
||||
true || false; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,21 @@ |
||||
contract C { |
||||
function f() public { |
||||
uint c; |
||||
|
||||
for (uint i = 0; i < 10; i++) { |
||||
if (i % 2 == 0) { |
||||
break; |
||||
} |
||||
c++; |
||||
} |
||||
|
||||
for (uint j = 0; j < 10; j++) { |
||||
for (uint k = 0; k < 10; k++) { |
||||
if (j % 2 == 0 && k % 3 == 0) { |
||||
break; |
||||
} |
||||
c++; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,9 @@ |
||||
contract C { |
||||
function f() public { |
||||
false ? 1 : 2; |
||||
5 == 6 ? 1 : 2; |
||||
1 + 2 == 3 ? 4 + 5 == 6 ? int8(0) : -1 : -2; |
||||
true ? "a" : "b"; |
||||
false ? (1, 2) : (3, 4); |
||||
} |
||||
} |
@ -0,0 +1,21 @@ |
||||
contract C { |
||||
function f() public { |
||||
uint c; |
||||
|
||||
for (uint i = 0; i < 10; i++) { |
||||
if (i % 2 == 0) { |
||||
continue; |
||||
} |
||||
c++; |
||||
} |
||||
|
||||
for (uint j = 0; j < 10; j++) { |
||||
for (uint k = 0; k < 10; k++) { |
||||
if (j % 2 == 0 && k % 3 == 0) { |
||||
continue; |
||||
} |
||||
c++; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,35 @@ |
||||
|
||||
// a simple contract |
||||
contract A { |
||||
|
||||
} |
||||
|
||||
// inheritance, no constructor |
||||
contract B is A { |
||||
function B(uint a) { |
||||
|
||||
} |
||||
} |
||||
|
||||
// inheritance, init in inheritance |
||||
contract C is B(4) { |
||||
|
||||
} |
||||
|
||||
// inheritance, init in constructor |
||||
contract D is B { |
||||
function D() B(2) { |
||||
|
||||
} |
||||
} |
||||
|
||||
// abstract contract |
||||
contract E is B { |
||||
} |
||||
|
||||
// diamond inheritance |
||||
contract F is A {} |
||||
contract G is A {} |
||||
contract H is F, G { |
||||
|
||||
} |
@ -0,0 +1,35 @@ |
||||
|
||||
// a simple contract |
||||
contract A { |
||||
|
||||
} |
||||
|
||||
// inheritance, no constructor |
||||
contract B is A { |
||||
constructor(uint a) public { |
||||
|
||||
} |
||||
} |
||||
|
||||
// inheritance, init in inheritance |
||||
contract C is B(4) { |
||||
|
||||
} |
||||
|
||||
// inheritance, init in constructor |
||||
contract D is B { |
||||
constructor() B(2) public { |
||||
|
||||
} |
||||
} |
||||
|
||||
// abstract contract |
||||
contract E is B { |
||||
} |
||||
|
||||
// diamond inheritance |
||||
contract F is A {} |
||||
contract G is A {} |
||||
contract H is F, G { |
||||
|
||||
} |
@ -0,0 +1,35 @@ |
||||
|
||||
// a simple contract |
||||
contract A { |
||||
|
||||
} |
||||
|
||||
// inheritance, no constructor |
||||
contract B is A { |
||||
constructor(uint a) public { |
||||
|
||||
} |
||||
} |
||||
|
||||
// inheritance, init in inheritance |
||||
contract C is B(4) { |
||||
|
||||
} |
||||
|
||||
// inheritance, init in constructor |
||||
contract D is B { |
||||
constructor() B(2) public { |
||||
|
||||
} |
||||
} |
||||
|
||||
// abstract contract |
||||
abstract contract E is B { |
||||
} |
||||
|
||||
// diamond inheritance |
||||
contract F is A {} |
||||
contract G is A {} |
||||
contract H is F, G { |
||||
|
||||
} |
@ -0,0 +1 @@ |
||||
contract C {} |
@ -0,0 +1,12 @@ |
||||
contract C { |
||||
function f() public { |
||||
bool go = true; |
||||
do { |
||||
go = false; |
||||
} while (go); |
||||
|
||||
go = true; |
||||
do go = false; |
||||
while (go); |
||||
} |
||||
} |
@ -0,0 +1,13 @@ |
||||
contract C { |
||||
event E(uint); |
||||
|
||||
function emitNoKeyword() public { |
||||
E(1); |
||||
} |
||||
|
||||
function cursed() public { |
||||
var x = E; |
||||
x(1); |
||||
x(2); |
||||
} |
||||
} |
@ -0,0 +1,22 @@ |
||||
contract C { |
||||
event E(uint); |
||||
|
||||
function emitNoKeyword() public { |
||||
E(1); |
||||
C.E(1); |
||||
} |
||||
|
||||
function emitWithKeyword() public { |
||||
emit E(1); |
||||
emit C.E(1); |
||||
} |
||||
|
||||
function cursed() public { |
||||
var x = E; |
||||
x(1); |
||||
x(2); |
||||
|
||||
emit x(1); |
||||
emit x(2); |
||||
} |
||||
} |
@ -0,0 +1,14 @@ |
||||
contract C { |
||||
event E(uint); |
||||
|
||||
function emitNoKeyword() public { |
||||
E(1); |
||||
C.E(1); |
||||
} |
||||
|
||||
function cursed() public { |
||||
var x = E; |
||||
x(1); |
||||
x(2); |
||||
} |
||||
} |
@ -0,0 +1,8 @@ |
||||
contract C { |
||||
event E(uint); |
||||
|
||||
function emitWithKeyword() public { |
||||
emit E(1); |
||||
emit C.E(1); |
||||
} |
||||
} |
@ -0,0 +1,29 @@ |
||||
contract C { |
||||
enum E1 { |
||||
A, |
||||
B, |
||||
C |
||||
} |
||||
|
||||
// this enum contains more than 256 elements |
||||
// which means it can't be stored in a uint8 |
||||
enum E2 { |
||||
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16, |
||||
A17,A18,A19,A20,A21,A22,A23,A24,A25,A26,A27,A28,A29,A30,A31,A32, |
||||
A33,A34,A35,A36,A37,A38,A39,A40,A41,A42,A43,A44,A45,A46,A47,A48, |
||||
A49,A50,A51,A52,A53,A54,A55,A56,A57,A58,A59,A60,A61,A62,A63,A64, |
||||
A65,A66,A67,A68,A69,A70,A71,A72,A73,A74,A75,A76,A77,A78,A79,A80, |
||||
A81,A82,A83,A84,A85,A86,A87,A88,A89,A90,A91,A92,A93,A94,A95,A96, |
||||
A97,A98,A99,A100,A101,A102,A103,A104,A105,A106,A107,A108,A109,A110,A111,A112, |
||||
A113,A114,A115,A116,A117,A118,A119,A120,A121,A122,A123,A124,A125,A126,A127,A128, |
||||
A129,A130,A131,A132,A133,A134,A135,A136,A137,A138,A139,A140,A141,A142,A143,A144, |
||||
A145,A146,A147,A148,A149,A150,A151,A152,A153,A154,A155,A156,A157,A158,A159,A160, |
||||
A161,A162,A163,A164,A165,A166,A167,A168,A169,A170,A171,A172,A173,A174,A175,A176, |
||||
A177,A178,A179,A180,A181,A182,A183,A184,A185,A186,A187,A188,A189,A190,A191,A192, |
||||
A193,A194,A195,A196,A197,A198,A199,A200,A201,A202,A203,A204,A205,A206,A207,A208, |
||||
A209,A210,A211,A212,A213,A214,A215,A216,A217,A218,A219,A220,A221,A222,A223,A224, |
||||
A225,A226,A227,A228,A229,A230,A231,A232,A233,A234,A235,A236,A237,A238,A239,A240, |
||||
A241,A242,A243,A244,A245,A246,A247,A248,A249,A250,A251,A252,A253,A254,A255,A256, |
||||
A257 |
||||
} |
||||
} |
@ -0,0 +1,6 @@ |
||||
contract C { |
||||
event NoParams(); |
||||
event Anonymous() anonymous; |
||||
event OneParam(address addr); |
||||
event OneParamIndexed(address indexed addr); |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
"C": { |
||||
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" |
||||
} |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue