Copy disabled (too large)
Download .txt
Showing preview only (19,529K chars total). Download the full file to get everything.
Repository: traefik/yaegi
Branch: master
Commit: fcb76d1ece0c
Files: 1654
Total size: 18.4 MB
Directory structure:
gitextract_wer3ebvq/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ └── feature_request.yml
│ └── workflows/
│ ├── go-cross.yml
│ ├── main.yml
│ └── release.yml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yml
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── README.md
├── _test/
│ ├── a1.go
│ ├── a10.go
│ ├── a11.go
│ ├── a12.go
│ ├── a13.go
│ ├── a14.go
│ ├── a15.go
│ ├── a16.go
│ ├── a17.go
│ ├── a18.go
│ ├── a19.go
│ ├── a2.go
│ ├── a20.go
│ ├── a21.go
│ ├── a22.go
│ ├── a23.go
│ ├── a24.go
│ ├── a25.go
│ ├── a26.go
│ ├── a27.go
│ ├── a28.go
│ ├── a29.go
│ ├── a3.go
│ ├── a30.go
│ ├── a31.go
│ ├── a32.go
│ ├── a33.go
│ ├── a34.go
│ ├── a35.go
│ ├── a36.go
│ ├── a37.go
│ ├── a38.go
│ ├── a39.go
│ ├── a4.go
│ ├── a40.go
│ ├── a41.go
│ ├── a42.go
│ ├── a43.go
│ ├── a44.go
│ ├── a5.go
│ ├── a6.go
│ ├── a7.go
│ ├── a8.go
│ ├── a9.go
│ ├── add0.go
│ ├── add1.go
│ ├── add2.go
│ ├── addr0.go
│ ├── addr1.go
│ ├── addr2.go
│ ├── addr3.go
│ ├── addr4.go
│ ├── addr5.go
│ ├── and.go
│ ├── and0.go
│ ├── and1.go
│ ├── and2.go
│ ├── and3.go
│ ├── append0.go
│ ├── append1.go
│ ├── append2.go
│ ├── append3.go
│ ├── append4.go
│ ├── assert0.go
│ ├── assert1.go
│ ├── assert2.go
│ ├── assert3.go
│ ├── assert4.go
│ ├── assign.go
│ ├── assign0.go
│ ├── assign1.go
│ ├── assign10.go
│ ├── assign11.go
│ ├── assign12.go
│ ├── assign13.go
│ ├── assign14.go
│ ├── assign15.go
│ ├── assign16.go
│ ├── assign17.go
│ ├── assign18.go
│ ├── assign19.go
│ ├── assign2.go
│ ├── assign3.go
│ ├── assign4.go
│ ├── assign5.go
│ ├── assign6.go
│ ├── assign7.go
│ ├── assign8.go
│ ├── assign9.go
│ ├── b1/
│ │ └── foo/
│ │ └── foo.go
│ ├── b2/
│ │ └── foo/
│ │ └── foo.go
│ ├── bad0.go
│ ├── baz-bat/
│ │ └── baz-bat.go
│ ├── bin.go
│ ├── bin0.go
│ ├── bin1.go
│ ├── bin2.go
│ ├── bin3.go
│ ├── bin4.go
│ ├── bin5.go
│ ├── binstruct_ptr_map0.go
│ ├── binstruct_ptr_slice0.go
│ ├── binstruct_slice0.go
│ ├── bltn.go
│ ├── bltn0.go
│ ├── bool.go
│ ├── bool0.go
│ ├── bool1.go
│ ├── bool2.go
│ ├── bool3.go
│ ├── bool4.go
│ ├── bool5.go
│ ├── break0.go
│ ├── break1.go
│ ├── break2.go
│ ├── break3.go
│ ├── c1/
│ │ └── c1.go
│ ├── c2/
│ │ └── c2.go
│ ├── cap0.go
│ ├── chan0.go
│ ├── chan1.go
│ ├── chan10.go
│ ├── chan2.go
│ ├── chan3.go
│ ├── chan4.go
│ ├── chan5.go
│ ├── chan6.go
│ ├── chan7.go
│ ├── chan8.go
│ ├── chan9.go
│ ├── cli1.go
│ ├── cli2.go
│ ├── cli3.go
│ ├── cli4.go
│ ├── cli5.go
│ ├── cli6.go
│ ├── cli7.go
│ ├── cli8.go
│ ├── closure0.go
│ ├── closure1.go
│ ├── closure10.go
│ ├── closure11.go
│ ├── closure12.go
│ ├── closure13.go
│ ├── closure14.go
│ ├── closure15.go
│ ├── closure16.go
│ ├── closure17.go
│ ├── closure18.go
│ ├── closure19.go
│ ├── closure2.go
│ ├── closure20.go
│ ├── closure3.go
│ ├── closure4.go
│ ├── closure5.go
│ ├── closure6.go
│ ├── closure7.go
│ ├── closure8.go
│ ├── closure9.go
│ ├── comp0.go
│ ├── comp1.go
│ ├── comp2.go
│ ├── complex0.go
│ ├── complex1.go
│ ├── complex2.go
│ ├── complex3.go
│ ├── complex4.go
│ ├── composite0.go
│ ├── composite1.go
│ ├── composite10.go
│ ├── composite11.go
│ ├── composite12.go
│ ├── composite13.go
│ ├── composite14.go
│ ├── composite15.go
│ ├── composite16.go
│ ├── composite17.go
│ ├── composite18.go
│ ├── composite19.go
│ ├── composite2.go
│ ├── composite3.go
│ ├── composite4.go
│ ├── composite5.go
│ ├── composite6.go
│ ├── composite7.go
│ ├── composite8.go
│ ├── composite8bis.go
│ ├── composite9.go
│ ├── const0.go
│ ├── const1.go
│ ├── const10.go
│ ├── const11.go
│ ├── const12.go
│ ├── const13.go
│ ├── const14.go
│ ├── const15.go
│ ├── const16.go
│ ├── const17.go
│ ├── const18.go
│ ├── const19.go
│ ├── const2.go
│ ├── const20.go
│ ├── const21.go
│ ├── const22.go
│ ├── const23.go
│ ├── const24.go
│ ├── const25.go
│ ├── const26.go
│ ├── const3.go
│ ├── const4.go
│ ├── const5.go
│ ├── const6.go
│ ├── const7.go
│ ├── const8.go
│ ├── const9.go
│ ├── cont.go
│ ├── cont0.go
│ ├── cont1.go
│ ├── cont2.go
│ ├── cont3.go
│ ├── context.go
│ ├── context2.go
│ ├── convert0.go
│ ├── convert1.go
│ ├── convert2.go
│ ├── convert3.go
│ ├── copy0.go
│ ├── copy1.go
│ ├── copy2.go
│ ├── ct/
│ │ ├── ct1.go
│ │ ├── ct2.go
│ │ └── ct3.go
│ ├── ct1/
│ │ └── ct1.go
│ ├── d1/
│ │ └── d1.go
│ ├── d2/
│ │ └── d2.go
│ ├── d3.go
│ ├── defer0.go
│ ├── defer1.go
│ ├── defer2.go
│ ├── defer3.go
│ ├── defer4.go
│ ├── defer5.go
│ ├── defer6.go
│ ├── defer7.go
│ ├── defer8.go
│ ├── defer9.go
│ ├── delete0.go
│ ├── eval0.go
│ ├── export0.go
│ ├── export1.go
│ ├── factor.go
│ ├── fib.go
│ ├── fib0.go
│ ├── file_access.go
│ ├── flag0.go
│ ├── foo/
│ │ ├── bar.go
│ │ ├── bir.go
│ │ └── boo/
│ │ └── boo.go
│ ├── foo-bar/
│ │ └── foo-bar.go
│ ├── for0.go
│ ├── for1.go
│ ├── for10.go
│ ├── for11.go
│ ├── for12.go
│ ├── for13.go
│ ├── for14.go
│ ├── for15.go
│ ├── for16.go
│ ├── for17.go
│ ├── for18.go
│ ├── for19.go
│ ├── for2.go
│ ├── for3.go
│ ├── for4.go
│ ├── for5.go
│ ├── for6.go
│ ├── for7.go
│ ├── for8.go
│ ├── for9.go
│ ├── fun.go
│ ├── fun10.go
│ ├── fun11.go
│ ├── fun12.go
│ ├── fun13.go
│ ├── fun14.go
│ ├── fun15.go
│ ├── fun16.go
│ ├── fun17.go
│ ├── fun18.go
│ ├── fun19.go
│ ├── fun2.go
│ ├── fun20.go
│ ├── fun21.go
│ ├── fun22.go
│ ├── fun23.go
│ ├── fun24.go
│ ├── fun25.go
│ ├── fun26.go
│ ├── fun27.go
│ ├── fun28.go
│ ├── fun3.go
│ ├── fun4.go
│ ├── fun5.go
│ ├── fun6.go
│ ├── fun7.go
│ ├── fun8.go
│ ├── fun9.go
│ ├── gen1.go
│ ├── gen10.go
│ ├── gen11.go
│ ├── gen12.go
│ ├── gen13.go
│ ├── gen2.go
│ ├── gen3.go
│ ├── gen4.go
│ ├── gen5.go
│ ├── gen6.go
│ ├── gen7.go
│ ├── gen8.go
│ ├── gen9.go
│ ├── goto0.go
│ ├── goto1.go
│ ├── heap.go
│ ├── if.go
│ ├── if0.go
│ ├── if1.go
│ ├── if2.go
│ ├── if3.go
│ ├── if4.go
│ ├── if5.go
│ ├── if6.go
│ ├── if7.go
│ ├── imag0.go
│ ├── import0.go
│ ├── import1.go
│ ├── import2.go
│ ├── import3.go
│ ├── import4.go
│ ├── import5.go
│ ├── import6.go
│ ├── import7.go
│ ├── import8.go
│ ├── import9.go
│ ├── inc.go
│ ├── inception.go
│ ├── init0.go
│ ├── init1.go
│ ├── interface0.go
│ ├── interface1.go
│ ├── interface10.go
│ ├── interface11.go
│ ├── interface12.go
│ ├── interface13.go
│ ├── interface14.go
│ ├── interface15.go
│ ├── interface16.go
│ ├── interface17.go
│ ├── interface18.go
│ ├── interface19.go
│ ├── interface2.go
│ ├── interface20.go
│ ├── interface21.go
│ ├── interface22.go
│ ├── interface23.go
│ ├── interface24.go
│ ├── interface25.go
│ ├── interface26.go
│ ├── interface27.go
│ ├── interface28.go
│ ├── interface29.go
│ ├── interface3.go
│ ├── interface30.go
│ ├── interface31.go
│ ├── interface32.go
│ ├── interface33.go
│ ├── interface34.go
│ ├── interface35.go
│ ├── interface36.go
│ ├── interface37.go
│ ├── interface38.go
│ ├── interface39.go
│ ├── interface4.go
│ ├── interface40.go
│ ├── interface41.go
│ ├── interface42.go
│ ├── interface43.go
│ ├── interface44.go
│ ├── interface45.go
│ ├── interface46.go
│ ├── interface47.go
│ ├── interface48.go
│ ├── interface49.go
│ ├── interface5.go
│ ├── interface50.go
│ ├── interface51.go
│ ├── interface52.go
│ ├── interface6.go
│ ├── interface7.go
│ ├── interface8.go
│ ├── interface9.go
│ ├── interp.gi
│ ├── interp2.gi
│ ├── io0.go
│ ├── io1.go
│ ├── io2.go
│ ├── iota.go
│ ├── iota0.go
│ ├── ipp_as_key.go
│ ├── issue-1007.go
│ ├── issue-1010.go
│ ├── issue-1022.go
│ ├── issue-1052.go
│ ├── issue-1065.go
│ ├── issue-1068.go
│ ├── issue-1088.go
│ ├── issue-1089.go
│ ├── issue-1093.go
│ ├── issue-1094.go
│ ├── issue-1101.go
│ ├── issue-1115.go
│ ├── issue-1126.go
│ ├── issue-1128.go
│ ├── issue-1134.go
│ ├── issue-1136.go
│ ├── issue-1145.go
│ ├── issue-1156.go
│ ├── issue-1163.go
│ ├── issue-1166.go
│ ├── issue-1167.go
│ ├── issue-1173.go
│ ├── issue-1175.go
│ ├── issue-1177.go
│ ├── issue-1179.go
│ ├── issue-1181.go
│ ├── issue-1185.go
│ ├── issue-1187.go
│ ├── issue-1189.go
│ ├── issue-1202.go
│ ├── issue-1205.go
│ ├── issue-1208.go
│ ├── issue-1260.go
│ ├── issue-1276.go
│ ├── issue-1280.go
│ ├── issue-1285.go
│ ├── issue-1288.go
│ ├── issue-1300.go
│ ├── issue-1304.go
│ ├── issue-1306.go
│ ├── issue-1308.go
│ ├── issue-1311.go
│ ├── issue-1315.go
│ ├── issue-1320.go
│ ├── issue-1326.go
│ ├── issue-1328.go
│ ├── issue-1330.go
│ ├── issue-1332.go
│ ├── issue-1333.go
│ ├── issue-1337.go
│ ├── issue-1342.go
│ ├── issue-1344.go
│ ├── issue-1354.go
│ ├── issue-1355.go
│ ├── issue-1360.go
│ ├── issue-1361.go
│ ├── issue-1364.go
│ ├── issue-1365.go
│ ├── issue-1368.go
│ ├── issue-1371.go
│ ├── issue-1373.go
│ ├── issue-1375.go
│ ├── issue-1378.go
│ ├── issue-1381.go
│ ├── issue-1404.go
│ ├── issue-1408.go
│ ├── issue-1411.go
│ ├── issue-1416.go
│ ├── issue-1421.go
│ ├── issue-1425.go
│ ├── issue-1439.go
│ ├── issue-1442.go
│ ├── issue-1447.go
│ ├── issue-1451.go
│ ├── issue-1454.go
│ ├── issue-1459.go
│ ├── issue-1460.go
│ ├── issue-1465.go
│ ├── issue-1466.go
│ ├── issue-1470.go
│ ├── issue-1475.go
│ ├── issue-1488.go
│ ├── issue-1496.go
│ ├── issue-1515.go
│ ├── issue-1536.go
│ ├── issue-1571.go
│ ├── issue-1594.go
│ ├── issue-1618.go
│ ├── issue-1640.go
│ ├── issue-1653.go
│ ├── issue-435.go
│ ├── issue-558.go
│ ├── issue-735.go
│ ├── issue-770.go
│ ├── issue-772.go
│ ├── issue-775.go
│ ├── issue-776.go
│ ├── issue-782.go
│ ├── issue-784.go
│ ├── issue-880.go
│ ├── issue-981.go
│ ├── issue-993.go
│ ├── l2.go
│ ├── l3.go
│ ├── l4.go
│ ├── l5.go
│ ├── len0.go
│ ├── m1/
│ │ ├── main.go
│ │ └── main_test.go
│ ├── m2/
│ │ └── m2_test.go
│ ├── make.go
│ ├── make0.go
│ ├── make1.go
│ ├── make2.go
│ ├── map.go
│ ├── map10.go
│ ├── map11.go
│ ├── map12.go
│ ├── map13.go
│ ├── map14.go
│ ├── map15.go
│ ├── map16.go
│ ├── map17.go
│ ├── map18.go
│ ├── map19.go
│ ├── map2.go
│ ├── map20.go
│ ├── map21.go
│ ├── map22.go
│ ├── map23.go
│ ├── map24.go
│ ├── map25.go
│ ├── map26.go
│ ├── map27.go
│ ├── map28.go
│ ├── map29.go
│ ├── map3.go
│ ├── map30.go
│ ├── map31.go
│ ├── map4.go
│ ├── map5.go
│ ├── map6.go
│ ├── map7.go
│ ├── map8.go
│ ├── map9.go
│ ├── math0.go
│ ├── math1.go
│ ├── math2.go
│ ├── math3.go
│ ├── method.go
│ ├── method0.go
│ ├── method1.go
│ ├── method10.go
│ ├── method11.go
│ ├── method12.go
│ ├── method13.go
│ ├── method14.go
│ ├── method15.go
│ ├── method16.go
│ ├── method17.go
│ ├── method18.go
│ ├── method19.go
│ ├── method2.go
│ ├── method20.go
│ ├── method21.go
│ ├── method22.go
│ ├── method23.go
│ ├── method24.go
│ ├── method25.go
│ ├── method26.go
│ ├── method27.go
│ ├── method28.go
│ ├── method29.go
│ ├── method3.go
│ ├── method30.go
│ ├── method31.go
│ ├── method32.go
│ ├── method33.go
│ ├── method34.go
│ ├── method35.go
│ ├── method36.go
│ ├── method37.go
│ ├── method38/
│ │ ├── a.go
│ │ └── b.go
│ ├── method38.go
│ ├── method39.go
│ ├── method4.go
│ ├── method40.go
│ ├── method5.go
│ ├── method6.go
│ ├── method7.go
│ ├── method8.go
│ ├── method9.go
│ ├── named0.go
│ ├── named1.go
│ ├── named2.go
│ ├── named3/
│ │ └── named3.go
│ ├── named3.go
│ ├── named4.go
│ ├── neg0.go
│ ├── new0.go
│ ├── new1.go
│ ├── new2.go
│ ├── nil0.go
│ ├── nil1.go
│ ├── nil2.go
│ ├── nil3.go
│ ├── not0.go
│ ├── not1.go
│ ├── not2.go
│ ├── num0.go
│ ├── op0.go
│ ├── op1.go
│ ├── op10.go
│ ├── op11.go
│ ├── op2.go
│ ├── op3.go
│ ├── op4.go
│ ├── op5.go
│ ├── op6.go
│ ├── op7.go
│ ├── op8.go
│ ├── op9.go
│ ├── opfloat32.go
│ ├── opfloat64.go
│ ├── opint16.go
│ ├── opint32.go
│ ├── opint64.go
│ ├── opint8.go
│ ├── opstring.go
│ ├── opuint16.go
│ ├── opuint32.go
│ ├── opuint64.go
│ ├── opuint8.go
│ ├── or0.go
│ ├── or1.go
│ ├── or2.go
│ ├── os0.go
│ ├── p1/
│ │ ├── s1.go
│ │ └── s2.go
│ ├── p2/
│ │ └── p2.go
│ ├── p3/
│ │ └── empty
│ ├── p4/
│ │ └── p4.go
│ ├── p5/
│ │ └── p5.go
│ ├── p5.go
│ ├── p6/
│ │ └── p6.go
│ ├── p6.go
│ ├── panic0.go
│ ├── pkgname0.go
│ ├── pkgname1.go
│ ├── pkgname2.go
│ ├── primes.go
│ ├── print0.go
│ ├── ptr0.go
│ ├── ptr1.go
│ ├── ptr2.go
│ ├── ptr3.go
│ ├── ptr4.go
│ ├── ptr5.go
│ ├── ptr5a.go
│ ├── ptr6.go
│ ├── ptr7.go
│ ├── ptr8.go
│ ├── ptr_array0.go
│ ├── ptr_array1.go
│ ├── ptr_array2.go
│ ├── ptr_array3.go
│ ├── range0.go
│ ├── range1.go
│ ├── range2.go
│ ├── range3.go
│ ├── range4.go
│ ├── range5.go
│ ├── range6.go
│ ├── range7.go
│ ├── range8.go
│ ├── range9.go
│ ├── real0.go
│ ├── recover0.go
│ ├── recover1.go
│ ├── recover2.go
│ ├── recover3.go
│ ├── recover4.go
│ ├── recurse0.go
│ ├── recurse1.go
│ ├── recurse2.go
│ ├── recurse3.go
│ ├── redeclaration-global0.go
│ ├── redeclaration-global1.go
│ ├── redeclaration-global2.go
│ ├── redeclaration-global3.go
│ ├── redeclaration-global4.go
│ ├── redeclaration-global5.go
│ ├── redeclaration-global6.go
│ ├── redeclaration-global7.go
│ ├── redeclaration0.go
│ ├── redeclaration1.go
│ ├── redeclaration2.go
│ ├── redeclaration3.go
│ ├── redeclaration4.go
│ ├── redeclaration5.go
│ ├── restricted0.go
│ ├── restricted1.go
│ ├── restricted2.go
│ ├── restricted3.go
│ ├── ret1.go
│ ├── ret2.go
│ ├── ret3.go
│ ├── ret4.go
│ ├── ret5.go
│ ├── ret6.go
│ ├── ret7.go
│ ├── ret8.go
│ ├── run0.go
│ ├── run1.go
│ ├── run10.go
│ ├── run11.go
│ ├── run12.go
│ ├── run13.go
│ ├── run4.go
│ ├── run5.go
│ ├── run6.go
│ ├── run7.go
│ ├── run8.go
│ ├── run9.go
│ ├── rune0.go
│ ├── rune1.go
│ ├── rune2.go
│ ├── sample.plugin
│ ├── scope0.go
│ ├── scope1.go
│ ├── scope2.go
│ ├── scope3.go
│ ├── scope4.go
│ ├── scope5.go
│ ├── scope6.go
│ ├── scope7.go
│ ├── secure.gi
│ ├── select.go
│ ├── select0.go
│ ├── select1.go
│ ├── select10.go
│ ├── select11.go
│ ├── select12.go
│ ├── select13.go
│ ├── select14.go
│ ├── select15.go
│ ├── select2.go
│ ├── select3.go
│ ├── select4.go
│ ├── select5.go
│ ├── select6.go
│ ├── select7.go
│ ├── select8.go
│ ├── select9.go
│ ├── selector-scope0.go
│ ├── server.go
│ ├── server0.go
│ ├── server1.go
│ ├── server1a.go
│ ├── server2.go
│ ├── server3.go
│ ├── server4.go
│ ├── server5.go
│ ├── server6.go
│ ├── server7.go
│ ├── shift0.go
│ ├── shift1.go
│ ├── shift2.go
│ ├── shift3.go
│ ├── sieve.go
│ ├── slice.go
│ ├── str.go
│ ├── str0.go
│ ├── str1.go
│ ├── str2.go
│ ├── str3.go
│ ├── str4.go
│ ├── struct.go
│ ├── struct0.go
│ ├── struct0a.go
│ ├── struct1.go
│ ├── struct10.go
│ ├── struct11.go
│ ├── struct12.go
│ ├── struct13.go
│ ├── struct14.go
│ ├── struct15.go
│ ├── struct16.go
│ ├── struct17.go
│ ├── struct18.go
│ ├── struct19.go
│ ├── struct2.go
│ ├── struct20.go
│ ├── struct21.go
│ ├── struct22.go
│ ├── struct23.go
│ ├── struct24.go
│ ├── struct25.go
│ ├── struct26.go
│ ├── struct27.go
│ ├── struct28.go
│ ├── struct29.go
│ ├── struct3.go
│ ├── struct30.go
│ ├── struct31.go
│ ├── struct32.go
│ ├── struct33.go
│ ├── struct34.go
│ ├── struct35.go
│ ├── struct36.go
│ ├── struct37.go
│ ├── struct38.go
│ ├── struct39.go
│ ├── struct4.go
│ ├── struct40.go
│ ├── struct41.go
│ ├── struct42.go
│ ├── struct43.go
│ ├── struct44.go
│ ├── struct45.go
│ ├── struct46.go
│ ├── struct47.go
│ ├── struct48.go
│ ├── struct49.go
│ ├── struct5.go
│ ├── struct50.go
│ ├── struct51.go
│ ├── struct52.go
│ ├── struct53.go
│ ├── struct54.go
│ ├── struct55.go
│ ├── struct56.go
│ ├── struct57.go
│ ├── struct58.go
│ ├── struct59.go
│ ├── struct6.go
│ ├── struct60.go
│ ├── struct61.go
│ ├── struct62.go
│ ├── struct7.go
│ ├── struct8.go
│ ├── struct9.go
│ ├── switch.go
│ ├── switch0.go
│ ├── switch1.go
│ ├── switch10.go
│ ├── switch11.go
│ ├── switch12.go
│ ├── switch13.go
│ ├── switch14.go
│ ├── switch15.go
│ ├── switch16.go
│ ├── switch17.go
│ ├── switch18.go
│ ├── switch19.go
│ ├── switch2.go
│ ├── switch20.go
│ ├── switch21.go
│ ├── switch22.go
│ ├── switch23.go
│ ├── switch24.go
│ ├── switch25.go
│ ├── switch26.go
│ ├── switch27.go
│ ├── switch28.go
│ ├── switch29.go
│ ├── switch3.go
│ ├── switch30.go
│ ├── switch31.go
│ ├── switch32.go
│ ├── switch33.go
│ ├── switch34.go
│ ├── switch35.go
│ ├── switch36.go
│ ├── switch37.go
│ ├── switch38.go
│ ├── switch39.go
│ ├── switch4.go
│ ├── switch40.go
│ ├── switch5.go
│ ├── switch6.go
│ ├── switch7.go
│ ├── switch8.go
│ ├── switch9.go
│ ├── tag0.go
│ ├── testdata/
│ │ └── redeclaration-global7/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── quux.go
│ │ ├── baz/
│ │ │ └── quux.go
│ │ ├── tata/
│ │ │ └── tutu.go
│ │ └── toto/
│ │ └── titi.go
│ ├── time0.go
│ ├── time1.go
│ ├── time10.go
│ ├── time11.go
│ ├── time12.go
│ ├── time13.go
│ ├── time14.go
│ ├── time15.go
│ ├── time16.go
│ ├── time2.go
│ ├── time3.go
│ ├── time4.go
│ ├── time5.go
│ ├── time6.go
│ ├── time7.go
│ ├── time8.go
│ ├── time9.go
│ ├── type0.go
│ ├── type1.go
│ ├── type10.go
│ ├── type11.go
│ ├── type12.go
│ ├── type13.go
│ ├── type14.go
│ ├── type15.go
│ ├── type16.go
│ ├── type17.go
│ ├── type18.go
│ ├── type19.go
│ ├── type2.go
│ ├── type20.go
│ ├── type21.go
│ ├── type22.go
│ ├── type23.go
│ ├── type24.go
│ ├── type25.go
│ ├── type26.go
│ ├── type27.go
│ ├── type28.go
│ ├── type29.go
│ ├── type3.go
│ ├── type30.go
│ ├── type31.go
│ ├── type32.go
│ ├── type33.go
│ ├── type34.go
│ ├── type4.go
│ ├── type5.go
│ ├── type6.go
│ ├── type7.go
│ ├── type8.go
│ ├── type9.go
│ ├── unsafe0.go
│ ├── unsafe1.go
│ ├── unsafe10.go
│ ├── unsafe2.go
│ ├── unsafe3.go
│ ├── unsafe4.go
│ ├── unsafe5.go
│ ├── unsafe6.go
│ ├── unsafe7.go
│ ├── unsafe8.go
│ ├── var.go
│ ├── var10.go
│ ├── var11.go
│ ├── var12.go
│ ├── var13.go
│ ├── var14.go
│ ├── var15.go
│ ├── var16.go
│ ├── var2.go
│ ├── var3.go
│ ├── var4.go
│ ├── var5.go
│ ├── var6.go
│ ├── var7.go
│ ├── var8.go
│ ├── var9.go
│ ├── variadic.go
│ ├── variadic0.go
│ ├── variadic1.go
│ ├── variadic10.go
│ ├── variadic2.go
│ ├── variadic3.go
│ ├── variadic4.go
│ ├── variadic5.go
│ ├── variadic6.go
│ ├── variadic7.go
│ ├── variadic8.go
│ ├── variadic9.go
│ └── vars/
│ ├── first.go
│ └── second.go
├── cmd/
│ └── yaegi/
│ ├── extract.go
│ ├── help.go
│ ├── run.go
│ ├── test.go
│ ├── yaegi.go
│ └── yaegi_test.go
├── example/
│ ├── closure/
│ │ ├── _pkg/
│ │ │ └── src/
│ │ │ └── foo/
│ │ │ └── bar/
│ │ │ └── bar.go
│ │ └── closure_test.go
│ ├── fs/
│ │ └── fs_test.go
│ ├── getfunc/
│ │ ├── _gopath/
│ │ │ └── src/
│ │ │ └── github.com/
│ │ │ └── foo/
│ │ │ └── bar/
│ │ │ └── foobar.go
│ │ └── getfunc_test.go
│ └── pkg/
│ ├── _pkg/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ └── fromage.go
│ ├── _pkg0/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── fromage/
│ │ │ ├── cheese/
│ │ │ │ └── cheese.go
│ │ │ └── fromage.go
│ │ └── pkg.go
│ ├── _pkg1/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── fromage/
│ │ │ └── fromage.go
│ │ └── pkg.go
│ ├── _pkg10/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ └── fromage.go
│ ├── _pkg11/
│ │ └── src/
│ │ └── foo/
│ │ ├── foo.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ └── fromage.go
│ ├── _pkg12/
│ │ └── src/
│ │ └── guthib.com/
│ │ └── foo/
│ │ ├── main.go
│ │ ├── pkg/
│ │ │ └── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── bar/
│ │ └── bar.go
│ ├── _pkg13/
│ │ └── src/
│ │ └── guthib.com/
│ │ └── foo/
│ │ └── bar/
│ │ ├── main.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── bat/
│ │ └── baz/
│ │ └── baz.go
│ ├── _pkg2/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ ├── fromage.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── cheese/
│ │ └── fromage.go
│ ├── _pkg3/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ ├── couteau/
│ │ │ └── couteau.go
│ │ ├── fromage.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── cheese/
│ │ └── fromage.go
│ ├── _pkg4/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ ├── couteau/
│ │ │ └── couteau.go
│ │ ├── fromage.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── cheese/
│ │ ├── cheese.go
│ │ └── vin/
│ │ └── vin.go
│ ├── _pkg5/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ ├── cheese/
│ │ │ ├── cheese.go
│ │ │ └── vin/
│ │ │ └── vin.go
│ │ └── fromage/
│ │ ├── couteau/
│ │ │ └── couteau.go
│ │ └── fromage.go
│ ├── _pkg6/
│ │ └── src/
│ │ ├── github.com/
│ │ │ └── foo/
│ │ │ └── pkg/
│ │ │ ├── pkg.go
│ │ │ └── vendor/
│ │ │ └── guthib.com/
│ │ │ └── traefik/
│ │ │ └── fromage/
│ │ │ ├── couteau/
│ │ │ │ └── couteau.go
│ │ │ └── fromage.go
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── cheese/
│ │ ├── cheese.go
│ │ └── vin/
│ │ └── vin.go
│ ├── _pkg7/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ ├── fromage/
│ │ │ └── fromage.go
│ │ └── vin/
│ │ ├── vendor/
│ │ │ └── guthib.com/
│ │ │ └── traefik/
│ │ │ └── cheese/
│ │ │ └── cheese.go
│ │ └── vin.go
│ ├── _pkg8/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── fromage/
│ │ │ └── fromage.go
│ │ └── pkg.go
│ ├── _pkg9/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── fromage/
│ │ │ └── fromage.go
│ │ ├── pkg.go
│ │ └── pkgfalse.go
│ └── pkg_test.go
├── extract/
│ ├── extract.go
│ ├── extract_test.go
│ └── testdata/
│ ├── 1/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── main.go
│ │ └── baz/
│ │ ├── baz.go
│ │ └── go.mod
│ ├── 2/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── main.go
│ │ └── baz/
│ │ └── baz.go
│ ├── 3/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── main.go
│ │ └── baz/
│ │ ├── baz.go
│ │ └── go.mod
│ ├── 4/
│ │ └── src/
│ │ └── guthib.com/
│ │ └── bar/
│ │ ├── main.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── baz/
│ │ ├── baz.go
│ │ └── go.mod
│ ├── 5/
│ │ └── src/
│ │ └── guthib.com/
│ │ └── bar/
│ │ ├── main.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── baz/
│ │ └── baz.go
│ ├── 6/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── main.go
│ │ └── baz-baz/
│ │ ├── baz.go
│ │ └── go.mod
│ └── 7/
│ └── src/
│ └── guthib.com/
│ └── variadic/
│ ├── go.mod
│ └── variadic.go
├── generate.go
├── go.mod
├── install.sh
├── internal/
│ ├── cmd/
│ │ ├── extract/
│ │ │ └── extract.go
│ │ └── genop/
│ │ └── genop.go
│ └── unsafe2/
│ ├── go1_20_unsafe.go
│ ├── go1_21_unsafe.go
│ └── unsafe_test.go
├── interp/
│ ├── ast.go
│ ├── build.go
│ ├── build_test.go
│ ├── cfg.go
│ ├── compile_test.go
│ ├── debugger.go
│ ├── doc.go
│ ├── dot.go
│ ├── example_eval_test.go
│ ├── export_test.go
│ ├── generic.go
│ ├── gta.go
│ ├── hooks.go
│ ├── interp.go
│ ├── interp_chan_test.go
│ ├── interp_consistent_test.go
│ ├── interp_eval_test.go
│ ├── interp_export_test.go
│ ├── interp_file_test.go
│ ├── interp_issue_1634_test.go
│ ├── interp_test.go
│ ├── op.go
│ ├── program.go
│ ├── realfs.go
│ ├── run.go
│ ├── scope.go
│ ├── self_example_test.go
│ ├── src.go
│ ├── src_test.go
│ ├── testdata/
│ │ ├── concurrent/
│ │ │ ├── composite/
│ │ │ │ ├── composite_lit.go
│ │ │ │ └── composite_sparse.go
│ │ │ ├── hello1.go
│ │ │ └── hello2.go
│ │ ├── multi/
│ │ │ └── 731/
│ │ │ ├── sample1.go
│ │ │ ├── sample2.go
│ │ │ └── sample3.go
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ ├── bar/
│ │ │ └── baz/
│ │ │ └── baz.go
│ │ └── vendor/
│ │ └── whatever/
│ │ └── whatever.go
│ ├── trace.go
│ ├── type.go
│ ├── typecheck.go
│ ├── typestring.go
│ ├── use.go
│ └── value.go
└── stdlib/
├── generic/
│ ├── go1_21_cmp.go.txt
│ ├── go1_21_generic.go
│ ├── go1_21_maps.go.txt
│ ├── go1_21_slices.go.txt
│ ├── go1_21_sync.go.txt
│ ├── go1_21_sync_atomic.go.txt
│ ├── go1_22_cmp_cmp.go.txt
│ ├── go1_22_generic.go
│ ├── go1_22_maps_maps.go.txt
│ ├── go1_22_slices_slices.go.txt
│ ├── go1_22_slices_sort.go.txt
│ ├── go1_22_slices_zsortanyfunc.go.txt
│ ├── go1_22_sync_atomic_type.go.txt
│ └── go1_22_sync_oncefunc.go.txt
├── go1_21_archive_tar.go
├── go1_21_archive_zip.go
├── go1_21_bufio.go
├── go1_21_bytes.go
├── go1_21_cmp.go
├── go1_21_compress_bzip2.go
├── go1_21_compress_flate.go
├── go1_21_compress_gzip.go
├── go1_21_compress_lzw.go
├── go1_21_compress_zlib.go
├── go1_21_container_heap.go
├── go1_21_container_list.go
├── go1_21_container_ring.go
├── go1_21_context.go
├── go1_21_crypto.go
├── go1_21_crypto_aes.go
├── go1_21_crypto_cipher.go
├── go1_21_crypto_des.go
├── go1_21_crypto_dsa.go
├── go1_21_crypto_ecdh.go
├── go1_21_crypto_ecdsa.go
├── go1_21_crypto_ed25519.go
├── go1_21_crypto_elliptic.go
├── go1_21_crypto_hmac.go
├── go1_21_crypto_md5.go
├── go1_21_crypto_rand.go
├── go1_21_crypto_rc4.go
├── go1_21_crypto_rsa.go
├── go1_21_crypto_sha1.go
├── go1_21_crypto_sha256.go
├── go1_21_crypto_sha512.go
├── go1_21_crypto_subtle.go
├── go1_21_crypto_tls.go
├── go1_21_crypto_x509.go
├── go1_21_crypto_x509_pkix.go
├── go1_21_database_sql.go
├── go1_21_database_sql_driver.go
├── go1_21_debug_buildinfo.go
├── go1_21_debug_dwarf.go
├── go1_21_debug_elf.go
├── go1_21_debug_gosym.go
├── go1_21_debug_macho.go
├── go1_21_debug_pe.go
├── go1_21_debug_plan9obj.go
├── go1_21_encoding.go
├── go1_21_encoding_ascii85.go
├── go1_21_encoding_asn1.go
├── go1_21_encoding_base32.go
├── go1_21_encoding_base64.go
├── go1_21_encoding_binary.go
├── go1_21_encoding_csv.go
├── go1_21_encoding_gob.go
├── go1_21_encoding_hex.go
├── go1_21_encoding_json.go
├── go1_21_encoding_pem.go
├── go1_21_encoding_xml.go
├── go1_21_errors.go
├── go1_21_expvar.go
├── go1_21_flag.go
├── go1_21_fmt.go
├── go1_21_go_ast.go
├── go1_21_go_build.go
├── go1_21_go_build_constraint.go
├── go1_21_go_constant.go
├── go1_21_go_doc.go
├── go1_21_go_doc_comment.go
├── go1_21_go_format.go
├── go1_21_go_importer.go
├── go1_21_go_parser.go
├── go1_21_go_printer.go
├── go1_21_go_scanner.go
├── go1_21_go_token.go
├── go1_21_go_types.go
├── go1_21_hash.go
├── go1_21_hash_adler32.go
├── go1_21_hash_crc32.go
├── go1_21_hash_crc64.go
├── go1_21_hash_fnv.go
├── go1_21_hash_maphash.go
├── go1_21_html.go
├── go1_21_html_template.go
├── go1_21_image.go
├── go1_21_image_color.go
├── go1_21_image_color_palette.go
├── go1_21_image_draw.go
├── go1_21_image_gif.go
├── go1_21_image_jpeg.go
├── go1_21_image_png.go
├── go1_21_index_suffixarray.go
├── go1_21_io.go
├── go1_21_io_fs.go
├── go1_21_io_ioutil.go
├── go1_21_log.go
├── go1_21_log_slog.go
├── go1_21_log_syslog.go
├── go1_21_maps.go
├── go1_21_math.go
├── go1_21_math_big.go
├── go1_21_math_bits.go
├── go1_21_math_cmplx.go
├── go1_21_math_rand.go
├── go1_21_mime.go
├── go1_21_mime_multipart.go
├── go1_21_mime_quotedprintable.go
├── go1_21_net.go
├── go1_21_net_http.go
├── go1_21_net_http_cgi.go
├── go1_21_net_http_cookiejar.go
├── go1_21_net_http_fcgi.go
├── go1_21_net_http_httptest.go
├── go1_21_net_http_httptrace.go
├── go1_21_net_http_httputil.go
├── go1_21_net_http_pprof.go
├── go1_21_net_mail.go
├── go1_21_net_netip.go
├── go1_21_net_rpc.go
├── go1_21_net_rpc_jsonrpc.go
├── go1_21_net_smtp.go
├── go1_21_net_textproto.go
├── go1_21_net_url.go
├── go1_21_os.go
├── go1_21_os_signal.go
├── go1_21_os_user.go
├── go1_21_path.go
├── go1_21_path_filepath.go
├── go1_21_reflect.go
├── go1_21_regexp.go
├── go1_21_regexp_syntax.go
├── go1_21_runtime.go
├── go1_21_runtime_debug.go
├── go1_21_runtime_metrics.go
├── go1_21_runtime_pprof.go
├── go1_21_runtime_trace.go
├── go1_21_slices.go
├── go1_21_sort.go
├── go1_21_strconv.go
├── go1_21_strings.go
├── go1_21_sync.go
├── go1_21_sync_atomic.go
├── go1_21_testing.go
├── go1_21_testing_fstest.go
├── go1_21_testing_iotest.go
├── go1_21_testing_quick.go
├── go1_21_testing_slogtest.go
├── go1_21_text_scanner.go
├── go1_21_text_tabwriter.go
├── go1_21_text_template.go
├── go1_21_text_template_parse.go
├── go1_21_time.go
├── go1_21_unicode.go
├── go1_21_unicode_utf16.go
├── go1_21_unicode_utf8.go
├── go1_22_archive_tar.go
├── go1_22_archive_zip.go
├── go1_22_bufio.go
├── go1_22_bytes.go
├── go1_22_cmp.go
├── go1_22_compress_bzip2.go
├── go1_22_compress_flate.go
├── go1_22_compress_gzip.go
├── go1_22_compress_lzw.go
├── go1_22_compress_zlib.go
├── go1_22_container_heap.go
├── go1_22_container_list.go
├── go1_22_container_ring.go
├── go1_22_context.go
├── go1_22_crypto.go
├── go1_22_crypto_aes.go
├── go1_22_crypto_cipher.go
├── go1_22_crypto_des.go
├── go1_22_crypto_dsa.go
├── go1_22_crypto_ecdh.go
├── go1_22_crypto_ecdsa.go
├── go1_22_crypto_ed25519.go
├── go1_22_crypto_elliptic.go
├── go1_22_crypto_hmac.go
├── go1_22_crypto_md5.go
├── go1_22_crypto_rand.go
├── go1_22_crypto_rc4.go
├── go1_22_crypto_rsa.go
├── go1_22_crypto_sha1.go
├── go1_22_crypto_sha256.go
├── go1_22_crypto_sha512.go
├── go1_22_crypto_subtle.go
├── go1_22_crypto_tls.go
├── go1_22_crypto_x509.go
├── go1_22_crypto_x509_pkix.go
├── go1_22_database_sql.go
├── go1_22_database_sql_driver.go
├── go1_22_debug_buildinfo.go
├── go1_22_debug_dwarf.go
├── go1_22_debug_elf.go
├── go1_22_debug_gosym.go
├── go1_22_debug_macho.go
├── go1_22_debug_pe.go
├── go1_22_debug_plan9obj.go
├── go1_22_encoding.go
├── go1_22_encoding_ascii85.go
├── go1_22_encoding_asn1.go
├── go1_22_encoding_base32.go
├── go1_22_encoding_base64.go
├── go1_22_encoding_binary.go
├── go1_22_encoding_csv.go
├── go1_22_encoding_gob.go
├── go1_22_encoding_hex.go
├── go1_22_encoding_json.go
├── go1_22_encoding_pem.go
├── go1_22_encoding_xml.go
├── go1_22_errors.go
├── go1_22_expvar.go
├── go1_22_flag.go
├── go1_22_fmt.go
├── go1_22_go_ast.go
├── go1_22_go_build.go
├── go1_22_go_build_constraint.go
├── go1_22_go_constant.go
├── go1_22_go_doc.go
├── go1_22_go_doc_comment.go
├── go1_22_go_format.go
├── go1_22_go_importer.go
├── go1_22_go_parser.go
├── go1_22_go_printer.go
├── go1_22_go_scanner.go
├── go1_22_go_token.go
├── go1_22_go_types.go
├── go1_22_go_version.go
├── go1_22_hash.go
├── go1_22_hash_adler32.go
├── go1_22_hash_crc32.go
├── go1_22_hash_crc64.go
├── go1_22_hash_fnv.go
├── go1_22_hash_maphash.go
├── go1_22_html.go
├── go1_22_html_template.go
├── go1_22_image.go
├── go1_22_image_color.go
├── go1_22_image_color_palette.go
├── go1_22_image_draw.go
├── go1_22_image_gif.go
├── go1_22_image_jpeg.go
├── go1_22_image_png.go
├── go1_22_index_suffixarray.go
├── go1_22_io.go
├── go1_22_io_fs.go
├── go1_22_io_ioutil.go
├── go1_22_log.go
├── go1_22_log_slog.go
├── go1_22_log_syslog.go
├── go1_22_maps.go
├── go1_22_math.go
├── go1_22_math_big.go
├── go1_22_math_bits.go
├── go1_22_math_cmplx.go
├── go1_22_math_rand.go
├── go1_22_math_rand_v2.go
├── go1_22_mime.go
├── go1_22_mime_multipart.go
├── go1_22_mime_quotedprintable.go
├── go1_22_net.go
├── go1_22_net_http.go
├── go1_22_net_http_cgi.go
├── go1_22_net_http_cookiejar.go
├── go1_22_net_http_fcgi.go
├── go1_22_net_http_httptest.go
├── go1_22_net_http_httptrace.go
├── go1_22_net_http_httputil.go
├── go1_22_net_http_pprof.go
├── go1_22_net_mail.go
├── go1_22_net_netip.go
├── go1_22_net_rpc.go
├── go1_22_net_rpc_jsonrpc.go
├── go1_22_net_smtp.go
├── go1_22_net_textproto.go
├── go1_22_net_url.go
├── go1_22_os.go
├── go1_22_os_signal.go
├── go1_22_os_user.go
├── go1_22_path.go
├── go1_22_path_filepath.go
├── go1_22_reflect.go
├── go1_22_regexp.go
├── go1_22_regexp_syntax.go
├── go1_22_runtime.go
├── go1_22_runtime_debug.go
├── go1_22_runtime_metrics.go
├── go1_22_runtime_pprof.go
├── go1_22_runtime_trace.go
├── go1_22_slices.go
├── go1_22_sort.go
├── go1_22_strconv.go
├── go1_22_strings.go
├── go1_22_sync.go
├── go1_22_sync_atomic.go
├── go1_22_testing.go
├── go1_22_testing_fstest.go
├── go1_22_testing_iotest.go
├── go1_22_testing_quick.go
├── go1_22_testing_slogtest.go
├── go1_22_text_scanner.go
├── go1_22_text_tabwriter.go
├── go1_22_text_template.go
├── go1_22_text_template_parse.go
├── go1_22_time.go
├── go1_22_unicode.go
├── go1_22_unicode_utf16.go
├── go1_22_unicode_utf8.go
├── maptypes.go
├── restricted.go
├── stdlib-go1.22.go
├── stdlib.go
├── syscall/
│ ├── go1_21_syscall_aix_ppc64.go
│ ├── go1_21_syscall_android_386.go
│ ├── go1_21_syscall_android_amd64.go
│ ├── go1_21_syscall_android_arm.go
│ ├── go1_21_syscall_android_arm64.go
│ ├── go1_21_syscall_darwin_amd64.go
│ ├── go1_21_syscall_darwin_arm64.go
│ ├── go1_21_syscall_dragonfly_amd64.go
│ ├── go1_21_syscall_freebsd_386.go
│ ├── go1_21_syscall_freebsd_amd64.go
│ ├── go1_21_syscall_freebsd_arm.go
│ ├── go1_21_syscall_freebsd_arm64.go
│ ├── go1_21_syscall_freebsd_riscv64.go
│ ├── go1_21_syscall_illumos_amd64.go
│ ├── go1_21_syscall_ios_amd64.go
│ ├── go1_21_syscall_ios_arm64.go
│ ├── go1_21_syscall_js_wasm.go
│ ├── go1_21_syscall_linux_386.go
│ ├── go1_21_syscall_linux_amd64.go
│ ├── go1_21_syscall_linux_arm.go
│ ├── go1_21_syscall_linux_arm64.go
│ ├── go1_21_syscall_linux_loong64.go
│ ├── go1_21_syscall_linux_mips.go
│ ├── go1_21_syscall_linux_mips64.go
│ ├── go1_21_syscall_linux_mips64le.go
│ ├── go1_21_syscall_linux_mipsle.go
│ ├── go1_21_syscall_linux_ppc64.go
│ ├── go1_21_syscall_linux_ppc64le.go
│ ├── go1_21_syscall_linux_riscv64.go
│ ├── go1_21_syscall_linux_s390x.go
│ ├── go1_21_syscall_netbsd_386.go
│ ├── go1_21_syscall_netbsd_amd64.go
│ ├── go1_21_syscall_netbsd_arm.go
│ ├── go1_21_syscall_netbsd_arm64.go
│ ├── go1_21_syscall_openbsd_386.go
│ ├── go1_21_syscall_openbsd_amd64.go
│ ├── go1_21_syscall_openbsd_arm.go
│ ├── go1_21_syscall_openbsd_arm64.go
│ ├── go1_21_syscall_plan9_386.go
│ ├── go1_21_syscall_plan9_amd64.go
│ ├── go1_21_syscall_plan9_arm.go
│ ├── go1_21_syscall_solaris_amd64.go
│ ├── go1_21_syscall_wasip1_wasm.go
│ ├── go1_21_syscall_windows_386.go
│ ├── go1_21_syscall_windows_amd64.go
│ ├── go1_21_syscall_windows_arm.go
│ ├── go1_21_syscall_windows_arm64.go
│ ├── go1_22_syscall_aix_ppc64.go
│ ├── go1_22_syscall_android_386.go
│ ├── go1_22_syscall_android_amd64.go
│ ├── go1_22_syscall_android_arm.go
│ ├── go1_22_syscall_android_arm64.go
│ ├── go1_22_syscall_darwin_amd64.go
│ ├── go1_22_syscall_darwin_arm64.go
│ ├── go1_22_syscall_dragonfly_amd64.go
│ ├── go1_22_syscall_freebsd_386.go
│ ├── go1_22_syscall_freebsd_amd64.go
│ ├── go1_22_syscall_freebsd_arm.go
│ ├── go1_22_syscall_freebsd_arm64.go
│ ├── go1_22_syscall_freebsd_riscv64.go
│ ├── go1_22_syscall_illumos_amd64.go
│ ├── go1_22_syscall_ios_amd64.go
│ ├── go1_22_syscall_ios_arm64.go
│ ├── go1_22_syscall_js_wasm.go
│ ├── go1_22_syscall_linux_386.go
│ ├── go1_22_syscall_linux_amd64.go
│ ├── go1_22_syscall_linux_arm.go
│ ├── go1_22_syscall_linux_arm64.go
│ ├── go1_22_syscall_linux_loong64.go
│ ├── go1_22_syscall_linux_mips.go
│ ├── go1_22_syscall_linux_mips64.go
│ ├── go1_22_syscall_linux_mips64le.go
│ ├── go1_22_syscall_linux_mipsle.go
│ ├── go1_22_syscall_linux_ppc64.go
│ ├── go1_22_syscall_linux_ppc64le.go
│ ├── go1_22_syscall_linux_riscv64.go
│ ├── go1_22_syscall_linux_s390x.go
│ ├── go1_22_syscall_netbsd_386.go
│ ├── go1_22_syscall_netbsd_amd64.go
│ ├── go1_22_syscall_netbsd_arm.go
│ ├── go1_22_syscall_netbsd_arm64.go
│ ├── go1_22_syscall_openbsd_386.go
│ ├── go1_22_syscall_openbsd_amd64.go
│ ├── go1_22_syscall_openbsd_arm.go
│ ├── go1_22_syscall_openbsd_arm64.go
│ ├── go1_22_syscall_openbsd_ppc64.go
│ ├── go1_22_syscall_plan9_386.go
│ ├── go1_22_syscall_plan9_amd64.go
│ ├── go1_22_syscall_plan9_arm.go
│ ├── go1_22_syscall_solaris_amd64.go
│ ├── go1_22_syscall_wasip1_wasm.go
│ ├── go1_22_syscall_windows_386.go
│ ├── go1_22_syscall_windows_amd64.go
│ ├── go1_22_syscall_windows_arm.go
│ ├── go1_22_syscall_windows_arm64.go
│ └── syscall.go
├── unrestricted/
│ ├── go1_21_syscall_aix_ppc64.go
│ ├── go1_21_syscall_android_386.go
│ ├── go1_21_syscall_android_amd64.go
│ ├── go1_21_syscall_android_arm.go
│ ├── go1_21_syscall_android_arm64.go
│ ├── go1_21_syscall_darwin_amd64.go
│ ├── go1_21_syscall_darwin_arm64.go
│ ├── go1_21_syscall_dragonfly_amd64.go
│ ├── go1_21_syscall_freebsd_386.go
│ ├── go1_21_syscall_freebsd_amd64.go
│ ├── go1_21_syscall_freebsd_arm.go
│ ├── go1_21_syscall_freebsd_arm64.go
│ ├── go1_21_syscall_freebsd_riscv64.go
│ ├── go1_21_syscall_illumos_amd64.go
│ ├── go1_21_syscall_ios_amd64.go
│ ├── go1_21_syscall_ios_arm64.go
│ ├── go1_21_syscall_js_wasm.go
│ ├── go1_21_syscall_linux_386.go
│ ├── go1_21_syscall_linux_amd64.go
│ ├── go1_21_syscall_linux_arm.go
│ ├── go1_21_syscall_linux_arm64.go
│ ├── go1_21_syscall_linux_loong64.go
│ ├── go1_21_syscall_linux_mips.go
│ ├── go1_21_syscall_linux_mips64.go
│ ├── go1_21_syscall_linux_mips64le.go
│ ├── go1_21_syscall_linux_mipsle.go
│ ├── go1_21_syscall_linux_ppc64.go
│ ├── go1_21_syscall_linux_ppc64le.go
│ ├── go1_21_syscall_linux_riscv64.go
│ ├── go1_21_syscall_linux_s390x.go
│ ├── go1_21_syscall_netbsd_386.go
│ ├── go1_21_syscall_netbsd_amd64.go
│ ├── go1_21_syscall_netbsd_arm.go
│ ├── go1_21_syscall_netbsd_arm64.go
│ ├── go1_21_syscall_openbsd_386.go
│ ├── go1_21_syscall_openbsd_amd64.go
│ ├── go1_21_syscall_openbsd_arm.go
│ ├── go1_21_syscall_openbsd_arm64.go
│ ├── go1_21_syscall_plan9_386.go
│ ├── go1_21_syscall_plan9_amd64.go
│ ├── go1_21_syscall_plan9_arm.go
│ ├── go1_21_syscall_solaris_amd64.go
│ ├── go1_21_syscall_wasip1_wasm.go
│ ├── go1_21_syscall_windows_386.go
│ ├── go1_21_syscall_windows_amd64.go
│ ├── go1_21_syscall_windows_arm.go
│ ├── go1_21_syscall_windows_arm64.go
│ ├── go1_22_syscall_aix_ppc64.go
│ ├── go1_22_syscall_android_386.go
│ ├── go1_22_syscall_android_amd64.go
│ ├── go1_22_syscall_android_arm.go
│ ├── go1_22_syscall_android_arm64.go
│ ├── go1_22_syscall_darwin_amd64.go
│ ├── go1_22_syscall_darwin_arm64.go
│ ├── go1_22_syscall_dragonfly_amd64.go
│ ├── go1_22_syscall_freebsd_386.go
│ ├── go1_22_syscall_freebsd_amd64.go
│ ├── go1_22_syscall_freebsd_arm.go
│ ├── go1_22_syscall_freebsd_arm64.go
│ ├── go1_22_syscall_freebsd_riscv64.go
│ ├── go1_22_syscall_illumos_amd64.go
│ ├── go1_22_syscall_ios_amd64.go
│ ├── go1_22_syscall_ios_arm64.go
│ ├── go1_22_syscall_js_wasm.go
│ ├── go1_22_syscall_linux_386.go
│ ├── go1_22_syscall_linux_amd64.go
│ ├── go1_22_syscall_linux_arm.go
│ ├── go1_22_syscall_linux_arm64.go
│ ├── go1_22_syscall_linux_loong64.go
│ ├── go1_22_syscall_linux_mips.go
│ ├── go1_22_syscall_linux_mips64.go
│ ├── go1_22_syscall_linux_mips64le.go
│ ├── go1_22_syscall_linux_mipsle.go
│ ├── go1_22_syscall_linux_ppc64.go
│ ├── go1_22_syscall_linux_ppc64le.go
│ ├── go1_22_syscall_linux_riscv64.go
│ ├── go1_22_syscall_linux_s390x.go
│ ├── go1_22_syscall_netbsd_386.go
│ ├── go1_22_syscall_netbsd_amd64.go
│ ├── go1_22_syscall_netbsd_arm.go
│ ├── go1_22_syscall_netbsd_arm64.go
│ ├── go1_22_syscall_openbsd_386.go
│ ├── go1_22_syscall_openbsd_amd64.go
│ ├── go1_22_syscall_openbsd_arm.go
│ ├── go1_22_syscall_openbsd_arm64.go
│ ├── go1_22_syscall_openbsd_ppc64.go
│ ├── go1_22_syscall_plan9_386.go
│ ├── go1_22_syscall_plan9_amd64.go
│ ├── go1_22_syscall_plan9_arm.go
│ ├── go1_22_syscall_solaris_amd64.go
│ ├── go1_22_syscall_wasip1_wasm.go
│ ├── go1_22_syscall_windows_386.go
│ ├── go1_22_syscall_windows_amd64.go
│ ├── go1_22_syscall_windows_arm.go
│ ├── go1_22_syscall_windows_arm64.go
│ └── unrestricted.go
├── unsafe/
│ ├── go1_21_unsafe.go
│ ├── go1_22_unsafe.go
│ └── unsafe.go
└── wrapper-composed.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug Report
description: Create a report to help us improve
body:
- type: markdown
attributes:
value: |
⚠️ Make sure to browse the opened and closed issues before submit your issue.
- type: textarea
id: sample
attributes:
label: "The following program `sample.go` triggers an unexpected result"
value: |
package main
func main() {
// add a sample
}
render: go
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected result
description: |-
```console
$ go run ./sample.go
// output
```
placeholder: $ go run ./sample.go
render: console
validations:
required: true
- type: textarea
id: got
attributes:
label: Got
description: |-
```console
$ yaegi ./sample.go
// output
```
placeholder: $ yaegi ./sample.go
render: console
validations:
required: true
- type: input
id: version
attributes:
label: Yaegi Version
description: Can be a tag or a hash.
validations:
required: true
- type: textarea
id: additional
attributes:
label: Additional Notes
description: Use [Markdown syntax](https://help.github.com/articles/github-flavored-markdown) if needed.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Questions
url: https://community.traefik.io/c/yaegi
about: If you have a question, or are looking for advice, please post on our discussions forum!
- name: Documentation
url: https://pkg.go.dev/github.com/traefik/yaegi
about: Please take a look to our documenation.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: Feature request
description: Propose a change to Yaegi
body:
- type: markdown
attributes:
value: |
⚠️ Make sure to browse the opened and closed issues before submit your issue.
- type: textarea
id: proposal
attributes:
label: Proposal
description: Write your feature request in the form of a proposal to be considered for implementation.
validations:
required: true
- type: textarea
id: background
attributes:
label: Background
description: Describe the background problem or need that led to this feature request.
validations:
required: true
- type: textarea
id: workarounds
attributes:
label: Workarounds
description: Are there any current workarounds that you're using that others in similar positions should know about?
validations:
required: true
================================================
FILE: .github/workflows/go-cross.yml
================================================
name: Build Cross OS
on:
push:
branches:
- master
pull_request:
jobs:
cross:
name: Go
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ${{ github.workspace }}/go/src/github.com/traefik/yaegi
strategy:
matrix:
go-version: [ oldstable, stable ]
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
go-path-suffix: /go
- os: macos-latest
go-path-suffix: /go
- os: windows-latest
go-path-suffix: \go
steps:
# https://github.com/marketplace/actions/checkout
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
path: go/src/github.com/traefik/yaegi
# https://github.com/marketplace/actions/setup-go-environment
- name: Set up Go ${{ matrix.go-version }}
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5.6.0
with:
go-version: ${{ matrix.go-version }}
stable: true
- name: Setup GOPATH
run: go env -w GOPATH=${{ github.workspace }}${{ matrix.go-path-suffix }}
# TODO fail on windows
# - name: Tests
# run: go test -v -cover ./...
# env:
# GOPATH: ${{ github.workspace }}${{ matrix.go-path }}
- name: Build
run: go build -race -v -ldflags "-s -w" -trimpath
================================================
FILE: .github/workflows/main.yml
================================================
name: Main
on:
push:
branches:
- master
pull_request:
env:
GO_VERSION: stable
GOLANGCI_LINT_VERSION: v2.4.0
jobs:
linting:
name: Linting
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
- name: Set up Go ${{ env.GO_VERSION }}
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5.6.0
with:
go-version: ${{ env.GO_VERSION }}
- name: Check and get dependencies
run: |
go mod tidy
git diff --exit-code go.mod
# git diff --exit-code go.sum
go mod download
- name: Install golangci-lint ${{ env.GOLANGCI_LINT_VERSION }}
run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin ${GOLANGCI_LINT_VERSION}
- name: Run golangci-lint ${{ env.GOLANGCI_LINT_VERSION }}
run: make check
generate:
name: Checks code and generated code
runs-on: ubuntu-latest
needs: linting
strategy:
matrix:
go-version: [ oldstable, stable ]
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
- name: Set up Go ${{ matrix.go-version }}
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5.6.0
with:
go-version: ${{ matrix.go-version }}
stable: true
- name: Check generated code
run: |
rm -f interp/op.go
make generate
git update-index -q --refresh
CHANGED=$(git diff-index --name-only HEAD --)
test -z "$CHANGED" || echo $CHANGED
test -z "$CHANGED"
main:
name: Build and Test
runs-on: ubuntu-latest
needs: linting
defaults:
run:
working-directory: ${{ github.workspace }}/go/src/github.com/traefik/yaegi
strategy:
matrix:
go-version: [ oldstable, stable ]
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
path: go/src/github.com/traefik/yaegi
fetch-depth: 0
- name: Set up Go ${{ matrix.go-version }}
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5.6.0
with:
go-version: ${{ matrix.go-version }}
stable: true
# https://github.com/marketplace/actions/cache
- name: Cache Go modules
uses: actions/cache@6f8efc29b200d32929f49075959781ed54ec270c # v3.5.0
with:
path: ./_test/tmp
key: ${{ runner.os }}-yaegi-${{ hashFiles('**//_test/tmp/') }}
restore-keys: |
${{ runner.os }}-yaegi-
- name: Setup GOPATH
run: go env -w GOPATH=${{ github.workspace }}/go
- name: Build
run: go build -v ./...
- name: Run tests
run: make tests
env:
GOPATH: ${{ github.workspace }}/go
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
push:
tags:
- v[0-9]+.[0-9]+*
env:
GO_VERSION: stable
jobs:
release:
name: Create a release
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
- name: Set up Go ${{ env.GO_VERSION }}
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5.6.0
with:
go-version: ${{ env.GO_VERSION }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@5742e2a039330cbb23ebf35f046f814d4c6ff811 # v5.1.0
with:
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN_REPO }}
================================================
FILE: .gitignore
================================================
.*.swo
.*.swp
*.dot
*.out
.idea/
/yaegi
internal/cmd/extract/extract
example/inception/inception
_test/tmp/
/dist
================================================
FILE: .golangci.yml
================================================
version: "2"
linters:
default: standard
enable:
- depguard
- goconst
- godot
- grouper
- misspell
- perfsprint
- thelper
- unconvert
- unparam
disable:
- errcheck
settings:
depguard:
rules:
main:
files:
- $all
allow:
- $gostd
- github.com/traefik/yaegi
goconst:
min-len: 3
min-occurrences: 3
misspell:
locale: US
staticcheck:
checks: ["all", "-ST1000", "-ST1023", "-QF1001", "-QF1008", "-QF1011"]
exclusions:
generated: lax
rules:
- linters:
- goconst
path: .+_test\.go
- path: .+_test\.go
text: 'var-declaration:'
- path: interp/interp.go
text: '`in` can be `io.Reader`'
- path: interp/interp.go
text: '`out` can be `io.Writer`'
- path: interp/interp.go
text: '`Panic` should conform to the `XxxError` format'
- linters:
- thelper
path: interp/interp_eval_test.go
- linters:
- containedctx
path: interp/debugger.go
- path: (.+)\.go$
text: fmt.Sprintf can be replaced with string
paths:
- third_party$
- builtin$
- examples$
issues:
max-issues-per-linter: 0
max-same-issues: 0
formatters:
enable:
- gci
- gofmt
- gofumpt
- goimports
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$
================================================
FILE: .goreleaser.yml
================================================
project_name: yaegi
builds:
- id: yaegi
binary: yaegi
main: ./cmd/yaegi/
goos:
- darwin
- linux
# - windows
- freebsd
- openbsd
- solaris
goarch:
- amd64
- 386
- arm
- arm64
goarm:
- 7
- 6
- 5
ignore:
- goos: darwin
goarch: 386
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^doc:'
- '^chore:'
- '^test:'
- '^tests:'
archives:
- id: archive
name_template: '{{ .ProjectName }}_v{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
format: tar.gz
format_overrides:
- goos: windows
format: zip
files:
- LICENSE
brews:
- repository:
owner: traefik
name: homebrew-tap
commit_author:
name: traefiker
email: 30906710+traefiker@users.noreply.github.com
folder: Formula
homepage: https://github.com/traefik/yaegi
description: |
Yaegi is Another Elegant Go Interpreter.
It powers executable Go scripts and plugins, in embedded interpreters
or interactive shells, on top of the Go runtime.
test: |
system "#{bin}/yaegi version"
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
Yaegi is an open source project, and your feedback and contributions
are needed and always welcome.
[Issues] and [Pull Requests] are opened at https://github.com/traefik/yaegi.
Non trivial changes should be discussed with the project maintainers by
opening a [Feature Request] clearly explaining rationale, background
and possible implementation ideas. Feel free to provide code in such
discussions.
Once the proposal is approved, a Pull Request can be opened. If you want
to provide early visibility to reviewers, create a [Draft Pull Request].
We will also require you to sign the [Traefik Contributor License Agreement]
after you submit your first pull request to this project. The link to sign the
agreement will be presented to you in the web interface of the pull request.
[Issues]: https://github.com/traefik/yaegi/issues
[Pull Requests]: https://github.com/traefik/yaegi/issues
[Feature Request]: https://github.com/traefik/yaegi/issues/new?template=feature_request.md
[Draft Pull Request]: https://github.blog/2019-02-14-introducing-draft-pull-requests/
[Traefik Labs Contributor License Agreement]: https://cla-assistant.io/traefik/yaegi
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2019 Containous SAS
Copyright 2020 Traefik Labs SAS
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Makefile
================================================
# Static linting of source files. See .golangci.toml for options
check:
golangci-lint run
# Generate stdlib/syscall/syscall_GOOS_GOARCH.go for all platforms
gen_all_syscall: internal/cmd/extract/extract
@for v in $$(go tool dist list); do \
echo syscall_$${v%/*}_$${v#*/}.go; \
GOOS=$${v%/*} GOARCH=$${v#*/} go generate ./stdlib/syscall ./stdlib/unrestricted; \
done
internal/cmd/extract/extract:
rm -f internal/cmd/extract/extract
go generate ./internal/cmd/extract
generate: gen_all_syscall
go generate
install:
GOFLAGS=-ldflags=-X=main.version=$$(git describe --tags) go install ./...
tests:
go test -v ./...
go test -race ./interp
# https://github.com/goreleaser/godownloader
install.sh: .goreleaser.yml
godownloader --repo=traefik/yaegi -o install.sh .goreleaser.yml
generic_list = cmp/cmp.go slices/slices.go slices/sort.go slices/zsortanyfunc.go maps/maps.go \
sync/oncefunc.go sync/atomic/type.go
# get_generic_src imports stdlib files containing generic symbols definitions
get_generic_src:
eval "`go env`"; echo $$GOROOT; gov=$${GOVERSION#*.}; gov=$${gov%.*}; \
for f in ${generic_list}; do \
nf=stdlib/generic/go1_$${gov}_`echo $$f | tr / _`.txt; echo "nf: $$nf"; \
cat "$$GOROOT/src/$$f" > "$$nf"; \
done
.PHONY: check gen_all_syscall internal/cmd/extract/extract get_generic_src install
================================================
FILE: README.md
================================================
<p align="center">
<img width="400" src="doc/images/yaegi.png" alt="Yaegi" title="Yaegi" />
</p>
[](https://github.com/traefik/yaegi/releases)
[](https://github.com/traefik/yaegi/actions/workflows/main.yml)
[](https://pkg.go.dev/mod/github.com/traefik/yaegi)
Yaegi is Another Elegant Go Interpreter.
It powers executable Go scripts and plugins, in embedded interpreters or interactive shells, on top of the Go runtime.
## Features
* Complete support of [Go specification][specs]
* Written in pure Go, using only the standard library
* Simple interpreter API: `New()`, `Eval()`, `Use()`
* Works everywhere Go works
* All Go & runtime resources accessible from script (with control)
* Security: `unsafe` and `syscall` packages neither used nor exported by default
* Support the latest 2 major releases of Go (Go 1.21 and Go 1.22)
## Install
### Go package
```go
import "github.com/traefik/yaegi/interp"
```
### Command-line executable
```bash
go install github.com/traefik/yaegi/cmd/yaegi@latest
```
Note that you can use [rlwrap](https://github.com/hanslub42/rlwrap) (install with your favorite package manager),
and alias the `yaegi` command in `alias yaegi='rlwrap yaegi'` in your `~/.bashrc`, to have history and command line edition.
### CI Integration
```bash
curl -sfL https://raw.githubusercontent.com/traefik/yaegi/master/install.sh | bash -s -- -b $GOPATH/bin v0.9.0
```
## Usage
### As an embedded interpreter
Create an interpreter with `New()`, run Go code with `Eval()`:
```go
package main
import (
"github.com/traefik/yaegi/interp"
"github.com/traefik/yaegi/stdlib"
)
func main() {
i := interp.New(interp.Options{})
i.Use(stdlib.Symbols)
_, err := i.Eval(`import "fmt"`)
if err != nil {
panic(err)
}
_, err = i.Eval(`fmt.Println("Hello Yaegi")`)
if err != nil {
panic(err)
}
}
```
[Go Playground](https://play.golang.org/p/2n-EpZbMYI9)
### As a dynamic extension framework
The following program is compiled ahead of time, except `bar()` which is interpreted, with the following steps:
1. use of `i.Eval(src)` to evaluate the script in the context of interpreter
2. use of `v, err := i.Eval("foo.Bar")` to get the symbol from the interpreter context, as a `reflect.Value`
3. application of `Interface()` method and type assertion to convert `v` into `bar`, as if it was compiled
```go
package main
import "github.com/traefik/yaegi/interp"
const src = `package foo
func Bar(s string) string { return s + "-Foo" }`
func main() {
i := interp.New(interp.Options{})
_, err := i.Eval(src)
if err != nil {
panic(err)
}
v, err := i.Eval("foo.Bar")
if err != nil {
panic(err)
}
bar := v.Interface().(func(string) string)
r := bar("Kung")
println(r)
}
```
[Go Playground](https://play.golang.org/p/WvwH4JqrU-p)
### As a command-line interpreter
The Yaegi command can run an interactive Read-Eval-Print-Loop:
```console
$ yaegi
> 1 + 2
3
> import "fmt"
> fmt.Println("Hello World")
Hello World
>
```
Note that in interactive mode, all stdlib package are pre-imported,
you can use them directly:
```console
$ yaegi
> reflect.TypeOf(time.Date)
: func(int, time.Month, int, int, int, int, int, *time.Location) time.Time
>
```
Or interpret Go packages, directories or files, including itself:
```console
$ yaegi -syscall -unsafe -unrestricted github.com/traefik/yaegi/cmd/yaegi
>
```
Or for Go scripting in the shebang line:
```console
$ cat /tmp/test
#!/usr/bin/env yaegi
package main
import "fmt"
func main() {
fmt.Println("test")
}
$ ls -la /tmp/test
-rwxr-xr-x 1 dow184 dow184 93 Jan 6 13:38 /tmp/test
$ /tmp/test
test
```
## Documentation
Documentation about Yaegi commands and libraries can be found at usual [godoc.org][docs].
Key documentation of the internal design: https://marc.vertes.org/yaegi-internals/ Also see [interp/trace.go](interp/trace.go) for helpful printing commands to see what is happening under the hood during compilation.
## Limitations
Beside the known [bugs] which are supposed to be fixed in the short term, there are some limitations not planned to be addressed soon:
- Assembly files (`.s`) are not supported.
- Calling C code is not supported (no virtual "C" package).
- Directives about the compiler, the linker, or embedding files are not supported.
- Interfaces to be used from the pre-compiled code can not be added dynamically, as it is required to pre-compile interface wrappers.
- Representation of types by `reflect` and printing values using %T may give different results between compiled mode and interpreted mode.
- Interpreting computation intensive code is likely to remain significantly slower than in compiled mode.
Go modules are not supported yet. Until that, it is necessary to install the source into `$GOPATH/src/github.com/traefik/yaegi` to pass all the tests.
## Contributing
[Contributing guide](CONTRIBUTING.md).
## License
[Apache 2.0][License].
[specs]: https://golang.org/ref/spec
[docs]: https://pkg.go.dev/github.com/traefik/yaegi
[license]: https://github.com/traefik/yaegi/blob/master/LICENSE
[github]: https://github.com/traefik/yaegi
[bugs]: https://github.com/traefik/yaegi/issues?q=is%3Aissue+is%3Aopen+label%3Abug
================================================
FILE: _test/a1.go
================================================
package main
func main() {
a := [6]int{1, 2, 3, 4, 5, 6}
println(a[1]) // 2
for i, v := range a {
println(v)
if i == 3 {
break
}
}
}
// Output:
// 2
// 1
// 2
// 3
// 4
================================================
FILE: _test/a10.go
================================================
package main
type Sample struct {
Name string
}
var samples = []Sample{}
func f(i int) {
println(samples[i].Name)
}
func main() {
samples = append(samples, Sample{Name: "test"})
f(0)
}
// Output:
// test
================================================
FILE: _test/a11.go
================================================
package main
func main() {
a := []int{1, 2, 3, 4}
for _, v := range a {
println(v)
}
}
// Output:
// 1
// 2
// 3
// 4
================================================
FILE: _test/a12.go
================================================
package main
import "fmt"
func main() {
var buf [12]int
fmt.Println(buf[0])
}
// Output:
// 0
================================================
FILE: _test/a13.go
================================================
package main
type T1 struct {
num []int
}
func main() {
a := T1{[]int{1, 3, 5}}
for i, v := range a.num {
println(i, v)
}
}
// Output:
// 0 1
// 1 3
// 2 5
================================================
FILE: _test/a14.go
================================================
package main
import "fmt"
const size = 12
func main() {
var buf [size]int
fmt.Println(buf)
}
// Output:
// [0 0 0 0 0 0 0 0 0 0 0 0]
================================================
FILE: _test/a15.go
================================================
package main
import "fmt"
const size = 12
func main() {
var buf [size]int
fmt.Println(buf[:])
}
// Output:
// [0 0 0 0 0 0 0 0 0 0 0 0]
================================================
FILE: _test/a16.go
================================================
package main
func main() {
a := [6]int{1, 2, 3, 4, 5, 6}
println(a[1]) // 2
for k := 0; k < 2; k++ {
for i, v := range a {
println(v)
if i == 3 {
break
}
}
}
}
// Output:
// 2
// 1
// 2
// 3
// 4
// 1
// 2
// 3
// 4
================================================
FILE: _test/a17.go
================================================
package main
import "fmt"
func main() {
a := make([]int, 2, 7)
fmt.Println(a, len(a), cap(a))
}
// Output:
// [0 0] 2 7
================================================
FILE: _test/a18.go
================================================
package main
func main() {
a := []int64{1, 2, 3, 4}
for _, v := range a {
println(v)
}
}
// Output:
// 1
// 2
// 3
// 4
================================================
FILE: _test/a19.go
================================================
package main
func main() {
var buf [bsize]byte
println(len(buf))
}
const bsize = 10
// Output:
// 10
================================================
FILE: _test/a2.go
================================================
package main
func main() {
a := [6]int{1, 2, 3, 4, 5, 6}
a[1] = 5
println(a[1]) // 2
for i, v := range a {
println(v)
if i == 3 {
break
}
}
}
// Output:
// 5
// 1
// 5
// 3
// 4
================================================
FILE: _test/a20.go
================================================
package main
import "fmt"
type IntArray []int
func (h *IntArray) Add(x int) {
*h = append(*h, x)
}
func main() {
a := IntArray{}
a.Add(4)
fmt.Println(a)
}
// Output:
// [4]
================================================
FILE: _test/a21.go
================================================
package main
import "fmt"
func main() {
a := []byte("hello")
fmt.Println(a)
a = append(a, '=')
fmt.Println(a)
}
// Output:
// [104 101 108 108 111]
// [104 101 108 108 111 61]
================================================
FILE: _test/a22.go
================================================
package main
func main() {
a := [256]int{}
var b uint8 = 12
a[b] = 1
println(a[b])
}
// Output:
// 1
================================================
FILE: _test/a23.go
================================================
package main
import "fmt"
func main() {
var key, salt [32]byte
for i := range key {
key[i] = byte(i)
salt[i] = byte(i + 32)
}
fmt.Println(key)
fmt.Println(salt)
}
// Output:
// [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]
// [32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63]
================================================
FILE: _test/a24.go
================================================
package main
import "fmt"
func main() {
for i := 0; i < 2; i++ {
var buf [8]byte
var x int
fmt.Println(buf, x)
for i := range buf {
buf[i] = byte(i)
x = i
}
fmt.Println(buf, x)
}
}
// Output:
// [0 0 0 0 0 0 0 0] 0
// [0 1 2 3 4 5 6 7] 7
// [0 0 0 0 0 0 0 0] 0
// [0 1 2 3 4 5 6 7] 7
================================================
FILE: _test/a25.go
================================================
package main
import "fmt"
func main() {
var buf [8]byte
for i := 0; i < 2; i++ {
for i := range buf {
buf[i] += byte(i)
}
fmt.Println(buf)
}
}
// Output:
// [0 1 2 3 4 5 6 7]
// [0 2 4 6 8 10 12 14]
================================================
FILE: _test/a26.go
================================================
package main
func main() {
a := [3]int{1, 2, 3}
b := [3]int{1, 2, 3}
println(a == b)
}
// Output:
// true
================================================
FILE: _test/a27.go
================================================
package main
import "fmt"
func main() {
a := [...]string{"hello", "world"}
fmt.Printf("%v %T\n", a, a)
}
// Output:
// [hello world] [2]string
================================================
FILE: _test/a28.go
================================================
package main
import "fmt"
func main() {
a := [...]string{9: "hello"}
fmt.Printf("%v %T\n", a, a)
}
// Output:
// [ hello] [10]string
================================================
FILE: _test/a29.go
================================================
package main
import "fmt"
const (
zero = iota
one
two
three
)
func main() {
a := [...]string{
zero: "zero",
one: "one",
three: "three",
three + 2: "five",
}
fmt.Printf("%v %T\n", a, a)
}
// Output:
// [zero one three five] [6]string
================================================
FILE: _test/a3.go
================================================
package main
import "fmt"
func main() {
a := [6]int{1, 2, 3, 4, 5, 6}
fmt.Println(a[2:])
}
// Output:
// [3 4 5 6]
================================================
FILE: _test/a30.go
================================================
package main
func main() {
for range []struct{}{} {
}
println("ok")
}
// Output:
// ok
================================================
FILE: _test/a31.go
================================================
package main
func main() {
for range []int{0, 1, 2} {
print("hello ")
}
println("")
}
// Output:
// hello hello hello
================================================
FILE: _test/a32.go
================================================
package main
import "fmt"
type T struct{}
var a = []T{{}}
func main() {
fmt.Println(a)
}
// Output:
// [{}]
================================================
FILE: _test/a33.go
================================================
package main
import "fmt"
func main() {
a := [...]int{1, 2, 3}
b := a
fmt.Println(b)
}
// Output:
// [1 2 3]
================================================
FILE: _test/a34.go
================================================
package main
import "fmt"
func main() {
a := [...]int{1, 2, 3}
var b [3]int = a
fmt.Println(b)
}
// Output:
// [1 2 3]
================================================
FILE: _test/a35.go
================================================
package main
import "fmt"
func main() {
a := [...]int{1, 2, 3}
b := a
b[0] = -1
fmt.Println(a)
}
// Output:
// [1 2 3]
================================================
FILE: _test/a36.go
================================================
package main
import "fmt"
func main() {
a := [...]int{1, 2, 3}
var b [3]int = a
b[0] = -1
fmt.Println(a)
}
// Output:
// [1 2 3]
================================================
FILE: _test/a37.go
================================================
package main
import "fmt"
func main() {
a := [...]int{1, 2, 3}
fmt.Println(a)
}
// Output:
// [1 2 3]
================================================
FILE: _test/a38.go
================================================
package main
import "fmt"
func main() {
a := [...]byte{}
fmt.Printf("%T\n", a)
}
// Output:
// [0]uint8
================================================
FILE: _test/a39.go
================================================
package main
import "fmt"
func main() {
a := [...]byte{}
b := a
fmt.Printf("%T %T\n", a, b)
}
// Output:
// [0]uint8 [0]uint8
================================================
FILE: _test/a4.go
================================================
package main
import "fmt"
func main() {
a := [6]int{1, 2, 3, 4, 5, 6}
fmt.Println(a[2:4])
}
// Output:
// [3 4]
================================================
FILE: _test/a40.go
================================================
package main
import "fmt"
type rule uint8
const (
r0 rule = iota
r1
r2
)
var a = [...]int{
r0: 1,
r1: 12,
}
func main() {
fmt.Println(a)
}
// Output:
// [1 12]
================================================
FILE: _test/a41.go
================================================
package main
var a = [...]bool{true, true}
func main() {
println(a[0] && true)
}
// Output:
// true
================================================
FILE: _test/a42.go
================================================
package main
import (
"encoding/binary"
"fmt"
)
func main() {
var b [8]byte
binary.LittleEndian.PutUint64(b[:], uint64(1))
fmt.Println(b)
}
// Output:
// [1 0 0 0 0 0 0 0]
================================================
FILE: _test/a43.go
================================================
package main
import "fmt"
type T [l1 + l2]int
const (
l1 = 2
l2 = 3
)
func main() {
fmt.Println(T{})
}
// Output:
// [0 0 0 0 0]
================================================
FILE: _test/a44.go
================================================
package main
var a = [max]int{}
const max = 32
func main() {
println(len(a))
}
// Output:
// 32
================================================
FILE: _test/a5.go
================================================
package main
import "fmt"
func main() {
a := [6]int{1, 2, 3, 4, 5, 6}
fmt.Println(a[:4])
}
// Output:
// [1 2 3 4]
================================================
FILE: _test/a6.go
================================================
package main
import "fmt"
func main() {
a := [6]int{1, 2, 3, 4, 5, 6}
fmt.Println(a[:])
}
// Output:
// [1 2 3 4 5 6]
================================================
FILE: _test/a7.go
================================================
package main
import "fmt"
func main() {
a := [6]int{1, 2, 3, 4, 5, 6}
fmt.Println(len(a))
}
// Output:
// 6
================================================
FILE: _test/a8.go
================================================
package main
import "fmt"
func main() {
//a := []int{1, 2}
a := make([]int, 2)
//a[0] = 1
//a[1] = 2
fmt.Println(a)
}
// Output:
// [0 0]
================================================
FILE: _test/a9.go
================================================
package main
import "fmt"
//var (
// samples = []int{}
// b = 1
//)
func main() {
var samples = []int{}
samples = append(samples, 1)
fmt.Println(samples)
}
// Output:
// [1]
================================================
FILE: _test/add0.go
================================================
package main
func main() {
var a interface{} = 2 + 5
println(a.(int))
}
// Output:
// 7
================================================
FILE: _test/add1.go
================================================
package main
func main() {
b := 2 // int
var c int = 5 + b
println(c)
var d int32 = 6 + int32(b)
println(d)
var a interface{} = 7 + b
println(a.(int))
var e int32 = 2
var f interface{} = 8 + e
println(f.(int32))
a = 9 + e
println(a.(int32))
var g int = 2
a = 10 + g
println(a.(int))
// multiple assignment
var foo interface{}
foo, a = "hello", 11 + g
println(a.(int))
println(foo.(string))
}
// Output:
// 7
// 8
// 9
// 10
// 11
// 12
// 13
// hello
================================================
FILE: _test/add2.go
================================================
package main
type iface interface{}
func main() {
b := 2
var a iface = 5 + b
println(a.(int))
}
// Output:
// 7
================================================
FILE: _test/addr0.go
================================================
package main
import (
"fmt"
"net/http"
)
type extendedRequest struct {
http.Request
Data string
}
func main() {
r := extendedRequest{}
req := &r.Request
fmt.Printf("%T\n", r.Request)
fmt.Printf("%T\n", req)
}
// Output:
// http.Request
// *http.Request
================================================
FILE: _test/addr1.go
================================================
package main
import "fmt"
type T struct {
A int
B int
}
func main() {
a := &[]T{
{1, 2},
{3, 4},
}
fmt.Println("a:", a)
x := &(*a)[1:][0]
fmt.Println("x:", x)
}
// Output:
// a: &[{1 2} {3 4}]
// x: &{3 4}
================================================
FILE: _test/addr2.go
================================================
package main
import (
"encoding/xml"
"errors"
"fmt"
)
type Email struct {
Where string `xml:"where,attr"`
Addr string
}
func f(r interface{}) error {
return withPointerAsInterface(&r)
}
func withPointerAsInterface(r interface{}) error {
_ = (r).(*interface{})
rp, ok := (r).(*interface{})
if !ok {
return errors.New("cannot assert to *interface{}")
}
em, ok := (*rp).(*Email)
if !ok {
return errors.New("cannot assert to *Email")
}
em.Where = "work"
em.Addr = "bob@work.com"
return nil
}
func ff(s string, r interface{}) error {
return xml.Unmarshal([]byte(s), r)
}
func fff(s string, r interface{}) error {
return xml.Unmarshal([]byte(s), &r)
}
func main() {
data := `
<Email where='work'>
<Addr>bob@work.com</Addr>
</Email>
`
v := Email{}
err := f(&v)
fmt.Println(err, v)
vv := Email{}
err = ff(data, &vv)
fmt.Println(err, vv)
vvv := Email{}
err = ff(data, &vvv)
fmt.Println(err, vvv)
}
// Output:
// <nil> {work bob@work.com}
// <nil> {work bob@work.com}
// <nil> {work bob@work.com}
================================================
FILE: _test/addr3.go
================================================
package main
import (
"fmt"
)
func main() {
var a interface{}
a = 2
fmt.Println(a)
var b *interface{}
b = &a
fmt.Println(*b)
var c **interface{}
c = &b
fmt.Println(**c)
}
// Output:
// 2
// 2
// 2
================================================
FILE: _test/addr4.go
================================================
package main
import (
"encoding/json"
"fmt"
"log"
)
const jsonData = `[
"foo",
"bar"
]`
const jsonData2 = `[
{"foo": "foo"},
{"bar": "bar"}
]`
const jsonData3 = `{
"foo": "foo",
"bar": "bar"
}`
func fromSlice() {
var a []interface{}
var c, d interface{}
c = 2
d = 3
a = []interface{}{c, d}
if err := json.Unmarshal([]byte(jsonData), &a); err != nil {
log.Fatalln(err)
}
for k, v := range a {
fmt.Println(k, ":", v)
}
}
func fromEmpty() {
var a interface{}
var c, d interface{}
c = 2
d = 3
a = []interface{}{c, d}
if err := json.Unmarshal([]byte(jsonData), &a); err != nil {
log.Fatalln(err)
}
b := a.([]interface{})
for k, v := range b {
fmt.Println(k, ":", v)
}
}
func sliceOfObjects() {
var a interface{}
if err := json.Unmarshal([]byte(jsonData2), &a); err != nil {
log.Fatalln(err)
}
b := a.([]interface{})
for k, v := range b {
fmt.Println(k, ":", v)
}
}
func intoMap() {
var a interface{}
if err := json.Unmarshal([]byte(jsonData3), &a); err != nil {
log.Fatalln(err)
}
b := a.(map[string]interface{})
seenFoo := false
for k, v := range b {
vv := v.(string)
if vv != "foo" {
if seenFoo {
fmt.Println(k, ":", vv)
break
}
kk := k
vvv := vv
defer fmt.Println(kk, ":", vvv)
continue
}
seenFoo = true
fmt.Println(k, ":", vv)
}
}
func main() {
fromSlice()
fromEmpty()
sliceOfObjects()
intoMap()
}
// Output:
// 0 : foo
// 1 : bar
// 0 : foo
// 1 : bar
// 0 : map[foo:foo]
// 1 : map[bar:bar]
// foo : foo
// bar : bar
================================================
FILE: _test/addr5.go
================================================
package main
import (
"encoding/json"
"fmt"
"net/url"
)
func main() {
body := []byte(`{
"BODY_1": "VALUE_1",
"BODY_2": "VALUE_2",
"BODY_3": null,
"BODY_4": {
"BODY_1": "VALUE_1",
"BODY_2": "VALUE_2",
"BODY_3": null
},
"BODY_5": [
"VALUE_1",
"VALUE_2",
"VALUE_3"
]
}`)
values := url.Values{}
var rawData map[string]interface{}
err := json.Unmarshal(body, &rawData)
if err != nil {
fmt.Println("can't parse body")
return
}
for key, val := range rawData {
switch val.(type) {
case string, bool, float64:
values.Add(key, fmt.Sprint(val))
case nil:
values.Add(key, "")
case map[string]interface{}, []interface{}:
jsonVal, err := json.Marshal(val)
if err != nil {
fmt.Println("can't encode json")
return
}
values.Add(key, string(jsonVal))
}
}
fmt.Println(values.Get("BODY_1"))
fmt.Println(values.Get("BODY_2"))
fmt.Println(values.Get("BODY_3"))
fmt.Println(values.Get("BODY_4"))
fmt.Println(values.Get("BODY_5"))
}
// Output:
// VALUE_1
// VALUE_2
//
// {"BODY_1":"VALUE_1","BODY_2":"VALUE_2","BODY_3":null}
// ["VALUE_1","VALUE_2","VALUE_3"]
================================================
FILE: _test/and.go
================================================
package main
func main() {
a, b := 1, 2
if f1() && f2() {
println(a, b)
}
}
func f1() bool {
println("f1")
//return true
return 0 == 0
}
func f2() bool {
println("f2")
//return false
return 1 == 0
}
// Output:
// f1
// f2
================================================
FILE: _test/and0.go
================================================
package main
func main() {
a, b := 1, 2
if f2() && f1() {
println(a, b)
}
}
func f1() bool {
println("f1")
return true
}
func f2() bool {
println("f2")
return false
}
// Output:
// f2
================================================
FILE: _test/and1.go
================================================
package main
func main() {
a := f2() && f1()
println(a)
}
func f1() bool {
println("f1")
return true
}
func f2() bool {
println("f2")
return false
}
// Output:
// f2
// false
================================================
FILE: _test/and2.go
================================================
package main
func f() bool {
println("in f")
return true
}
func main() {
var (
cl = 0
ct = "some text"
ce = ""
)
if ce == "" && (cl == 0 || cl > 1000) && (ct == "" || f()) {
println("ok")
}
}
// Output:
// in f
// ok
================================================
FILE: _test/and3.go
================================================
package main
var a = true && true
func main() {
println(a)
}
// Output:
// true
================================================
FILE: _test/append0.go
================================================
package main
import "fmt"
func f(a []int, b int) interface{} { return append(a, b) }
func main() {
a := []int{1, 2}
r := f(a, 3)
fmt.Println(r.([]int))
}
// Output:
// [1 2 3]
================================================
FILE: _test/append1.go
================================================
package main
import (
"bufio"
"bytes"
)
func main() {
s := bufio.NewScanner(bytes.NewReader([]byte("Hello\nTest\nLine3")))
s.Scan()
println(string(append(s.Bytes(), []byte(" World")...)))
}
// Output:
// Hello World
================================================
FILE: _test/append2.go
================================================
package main
import (
"bufio"
"bytes"
)
func main() {
s := bufio.NewScanner(bytes.NewReader([]byte("Hello\nTest\nLine3")))
s.Scan()
println(string(append(s.Bytes(), " World"...)))
}
// Output:
// Hello World
================================================
FILE: _test/append3.go
================================================
package main
import "fmt"
func main() {
a := []int{1, 2}
b := [2]int{3, 4}
fmt.Println(append(a, b[:]...))
fmt.Println(append(a, []int{5, 6}...))
}
// Output:
// [1 2 3 4]
// [1 2 5 6]
================================================
FILE: _test/append4.go
================================================
package main
import "fmt"
func main() {
a := []*int{}
a = append(a, nil)
fmt.Println(a)
}
// Output:
// [<nil>]
================================================
FILE: _test/assert0.go
================================================
package main
import (
"fmt"
"time"
)
type MyWriter interface {
Write(p []byte) (i int, err error)
}
type DummyWriter interface {
Write(p []byte) (i int, err error)
}
type TestStruct struct{}
func (t TestStruct) Write(p []byte) (n int, err error) {
return len(p), nil
}
func usesWriter(w MyWriter) {
n, _ := w.Write([]byte("hello world"))
fmt.Println(n)
}
type MyStringer interface {
String() string
}
type DummyStringer interface {
String() string
}
func usesStringer(s MyStringer) {
fmt.Println(s.String())
}
func main() {
// TODO(mpl): restore when we can deal with empty interface.
// var t interface{}
var t DummyWriter
t = TestStruct{}
var tw MyWriter
var ok bool
tw, ok = t.(MyWriter)
if !ok {
fmt.Println("TestStruct does not implement MyWriter")
} else {
fmt.Println("TestStruct implements MyWriter")
usesWriter(tw)
}
n, _ := t.(MyWriter).Write([]byte("hello world"))
fmt.Println(n)
// not redundant with the above, because it goes through a slightly different code path.
if _, ok := t.(MyWriter); !ok {
fmt.Println("TestStruct does not implement MyWriter")
return
} else {
fmt.Println("TestStruct implements MyWriter")
}
// TODO(mpl): restore
/*
t = 42
foo, ok := t.(MyWriter)
if !ok {
fmt.Println("42 does not implement MyWriter")
} else {
fmt.Println("42 implements MyWriter")
}
_ = foo
if _, ok := t.(MyWriter); !ok {
fmt.Println("42 does not implement MyWriter")
} else {
fmt.Println("42 implements MyWriter")
}
*/
// var tt interface{}
var tt DummyStringer
tt = time.Nanosecond
var myD MyStringer
myD, ok = tt.(MyStringer)
if !ok {
fmt.Println("time.Nanosecond does not implement MyStringer")
} else {
fmt.Println("time.Nanosecond implements MyStringer")
usesStringer(myD)
}
fmt.Println(tt.(MyStringer).String())
if _, ok := tt.(MyStringer); !ok {
fmt.Println("time.Nanosecond does not implement MyStringer")
} else {
fmt.Println("time.Nanosecond implements MyStringer")
}
// TODO(mpl): restore
/*
tt = 42
bar, ok := tt.(MyStringer)
if !ok {
fmt.Println("42 does not implement MyStringer")
} else {
fmt.Println("42 implements MyStringer")
}
_ = bar
if _, ok := tt.(MyStringer); !ok {
fmt.Println("42 does not implement MyStringer")
} else {
fmt.Println("42 implements MyStringer")
}
*/
}
// Output:
// TestStruct implements MyWriter
// 11
// 11
// TestStruct implements MyWriter
// time.Nanosecond implements MyStringer
// 1ns
// 1ns
// time.Nanosecond implements MyStringer
================================================
FILE: _test/assert1.go
================================================
package main
import (
"fmt"
"reflect"
"time"
)
type TestStruct struct{}
func (t TestStruct) String() string {
return "hello world"
}
type DummyStringer interface{
String() string
}
func main() {
aType := reflect.TypeOf((*fmt.Stringer)(nil)).Elem()
var t interface{}
t = time.Nanosecond
s, ok := t.(fmt.Stringer)
if !ok {
fmt.Println("time.Nanosecond does not implement fmt.Stringer")
return
}
fmt.Println(s.String())
fmt.Println(t.(fmt.Stringer).String())
bType := reflect.TypeOf(time.Nanosecond)
fmt.Println(bType.Implements(aType))
// not redundant with the above, because it goes through a slightly different code path.
if _, ok := t.(fmt.Stringer); !ok {
fmt.Println("time.Nanosecond does not implement fmt.Stringer")
return
} else {
fmt.Println("time.Nanosecond implements fmt.Stringer")
}
t = 42
foo, ok := t.(fmt.Stringer)
if !ok {
fmt.Println("42 does not implement fmt.Stringer")
} else {
fmt.Println("42 implements fmt.Stringer")
return
}
_ = foo
if _, ok := t.(fmt.Stringer); !ok {
fmt.Println("42 does not implement fmt.Stringer")
} else {
fmt.Println("42 implements fmt.Stringer")
return
}
// TODO(mpl): restore when fixed
// var tt interface{}
var tt DummyStringer
tt = TestStruct{}
ss, ok := tt.(fmt.Stringer)
if !ok {
fmt.Println("TestStuct does not implement fmt.Stringer")
return
}
fmt.Println(ss.String())
fmt.Println(tt.(fmt.Stringer).String())
if _, ok := tt.(fmt.Stringer); !ok {
fmt.Println("TestStuct does not implement fmt.Stringer")
return
} else {
fmt.Println("TestStuct implements fmt.Stringer")
}
}
// Output:
// 1ns
// 1ns
// true
// time.Nanosecond implements fmt.Stringer
// 42 does not implement fmt.Stringer
// 42 does not implement fmt.Stringer
// hello world
// hello world
// TestStuct implements fmt.Stringer
================================================
FILE: _test/assert2.go
================================================
package main
import (
"strings"
"sync"
)
// Define an interface of stringBuilder that is compatible with
// strings.Builder(go 1.10) and bytes.Buffer(< go 1.10).
type stringBuilder interface {
WriteRune(r rune) (n int, err error)
WriteString(s string) (int, error)
Reset()
Grow(n int)
String() string
}
var builderPool = sync.Pool{New: func() interface{} {
return newStringBuilder()
}}
func newStringBuilder() stringBuilder {
return &strings.Builder{}
}
func main() {
i := builderPool.Get()
sb := i.(stringBuilder)
_, _ = sb.WriteString("hello")
println(sb.String())
builderPool.Put(i)
}
// Output:
// hello
================================================
FILE: _test/assert3.go
================================================
package main
import "crypto/rsa"
func main() {
var pKey interface{} = &rsa.PublicKey{}
if _, ok := pKey.(*rsa.PublicKey); ok {
println("ok")
} else {
println("nok")
}
}
// Output:
// ok
================================================
FILE: _test/assert4.go
================================================
package main
var cc interface{} = 2
var dd = cc.(int)
func main() {
println(dd)
}
// Output:
// 2
================================================
FILE: _test/assign.go
================================================
package main
func main() {
a, b := 1, 2 // Multiple assign
println(a, b)
}
// Output:
// 1 2
================================================
FILE: _test/assign0.go
================================================
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
http.DefaultClient.Timeout = time.Second * 10
fmt.Println(http.DefaultClient)
http.DefaultClient = &http.Client{}
fmt.Println(http.DefaultClient)
}
// Output:
// &{<nil> <nil> <nil> 10s}
// &{<nil> <nil> <nil> 0s}
================================================
FILE: _test/assign1.go
================================================
package main
import "fmt"
func main() {
var buf []byte
buf = nil
fmt.Println(buf)
}
// Output:
// []
================================================
FILE: _test/assign10.go
================================================
package main
func main() {
var a uint
a = 1 + 2
println(a)
}
// Output:
// 3
================================================
FILE: _test/assign11.go
================================================
package main
import "fmt"
func main() {
_, _, _ = fmt.Println("test")
}
// Error:
// 6:2: assignment mismatch: 3 variables but fmt.Println returns 2 values
================================================
FILE: _test/assign12.go
================================================
package main
import "fmt"
func main() {
a, b, c := fmt.Println("test")
println(a, b, c)
}
// Error:
// 6:2: assignment mismatch: 3 variables but fmt.Println returns 2 values
================================================
FILE: _test/assign13.go
================================================
package main
import "fmt"
func getStr() string {
return "test"
}
func main() {
m := make(map[string]string, 0)
m["a"] = fmt.Sprintf("%v", 0.1)
m["b"] = string(fmt.Sprintf("%v", 0.1))
m["c"] = getStr()
fmt.Println(m)
}
// Output:
// map[a:0.1 b:0.1 c:test]
================================================
FILE: _test/assign14.go
================================================
package main
var optionsG map[string]string = nil
var roundG = 30
func main() {
dummy := roundG
roundG = dummy + 1
println(roundG)
println(optionsG == nil)
}
// Output:
// 31
// true
================================================
FILE: _test/assign15.go
================================================
package main
func main() {
var c chan<- struct{} = make(chan struct{})
var d <-chan struct{} = c
_ = d
}
// Error:
// _test/assign15.go:5:26: cannot use type chan<- struct {} as type <-chan struct {} in assignment
================================================
FILE: _test/assign16.go
================================================
package main
type H struct {
bits uint
}
func main() {
h := &H{8}
var x uint = (1 << h.bits) >> 6
println(x)
}
// Output:
// 4
================================================
FILE: _test/assign17.go
================================================
package main
func main() {
s := make([]map[string]string, 0)
m := make(map[string]string)
m["m1"] = "m1"
m["m2"] = "m2"
s = append(s, m)
tmpStr := "start"
println(tmpStr)
for _, v := range s {
tmpStr, ok := v["m1"]
println(tmpStr, ok)
}
println(tmpStr)
}
// Output:
// start
// m1 true
// start
================================================
FILE: _test/assign18.go
================================================
package main
func main() {
s := make([]map[string]string, 0)
m := make(map[string]string)
m["m1"] = "m1"
m["m2"] = "m2"
s = append(s, m)
tmpStr := "start"
println(tmpStr)
for _, v := range s {
tmpStr, _ := v["m1"]
println(tmpStr)
}
println(tmpStr)
}
// Output:
// start
// m1
// start
================================================
FILE: _test/assign19.go
================================================
package main
func main() {
a, b, c := 1, 2
_, _, _ = a, b, c
}
// Error:
// _test/assign19.go:4:2: cannot assign 2 values to 3 variables
================================================
FILE: _test/assign2.go
================================================
package main
func main() {
r := uint32(2000000000)
r = hello(r)
println(r)
}
func hello(r uint32) uint32 { return r + 1 }
// Output:
// 2000000001
================================================
FILE: _test/assign3.go
================================================
package main
func main() {
a, b := 1, 2
println(a, b)
a, b = b, a
println(a, b)
}
// Output:
// 1 2
// 2 1
================================================
FILE: _test/assign4.go
================================================
package main
func main() {
a, b, c := 1, 2, 3
println(a, b, c)
a, b, c = c, a, b
println(a, b, c)
}
// Output:
// 1 2 3
// 3 1 2
================================================
FILE: _test/assign5.go
================================================
package main
import "fmt"
func main() {
t := []int{1, 2}
fmt.Println(t)
t[0], t[1] = t[1], t[0]
fmt.Println(t)
}
// Output:
// [1 2]
// [2 1]
================================================
FILE: _test/assign6.go
================================================
package main
import "fmt"
func main() {
t := map[string]int{"a": 1, "b": 2}
fmt.Println(t["a"], t["b"])
t["a"], t["b"] = t["b"], t["a"]
fmt.Println(t["a"], t["b"])
}
// Output:
// 1 2
// 2 1
================================================
FILE: _test/assign7.go
================================================
package main
import "fmt"
func main() {
a := 3
t := map[string]int{"a": 1, "b": 2}
s := []int{4, 5}
fmt.Println(a, t["b"], s)
a, t["b"], s[1] = t["b"], s[1], a
fmt.Println(a, t["b"], s)
}
// Output:
// 3 2 [4 5]
// 2 5 [4 3]
================================================
FILE: _test/assign8.go
================================================
package main
func main() {
_ = 1
println(1)
}
// Output:
// 1
================================================
FILE: _test/assign9.go
================================================
package main
type foo func(b int)
func boo(b int) { println("boo", b) }
func main() {
var f foo
f = boo
f(4)
}
// Output:
// boo 4
================================================
FILE: _test/b1/foo/foo.go
================================================
package foo
import bar "github.com/traefik/yaegi/_test/b2/foo"
var Desc = "in b1/foo"
var Desc2 = Desc + bar.Desc
================================================
FILE: _test/b2/foo/foo.go
================================================
package foo
var Desc = "in b2/foo"
================================================
FILE: _test/bad0.go
================================================
println("Hello")
// Error:
// 1:1: expected 'package', found println
================================================
FILE: _test/baz-bat/baz-bat.go
================================================
package baz
var Name = "baz-bat"
================================================
FILE: _test/bin.go
================================================
package main
import "fmt"
func main() {
f := fmt.Println
f("Hello")
}
// Output:
// Hello
================================================
FILE: _test/bin0.go
================================================
package main
import "strings"
func main() {
a := strings.SplitN("truc machin", " ", 2)
println(a[0])
}
// Output:
// truc
================================================
FILE: _test/bin1.go
================================================
package main
import (
"crypto/sha1"
"fmt"
)
func main() {
d := sha1.New()
d.Write([]byte("password"))
a := d.Sum(nil)
fmt.Println(a)
}
// Output:
// [91 170 97 228 201 185 63 63 6 130 37 11 108 248 51 27 126 230 143 216]
================================================
FILE: _test/bin2.go
================================================
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Abs(-5))
}
// Output:
// 5
================================================
FILE: _test/bin3.go
================================================
package main
import "fmt"
func main() {
str := "part1"
str += fmt.Sprintf("%s", "part2")
fmt.Println(str)
}
// Output:
// part1part2
================================================
FILE: _test/bin4.go
================================================
package main
import (
"fmt"
"strings"
)
func Bar(s string) bool {
a := strings.HasPrefix("fas", "f")
b := strings.HasPrefix("aaaaa", "a")
a_and_b := strings.HasPrefix("fas", "f") && strings.HasPrefix("aaaaa", "a")
fmt.Println(a, b, a && b, a_and_b)
return a && b
}
func main() {
println(Bar("kung"))
}
================================================
FILE: _test/bin5.go
================================================
package main
import (
"fmt"
"net"
)
func main() {
addr := net.TCPAddr{IP: net.IPv4(1, 1, 1, 1), Port: 80}
var s fmt.Stringer = &addr
fmt.Println(s.String())
}
// Output:
// 1.1.1.1:80
================================================
FILE: _test/binstruct_ptr_map0.go
================================================
package main
import (
"fmt"
"image"
)
func main() {
v := map[string]*image.Point{
"foo": {X: 3, Y: 2},
"bar": {X: 4, Y: 5},
}
fmt.Println(v["foo"], v["bar"])
}
// Output:
// (3,2) (4,5)
================================================
FILE: _test/binstruct_ptr_slice0.go
================================================
package main
import (
"fmt"
"image"
)
func main() {
v := []*image.Point{
{X: 3, Y: 2},
{X: 4, Y: 5},
}
fmt.Println(v)
}
// Output:
// [(3,2) (4,5)]
================================================
FILE: _test/binstruct_slice0.go
================================================
package main
import (
"fmt"
"image"
)
func main() {
v := []image.Point{
{X: 3, Y: 2},
}
fmt.Println(v)
}
// Output:
// [(3,2)]
================================================
FILE: _test/bltn.go
================================================
package main
func main() {
println("Hello")
}
// Output:
// Hello
================================================
FILE: _test/bltn0.go
================================================
package main
func main() {
f := println
f("Hello")
}
// Error:
// 4:7: use of builtin println not in function call
================================================
FILE: _test/bool.go
================================================
package main
import "fmt"
func main() {
fmt.Println(false, true)
}
// Output:
// false true
================================================
FILE: _test/bool0.go
================================================
package main
import "fmt"
func main() {
fmt.Println(true)
}
// Output:
// true
================================================
FILE: _test/bool1.go
================================================
package main
type T struct {
v bool
}
func main() {
a := T{}
if a.v {
println("ok")
} else {
println("nok")
}
}
// Output:
// nok
================================================
FILE: _test/bool2.go
================================================
package main
type T struct {
v bool
}
func main() {
a := &T{}
if a.v {
println("ok")
} else {
println("nok")
}
}
// Output:
// nok
================================================
FILE: _test/bool3.go
================================================
package main
func main() {
m := map[int]bool{0: false, 1: true}
if m[0] {
println(0)
} else {
println(1)
}
}
// Output:
// 1
================================================
FILE: _test/bool4.go
================================================
package main
func main() {
m := []bool{false, true}
if m[0] {
println(0)
} else {
println(1)
}
}
// Output:
// 1
================================================
FILE: _test/bool5.go
================================================
package main
func main() {
var b bool
m := &b
if *m {
println(0)
} else {
println(1)
}
}
// Output:
// 1
================================================
FILE: _test/break0.go
================================================
package main
func main() {
n := 2
m := 2
foo := true
OuterLoop:
println("Boo")
for i := 0; i < n; i++ {
println("I: ", i)
for j := 0; j < m; j++ {
switch foo {
case true:
println(foo)
break OuterLoop
case false:
println(foo)
}
}
}
}
// Error:
// 15:5: invalid break label OuterLoop
================================================
FILE: _test/break1.go
================================================
package main
func main() {
n := 2
m := 2
foo := true
OuterLoop:
for i := 0; i < n; i++ {
println("I: ", i)
for j := 0; j < m; j++ {
switch foo {
case true:
println(foo)
break OuterLoop
case false:
println(foo)
}
}
}
}
// Output:
// I: 0
// true
================================================
FILE: _test/break2.go
================================================
package main
func main() {
n := 2
m := 2
foo := true
OuterLoop:
for i := 0; i < n; i++ {
println("I: ", i)
for j := 0; j < m; j++ {
switch foo {
case true:
println(foo)
break OuterLoop
case false:
println(foo)
continue OuterLoop
}
}
}
}
// Output:
// I: 0
// true
================================================
FILE: _test/break3.go
================================================
package main
func main() {
n := 2
m := 2
foo := true
goto OuterLoop
println("Boo")
OuterLoop:
for i := 0; i < n; i++ {
println("I: ", i)
for j := 0; j < m; j++ {
switch foo {
case true:
println(foo)
break OuterLoop
case false:
println(foo)
goto OuterLoop
}
}
}
}
// Output:
// I: 0
// true
================================================
FILE: _test/c1/c1.go
================================================
package c1
import "github.com/traefik/yaegi/_test/c2"
var C1 = c2.C2 + "x"
================================================
FILE: _test/c2/c2.go
================================================
package c2
import "github.com/traefik/yaegi/_test/c1"
var C2 = c1.C1 + "Y"
================================================
FILE: _test/cap0.go
================================================
package main
func f(a []int) interface{} {
return cap(a)
}
func g(a []int) int {
return cap(a)
}
func main() {
a := []int{1, 2}
println(g(a))
println(f(a).(int))
}
// Output:
// 2
// 2
================================================
FILE: _test/chan0.go
================================================
package main
type Channel chan string
func send(c Channel) { c <- "ping" }
func main() {
channel := make(Channel)
go send(channel)
msg := <-channel
println(msg)
}
// Output:
// ping
================================================
FILE: _test/chan1.go
================================================
package main
func send(c chan<- string) { c <- "ping" }
func main() {
channel := make(chan string)
go send(channel)
msg := <-channel
println(msg)
}
// Output:
// ping
================================================
FILE: _test/chan10.go
================================================
package main
import "time"
func main() {
var tick <-chan time.Time = time.Tick(time.Millisecond)
_ = tick
println("success")
}
// Output:
// success
================================================
FILE: _test/chan2.go
================================================
package main
import "fmt"
func main() {
messages := make(chan string)
go func() { messages <- "ping" }()
msg := <-messages
fmt.Println(msg)
}
// Output:
// ping
================================================
FILE: _test/chan3.go
================================================
package main
func send(c chan<- int32) { c <- 123 }
func main() {
channel := make(chan int32)
go send(channel)
msg := <-channel
println(msg)
}
// Output:
// 123
================================================
FILE: _test/chan4.go
================================================
package main
func send(c chan<- bool) { c <- false }
func main() {
channel := make(chan bool)
go send(channel)
if <-channel {
println("ok")
} else {
println("nok")
}
}
// Output:
// nok
================================================
FILE: _test/chan5.go
================================================
package main
import "time"
func main() {
// For our example we'll select across two channels.
c1 := make(chan string)
c2 := make(chan string)
// Each channel will receive a value after some amount
// of time, to simulate e.g. blocking RPC operations
// executing in concurrent goroutines.
go func() {
//time.Sleep(1 * time.Second)
time.Sleep(1e9)
c1 <- "one"
}()
go func() {
time.Sleep(2e9)
c2 <- "two"
}()
msg1 := <-c1
println(msg1)
msg2 := <-c2
println(msg2)
}
================================================
FILE: _test/chan6.go
================================================
package main
func send(c chan<- int32) { c <- 123 }
func main() {
channel := make(chan int32)
go send(channel)
msg, ok := <-channel
println(msg, ok)
}
================================================
FILE: _test/chan7.go
================================================
package main
import "fmt"
func main() {
queue := make(chan string, 2)
queue <- "one"
queue <- "two"
close(queue)
for elem := range queue {
fmt.Println(elem)
}
}
// Output:
// one
// two
================================================
FILE: _test/chan8.go
================================================
package main
func main() {
messages := make(chan bool)
go func() { messages <- true }()
println(<-messages && true)
}
// Output:
// true
================================================
FILE: _test/chan9.go
================================================
package main
type Channel chan string
type T struct {
Channel
}
func send(c Channel) { c <- "ping" }
func main() {
t := &T{}
t.Channel = make(Channel)
go send(t.Channel)
msg := <-t.Channel
println(msg)
}
// Output:
// ping
================================================
FILE: _test/cli1.go
================================================
package main
import (
"fmt"
"io"
"log"
"net"
"net/http"
)
func client(uri string) {
resp, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
func server(ln net.Listener, ready chan bool) {
http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
var r1 *http.Request = r
fmt.Fprintln(w, "Welcome to my website!", r1.RequestURI)
})
go http.Serve(ln, nil)
ready <- true
}
func main() {
ln, err := net.Listen("tcp", "localhost:0")
if err != nil {
log.Fatal(err)
}
defer ln.Close()
ready := make(chan bool)
go server(ln, ready)
<-ready
client(fmt.Sprintf("http://%s/hello", ln.Addr().String()))
http.DefaultServeMux = &http.ServeMux{}
}
// Output:
// Welcome to my website! /hello
================================================
FILE: _test/cli2.go
================================================
package main
import (
"fmt"
"io"
"log"
"net"
"net/http"
)
type T struct {
ln net.Listener
}
func (t *T) Close() {
t.ln.Close()
}
func client(uri string) {
resp, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
func server(ln net.Listener, ready chan bool) {
http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
var r1 *http.Request = r
fmt.Fprintln(w, "Welcome to my website!", r1.RequestURI)
})
go http.Serve(ln, nil)
ready <- true
}
func main() {
ln, err := net.Listen("tcp", "localhost:0")
t := &T{ln}
if err != nil {
log.Fatal(err)
}
defer t.Close()
// defer ln.Close()
ready := make(chan bool)
go server(ln, ready)
<-ready
client(fmt.Sprintf("http://%s/hello", ln.Addr().String()))
http.DefaultServeMux = &http.ServeMux{}
}
// Output:
// Welcome to my website! /hello
================================================
FILE: _test/cli3.go
================================================
package main
import (
"fmt"
"io"
"log"
"net/http"
"net/http/httptest"
)
func client(uri string) {
resp, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Welcome to my website!")
})
server := httptest.NewServer(mux)
defer server.Close()
client(server.URL)
}
// Output:
// Welcome to my website!
================================================
FILE: _test/cli4.go
================================================
package main
import (
"fmt"
"io"
"log"
"net/http"
"net/http/httptest"
)
type mw1 struct {
next http.Handler
}
func (m *mw1) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
m.next.ServeHTTP(rw, rq)
}
type mw0 struct{}
func (m *mw0) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Welcome to my website!")
}
func main() {
m0 := &mw0{}
m1 := &mw1{m0}
mux := http.NewServeMux()
mux.HandleFunc("/", m1.ServeHTTP)
server := httptest.NewServer(mux)
defer server.Close()
client(server.URL)
}
func client(uri string) {
resp, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
// Output:
// Welcome to my website!
================================================
FILE: _test/cli5.go
================================================
package main
import (
"fmt"
"io"
"log"
"net/http"
"net/http/httptest"
)
type mw1 struct {
next http.Handler
}
func (m *mw1) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
m.next.ServeHTTP(rw, rq)
}
type mw0 struct{}
func (m *mw0) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Welcome to my website!")
}
func main() {
m0 := &mw0{}
m1 := &mw1{next: m0}
mux := http.NewServeMux()
mux.HandleFunc("/", m1.ServeHTTP)
server := httptest.NewServer(mux)
defer server.Close()
client(server.URL)
}
func client(uri string) {
resp, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
// Output:
// Welcome to my website!
================================================
FILE: _test/cli6.go
================================================
package main
import (
"fmt"
"io"
"log"
"net/http"
"net/http/httptest"
)
type T struct {
http.ResponseWriter
}
type mw1 struct {
next http.Handler
}
func (m *mw1) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
t := &T{
ResponseWriter: rw,
}
x := t.Header()
fmt.Fprint(rw, "Welcome to my website!", x)
}
func main() {
m1 := &mw1{}
mux := http.NewServeMux()
mux.HandleFunc("/", m1.ServeHTTP)
server := httptest.NewServer(mux)
defer server.Close()
client(server.URL)
}
func client(uri string) {
resp, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
// Output:
// Welcome to my website!map[]
================================================
FILE: _test/cli7.go
================================================
package main
import (
"fmt"
"io"
"log"
"net/http"
"net/http/httptest"
)
type T struct {
http.ResponseWriter
}
type mw1 struct {
}
var obj = map[string]interface{}{}
func (m *mw1) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
t := &T{
ResponseWriter: rw,
}
x := t.Header()
i := obj["m1"].(*mw1)
fmt.Fprint(rw, "Welcome to my website!", x, i)
}
func main() {
m1 := &mw1{}
obj["m1"] = m1
mux := http.NewServeMux()
mux.HandleFunc("/", m1.ServeHTTP)
server := httptest.NewServer(mux)
defer server.Close()
client(server.URL)
}
func client(uri string) {
resp, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
// Output:
// Welcome to my website!map[] &{}
================================================
FILE: _test/cli8.go
================================================
package main
import (
"net/http"
"net/http/httptest"
)
type T struct {
name string
next http.Handler
}
func (t *T) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
println("in T.ServeHTTP")
if t.next != nil {
t.next.ServeHTTP(rw, req)
}
}
func New(name string, next http.Handler) (http.Handler, error) { return &T{name, next}, nil }
func main() {
next := func(rw http.ResponseWriter, req *http.Request) {
println("in next")
}
t, err := New("test", http.HandlerFunc(next))
if err != nil {
panic(err)
}
recorder := httptest.NewRecorder()
req := httptest.NewRequest(http.MethodGet, "/", nil)
t.ServeHTTP(recorder, req)
println(recorder.Result().Status)
}
// Output:
// in T.ServeHTTP
// in next
// 200 OK
================================================
FILE: _test/closure0.go
================================================
package main
type adder func(int, int) int
func genAdd(k int) adder {
return func(i, j int) int {
return i + j + k
}
}
func main() {
f := genAdd(5)
println(f(3, 4))
}
// Output:
// 12
================================================
FILE: _test/closure1.go
================================================
package main
type adder func(int, int) int
func genAdd(k int) adder {
return func(i, j int) int {
return i + j + k
}
}
func main() {
f := genAdd(5)
g := genAdd(8)
println(f(3, 4))
println(g(3, 4))
}
// Output:
// 12
// 15
================================================
FILE: _test/closure10.go
================================================
package main
func main() {
foos := []func(){}
for i := 0; i < 3; i++ {
a, b := i, i
foos = append(foos, func() { println(i, a, b) })
}
foos[0]()
foos[1]()
foos[2]()
}
// Output:
// 0 0 0
// 1 1 1
// 2 2 2
================================================
FILE: _test/closure11.go
================================================
package main
type T struct {
F func()
}
func main() {
foos := []T{}
for i := 0; i < 3; i++ {
a := i
foos = append(foos, T{func() { println(i, a) }})
}
foos[0].F()
foos[1].F()
foos[2].F()
}
// Output:
// 0 0
// 1 1
// 2 2
================================================
FILE: _test/closure12.go
================================================
package main
import "fmt"
type T struct {
F func()
}
func main() {
foos := []T{}
for i := 0; i < 3; i++ {
a := i
n := fmt.Sprintf("i=%d", i)
foos = append(foos, T{func() { println(i, a, n) }})
}
foos[0].F()
foos[1].F()
foos[2].F()
}
// Output:
// 0 0 i=0
// 1 1 i=1
// 2 2 i=2
================================================
FILE: _test/closure13.go
================================================
package main
import (
"fmt"
"strconv"
)
type monkey struct {
test func() int
}
func main() {
input := []string{"1", "2", "3"}
var monkeys []*monkey
for _, v := range input {
kong := monkey{}
divisor, err := strconv.Atoi(v)
if err != nil {
panic(err)
}
fmt.Print(divisor, " ")
kong.test = func() int {
return divisor
}
monkeys = append(monkeys, &kong)
}
for _, mk := range monkeys {
fmt.Print(mk.test(), " ")
}
}
// Output:
// 1 2 3 1 2 3
================================================
FILE: _test/closure14.go
================================================
package main
import "fmt"
type monkey struct {
test func() int
}
func getk(k int) (int, error) { return k, nil }
func main() {
input := []string{"1", "2", "3"}
var monkeys []*monkey
for k := range input {
kong := monkey{}
divisor, _ := getk(k)
fmt.Print(divisor, " ")
kong.test = func() int {
return divisor
}
monkeys = append(monkeys, &kong)
}
for _, mk := range monkeys {
fmt.Print(mk.test(), " ")
}
}
// Output:
// 0 1 2 0 1 2
================================================
FILE: _test/closure15.go
================================================
package main
func main() {
foos := []func(){}
for i := range 3 {
a := i
foos = append(foos, func() { println(i, a) })
}
foos[0]()
foos[1]()
foos[2]()
}
// Output:
// 0 0
// 1 1
// 2 2
================================================
FILE: _test/closure16.go
================================================
package main
func main() {
foos := []func(){}
for i := range 3 {
a, b := i, i
foos = append(foos, func() { println(i, a, b) })
}
foos[0]()
foos[1]()
foos[2]()
}
// Output:
// 0 0 0
// 1 1 1
// 2 2 2
================================================
FILE: _test/closure17.go
================================================
package main
type T struct {
F func()
}
func main() {
foos := []T{}
for i := range 3 {
a := i
foos = append(foos, T{func() { println(i, a) }})
}
foos[0].F()
foos[1].F()
foos[2].F()
}
// Output:
// 0 0
// 1 1
// 2 2
================================================
FILE: _test/closure18.go
================================================
package main
import "fmt"
type T struct {
F func()
}
func main() {
foos := []T{}
for i := range 3 {
a := i
n := fmt.Sprintf("i=%d", i)
foos = append(foos, T{func() { println(i, a, n) }})
}
foos[0].F()
foos[1].F()
foos[2].F()
}
// Output:
// 0 0 i=0
// 1 1 i=1
// 2 2 i=2
================================================
FILE: _test/closure19.go
================================================
package main
func main() {
foos := []func(){}
for i := 0; i < 3; i++ {
i := i
foos = append(foos, func() { println(i) })
}
foos[0]()
foos[1]()
foos[2]()
}
// Output:
// 0
// 1
// 2
================================================
FILE: _test/closure2.go
================================================
package main
func adder() func(int) int {
sum := 0
return func(x int) int {
sum = sum + x
return sum
}
}
func main() {
pos, neg := adder(), adder()
for i := 0; i < 10; i++ {
println(pos(i), neg(-2*i))
}
}
// Output:
// 0 0
// 1 -2
// 3 -6
// 6 -12
// 10 -20
// 15 -30
// 21 -42
// 28 -56
// 36 -72
// 45 -90
================================================
FILE: _test/closure20.go
================================================
package main
func main() {
foos := []func(){}
for i := range 3 {
i := i
foos = append(foos, func() { println(i) })
}
foos[0]()
foos[1]()
foos[2]()
}
// Output:
// 0
// 1
// 2
================================================
FILE: _test/closure3.go
================================================
package main
type T1 struct {
Name string
}
func (t *T1) genAdd(k int) func(int) int {
return func(i int) int {
println(t.Name)
return i + k
}
}
var t = &T1{"test"}
func main() {
f := t.genAdd(4)
println(f(5))
}
// Output:
// test
// 9
================================================
FILE: _test/closure4.go
================================================
package main
type T1 struct {
Name string
}
func (t *T1) genAdd(k int) func(int) int {
return func(i int) int {
println(t.Name)
return i + k
}
}
var t = T1{"test"}
func main() {
f := t.genAdd(4)
println(f(5))
}
// Output:
// test
// 9
================================================
FILE: _test/closure5.go
================================================
package main
type T1 struct {
Name string
}
func (t T1) genAdd(k int) func(int) int {
return func(i int) int {
println(t.Name)
return i + k
}
}
var t = T1{"test"}
func main() {
f := t.genAdd(4)
println(f(5))
}
// Output:
// test
// 9
================================================
FILE: _test/closure6.go
================================================
package main
type T1 struct {
Name string
}
func (t *T1) genAdd(k int) func(int) int {
return func(i int) int {
println(t.Name)
return i + k
}
}
var t = &T1{"test"}
func main() {
f := t.genAdd(4)
println(f(5))
}
// Output:
// test
// 9
================================================
FILE: _test/closure7.go
================================================
package main
import (
"fmt"
)
type Config struct {
A string
}
var conf *Config = &Config{}
func SetConfig() func(*Config) {
return func(cf *Config) {
conf = cf
}
}
func main() {
conf := &Config{
A: "foo",
}
fmt.Println(conf.A)
}
// Output:
// foo
================================================
FILE: _test/closure8.go
================================================
package main
var f = func(a int) int { return 2 + a }
func main() {
println(f(3))
}
// Output:
// 5
================================================
FILE: _test/closure9.go
================================================
package main
func main() {
foos := []func(){}
for i := 0; i < 3; i++ {
a := i
foos = append(foos, func() { println(i, a) })
}
foos[0]()
foos[1]()
foos[2]()
}
// Output:
// 0 0
// 1 1
// 2 2
================================================
FILE: _test/comp0.go
================================================
package main
func main() {
println(2 < 2.4)
}
// Output:
// true
================================================
FILE: _test/comp1.go
================================================
package main
func main() {
var a interface{} = 1 < 2
println(a.(bool))
}
// Output:
// true
================================================
FILE: _test/comp2.go
================================================
package main
type delta int32
func main() {
a := delta(-1)
println(a != -1)
println(a == -1)
}
// Output:
// false
// true
================================================
FILE: _test/complex0.go
================================================
package main
import "fmt"
func main() {
a := complex(3, 2)
fmt.Println(a, real(a), imag(a))
}
// Output:
// (3+2i) 3 2
================================================
FILE: _test/complex1.go
================================================
package main
import "fmt"
func main() {
var c complex128
c = 1
fmt.Printf("%T %v\n", c, c)
}
// Output:
// complex128 (1+0i)
================================================
FILE: _test/complex2.go
================================================
package main
import "fmt"
func main() {
c := complex(1, 0)
c += 1
fmt.Printf("%T %v\n", c, c)
}
// Output:
// complex128 (2+0i)
================================================
FILE: _test/complex3.go
================================================
package main
import "fmt"
func main() {
var s int = 1 + complex(1, 0)
fmt.Printf("%T %v\n", s, s)
}
// Output:
// int 2
================================================
FILE: _test/complex4.go
================================================
package main
import "fmt"
func f(a, b float64) interface{} { return complex(a, b) }
func main() {
a := f(3, 2)
fmt.Println(a.(complex128))
}
// Output:
// (3+2i)
================================================
FILE: _test/composite0.go
================================================
package main
import "fmt"
var a = &[]*T{}
type T struct{ name string }
func main() {
fmt.Println(a)
}
// Output:
// &[]
================================================
FILE: _test/composite1.go
================================================
package main
import "fmt"
var a = &[]*T{{}}
type T struct{ name string }
func main() {
fmt.Println((*a)[0])
}
// Output:
// &{}
================================================
FILE: _test/composite10.go
================================================
package main
import "fmt"
func main() {
a := []map[int]int{make(map[int]int)}
for _, b := range a {
fmt.Println(b)
}
}
// Output:
// map[]
================================================
FILE: _test/composite11.go
================================================
package main
import (
"fmt"
"image/color"
)
func main() {
c := color.NRGBA64{1, 1, 1, 1}
fmt.Println(c)
}
// Output:
// {1 1 1 1}
================================================
FILE: _test/composite12.go
================================================
package main
type A struct {
C D
}
type D struct {
E string
}
func main() {
a := A{}
a.C = D{"bb"}
println(a.C.E)
}
// Output:
// bb
================================================
FILE: _test/composite13.go
================================================
package main
type A struct {
C D
}
type D struct {
E string
}
func main() {
a := A{}
a.C = D{E: "bb"}
println(a.C.E)
}
// Output:
// bb
================================================
FILE: _test/composite14.go
================================================
package main
import "fmt"
type T struct {
b []byte
}
func main() {
t := T{nil}
fmt.Println(t)
}
// Output:
// {[]}
================================================
FILE: _test/composite15.go
================================================
package main
import (
"fmt"
)
func interfaceAsInts() {
var a interface{}
b := 2
c := 3
a = []int{b, c}
d, ok := a.([]int)
if !ok {
println("nope")
return
}
for _, v := range d {
fmt.Println(v)
}
}
func interfaceAsInterfaces() {
var a, b, c interface{}
b = 2
c = 3
a = []interface{}{b, c}
d, ok := a.([]interface{})
if !ok {
println("nope")
return
}
fmt.Println(d)
for _, v := range d {
fmt.Println(v)
}
}
func main() {
interfaceAsInts()
interfaceAsInterfaces()
}
// Output:
// 2
// 3
// [2 3]
// 2
// 3
================================================
FILE: _test/composite16.go
================================================
package main
import (
"fmt"
"net/url"
)
func main() {
body := url.Values{
"Action": {"none"},
}
fmt.Println(body)
}
// Output:
// map[Action:[none]]
================================================
FILE: _test/composite17.go
================================================
package main
import (
"html/template"
)
var str = `{{ stringOr .Data "test" }}`
func main() {
_, err := template.New("test").
Funcs(template.FuncMap{
"stringOr": stringOr,
}).
Parse(str)
if err != nil {
println(err.Error())
return
}
println("success")
}
func stringOr(v, def string) string {
if v == "" {
return def
}
return v
}
// Output:
// success
================================================
FILE: _test/composite18.go
================================================
package main
import "fmt"
type fn func(string, string) bool
var funcs = []fn{
cmpLessFn,
cmpGreaterFn,
nil,
}
func cmpLessFn(a string, b string) bool {
return a < b
}
func cmpGreaterFn(a string, b string) bool {
return a > b
}
func main() {
for _, f := range funcs {
if f == nil {
continue
}
fmt.Println(f("a", "b"))
}
}
// Output:
// true
// false
================================================
FILE: _test/composite19.go
================================================
package main
import "fmt"
type fn func(string, string) bool
var funcs = map[string]fn{
"less": cmpLessFn,
"greater": cmpGreaterFn,
"none": nil,
}
func cmpLessFn(a string, b string) bool {
return a < b
}
func cmpGreaterFn(a string, b string) bool {
return a > b
}
func main() {
for _, n := range []string{"less", "greater", "none"} {
f := funcs[n]
if f == nil {
continue
}
fmt.Println(f("a", "b"))
}
}
// Output:
// true
// false
================================================
FILE: _test/composite2.go
================================================
package main
import "fmt"
var a = &[]*T{{"hello"}}
type T struct{ name string }
func main() {
fmt.Println((*a)[0])
}
// Output:
// &{hello}
================================================
FILE: _test/composite3.go
================================================
package main
func main() {
var err error
var ok bool
_, ok = err.(interface{ IsSet() bool })
println(ok)
}
// Output:
// false
================================================
FILE: _test/composite4.go
================================================
package main
func main() {
var err error
_, ok := err.(interface{ IsSet() bool })
println(ok)
}
// Output:
// false
================================================
FILE: _test/composite5.go
================================================
package main
import "fmt"
type T struct {
m uint16
}
var t = T{1<<2 | 1<<3}
func main() {
fmt.Println(t)
}
// Output:
// {12}
================================================
FILE: _test/composite6.go
================================================
package main
import (
"fmt"
"github.com/traefik/yaegi/_test/ct1"
)
type T struct {
m uint16
}
var t = T{1 << ct1.R}
func main() {
fmt.Println(t)
}
// Output:
// {2}
================================================
FILE: _test/composite7.go
================================================
package main
type T struct {
name string
}
var tab = []*T{{
name: "foo",
}, {
name: "bar",
}}
func main() {
println(len(tab))
println(tab[0].name)
}
// Output:
// 2
// foo
================================================
FILE: _test/composite8.go
================================================
package main
type T struct{ I int }
func main() {
t := []*T{}
s := []int{1, 2}
for _, e := range s {
x := &T{e}
t = append(t, x)
}
println(t[0].I, t[1].I)
}
// Output:
// 1 2
================================================
FILE: _test/composite8bis.go
================================================
package main
type T struct{ I int }
func main() {
t := []*T{}
s := []int{1, 2}
for _, e := range s {
x := &T{I: e}
t = append(t, x)
}
println(t[0].I, t[1].I)
}
// Output:
// 1 2
================================================
FILE: _test/composite9.go
================================================
package main
import "fmt"
func main() {
a := [][]int{make([]int,0)}
for _, b := range a {
fmt.Println(b)
}
}
// Output:
// []
================================================
FILE: _test/const0.go
================================================
package main
const (
a = iota
b
)
func main() {
println(a, b)
}
// Output:
// 0 1
================================================
FILE: _test/const1.go
================================================
package main
type T struct {
a int
b string
}
var t = T{1, "hello"}
func main() {
println(t.a, t.b)
}
// Output:
// 1 hello
================================================
FILE: _test/const10.go
================================================
package main
const (
a = 2
b = c + d
c = a + d
d = e + f
e = 3
f = 4
)
func main() {
println(b)
}
// Output:
// 16
================================================
FILE: _test/const11.go
================================================
package main
func main() {
const (
x = 2 * iota
dim
)
var t [dim * 2]int
println(t[0], len(t))
}
// Output:
// 0 4
================================================
FILE: _test/const12.go
================================================
package main
type Kind int
const (
None Kind = 0
Left Kind = 1 << iota
Right
Both Kind = Left | Right
)
func main() {
println(None, Left, Right, Both)
}
// Output:
// 0 2 4 6
================================================
FILE: _test/const13.go
================================================
package main
import (
"fmt"
)
func main() {
const tooBig = 1267650600228229401496703205376
const huge = 1 << 100
const large = huge >> 38
fmt.Println(int64(large))
}
// Output:
// 4611686018427387904
================================================
FILE: _test/const14.go
================================================
package main
import "compress/flate"
func f1(i int) { println("i:", i) }
func main() {
i := flate.BestSpeed
f1(i)
}
// Output:
// i: 1
================================================
FILE: _test/const15.go
================================================
package main
type T1 t1
type t1 int8
const (
P2 T1 = 2
P3 T1 = 3
)
func main() {
println(P3)
}
// Output:
// 3
================================================
FILE: _test/const16.go
================================================
package main
import (
"fmt"
)
func main() {
fmt.Println(7 / 3)
}
// Output:
// 2
================================================
FILE: _test/const17.go
================================================
package main
import "fmt"
var t [7/3]int
func main() {
t[0] = 3/2
t[1] = 5/2
fmt.Println(t)
}
// Output:
// [1 2]
================================================
FILE: _test/const18.go
================================================
package main
import "time"
func main() {
a := int64(time.Second)
println(a)
}
// Output:
// 1000000000
================================================
FILE: _test/const19.go
================================================
package main
import (
"fmt"
"time"
)
func get10Hours() time.Duration {
return 10 * time.Hour
}
func main() {
fmt.Println(get10Hours().String())
}
// Output:
// 10h0m0s
================================================
FILE: _test/const2.go
================================================
package main
func main() {
println(a)
}
const a = "hello"
// Output:
// hello
================================================
FILE: _test/const20.go
================================================
package main
import "fmt"
const maxLen = int64(int64(^uint64(0) >> 1))
func main() {
fmt.Println(maxLen)
}
// Output:
// 9223372036854775807
================================================
FILE: _test/const21.go
================================================
package main
const a = 64
var b uint = a * a / 2
func main() {
println(b)
}
// Output:
// 2048
================================================
FILE: _test/const22.go
================================================
package main
const (
numDec uint8 = (1 << iota) / 2
numHex
numOct
numFloat
)
func main() {
println(13 & (numHex | numOct))
}
// Output:
// 1
================================================
FILE: _test/const23.go
================================================
package main
const maxlen = len("hello")
var gfm = [maxlen]byte{}
func main() {
println(len(gfm))
}
// Output:
// 5
================================================
FILE: _test/const24.go
================================================
package main
var aa = [...]int{1, 2, 3}
const maxlen = cap(aa)
var gfm = [maxlen]byte{}
func main() {
println(len(gfm))
}
// Output:
// 3
================================================
FILE: _test/const25.go
================================================
package main
const (
FGBlack Attribute = iota + 30
)
type Attribute int
func main() {
println(FGBlack)
}
================================================
FILE: _test/const26.go
================================================
package main
import (
"fmt"
)
func init() {
fmt.Println(constString)
fmt.Println(const2)
fmt.Println(varString)
}
const constString string = "hello"
const (
const1 = iota + 10
const2
const3
)
var varString string = "test"
func main() {}
// Output:
// hello
// 11
// test
================================================
FILE: _test/const3.go
================================================
package main
const a, b, c int = 1, 2, 3
func main() { println(a, b, c) }
// Output:
// 1 2 3
================================================
FILE: _test/const4.go
================================================
package main
const (
a = 2
b = 3
c
)
func main() {
println(a, b, c)
}
// Output:
// 2 3 3
================================================
FILE: _test/const5.go
================================================
package main
import (
"fmt"
)
const (
a uint8 = 2 * iota
b
c
)
func main() {
fmt.Printf("%T\n", c)
fmt.Println(a, b, c)
}
// Output:
// uint8
// 0 2 4
================================================
FILE: _test/const6.go
================================================
package main
const (
maxNonStarters = 30
maxBufferSize = maxNonStarters + 2
)
type reorderBuffer struct {
rune [maxBufferSize]Properties
}
type Properties struct {
pos uint8
size uint8
}
func main() {
println(len(reorderBuffer{}.rune))
}
// Output:
// 32
================================================
FILE: _test/const7.go
================================================
package main
import "fmt"
const (
a = iota
b
c
d
)
type T [c]int
func main() {
fmt.Println(T{})
}
// Output:
// [0 0]
================================================
FILE: _test/const8.go
================================================
package main
const (
a = 2
b = c + d
c = 4
d = 5
)
func main() {
println(a, b, c, d)
}
// Output:
// 2 9 4 5
================================================
FILE: _test/const9.go
================================================
package main
const (
a = 2
b = c + d
c = a + d
d = e + f
e = b + 2
f = 4
)
func main() {
println(b)
}
// Error:
// 5:2: constant definition loop
================================================
FILE: _test/cont.go
================================================
package main
func main() {
for i := 0; i < 10; i++ {
if i < 5 {
continue
}
println(i)
}
}
// Output:
// 5
// 6
// 7
// 8
// 9
================================================
FILE: _test/cont0.go
================================================
package main
func main() {
i := 0
for {
if i > 10 {
break
}
i++
if i < 5 {
continue
}
println(i)
}
}
// Output:
// 5
// 6
// 7
// 8
// 9
// 10
// 11
================================================
FILE: _test/cont1.go
================================================
package main
func main() {
i := 0
for {
if i > 10 {
break
}
if i < 5 {
i++
continue
}
println(i)
i++
}
}
// Output:
// 5
// 6
// 7
// 8
// 9
// 10
================================================
FILE: _test/cont2.go
================================================
package main
func main() {
n := 2
m := 2
foo := true
OuterLoop:
for i := 0; i < n; i++ {
println("I: ", i)
for j := 0; j < m; j++ {
switch foo {
case true:
println(foo)
continue OuterLoop
case false:
println(foo)
}
}
}
}
// Output:
// I: 0
// true
// I: 1
// true
================================================
FILE: _test/cont3.go
================================================
package main
func main() {
n := 2
m := 2
foo := true
OuterLoop:
println("boo")
for i := 0; i < n; i++ {
println("I: ", i)
for j := 0; j < m; j++ {
switch foo {
case true:
println(foo)
continue OuterLoop
case false:
println(foo)
}
}
}
}
// Error:
// 15:5: invalid continue label OuterLoop
================================================
FILE: _test/context.go
================================================
package main
import "context"
func get(ctx context.Context, k string) string {
var r string
if v := ctx.Value(k); v != nil {
r = v.(string)
}
return r
}
func main() {
ctx := context.WithValue(context.Background(), "hello", "world")
println(get(ctx, "hello"))
}
// Output:
// world
================================================
FILE: _test/context2.go
================================================
package main
import "context"
func get(ctx context.Context, k string) string {
var r string
var ok bool
if v := ctx.Value(k); v != nil {
r, ok = v.(string)
println(ok)
}
return r
}
func main() {
ctx := context.WithValue(context.Background(), "hello", "world")
println(get(ctx, "hello"))
}
// Output:
// true
// world
================================================
FILE: _test/convert0.go
================================================
package main
type T struct {
v int
}
type comparator func(T, T) bool
func sort(items []T, comp comparator) {
println("in sort")
}
func compT(t0, t1 T) bool { return t0.v < t1.v }
func main() {
a := []T{}
sort(a, comparator(compT))
}
// Output:
// in sort
================================================
FILE: _test/convert1.go
================================================
package main
import "strconv"
type atoidef func(s string) (int, error)
func main() {
stdatoi := atoidef(strconv.Atoi)
n, err := stdatoi("7")
if err != nil {
panic(err)
}
println(n)
}
// Output:
// 7
================================================
FILE: _test/convert2.go
================================================
package main
import "bufio"
func fakeSplitFunc(data []byte, atEOF bool) (advance int, token []byte, err error) {
return 7, nil, nil
}
func main() {
splitfunc := bufio.SplitFunc(fakeSplitFunc)
n, _, err := splitfunc(nil, true)
if err != nil {
panic(err)
}
println(n)
}
// Output:
// 7
================================================
FILE: _test/convert3.go
================================================
package main
import (
"fmt"
"net/http"
)
func main() {
next := func(rw http.ResponseWriter, req *http.Request) {
rw.Header().Set("Cache-Control", "max-age=20")
rw.WriteHeader(http.StatusOK)
}
f := http.HandlerFunc(next)
fmt.Printf("%T\n", f.ServeHTTP)
}
// Output:
// func(http.ResponseWriter, *http.Request)
================================================
FILE: _test/copy0.go
================================================
package main
import "fmt"
func main() {
a := []int{10, 20, 30}
b := [4]int{}
c := b[:]
copy(c, a)
fmt.Println(c)
}
// Output:
// [10 20 30 0]
================================================
FILE: _test/copy1.go
================================================
package main
import "fmt"
func main() {
a := []int{10, 20, 30}
b := &[4]int{}
c := b[:]
copy(c, a)
fmt.Println(c)
}
// Output:
// [10 20 30 0]
================================================
FILE: _test/copy2.go
================================================
package main
import "fmt"
func f(a, b []int) interface{} { return copy(a, b) }
func main() {
a := []int{10, 20, 30}
b := [4]int{}
c := b[:]
r := f(c, a)
fmt.Println(r.(int))
}
// Output:
// 3
================================================
FILE: _test/ct/ct1.go
================================================
package ct
func init() { println("hello from ct1") }
================================================
FILE: _test/ct/ct2.go
================================================
// +build !dummy
package ct
func init() { println("hello from ct2") }
================================================
FILE: _test/ct/ct3.go
================================================
// +build dummy
package ct
func init() { println("hello from ct3") }
================================================
FILE: _test/ct1/ct1.go
================================================
package ct1
type Class uint
const (
L Class = iota
R
AL
)
================================================
FILE: _test/d1/d1.go
================================================
package d1
type T struct {
Name string
}
func (t *T) F() { println(t.Name) }
func NewT(s string) *T { return &T{s} }
================================================
FILE: _test/d2/d2.go
================================================
package d2
import "github.com/traefik/yaegi/_test/d1"
var (
X = d1.NewT("test")
F = X.F
)
================================================
FILE: _test/d3.go
================================================
package main
import "github.com/traefik/yaegi/_test/d2"
func main() {
f := d2.F
f()
}
// Output:
// test
================================================
FILE: _test/defer0.go
================================================
package main
import "fmt"
func main() {
println("hello")
defer fmt.Println("bye")
defer fmt.Println("au revoir")
println("world")
}
// Output:
// hello
// world
// au revoir
// bye
================================================
FILE: _test/defer1.go
================================================
package main
import "fmt"
func main() {
println("hello")
defer func() {
fmt.Println("bye")
}()
println("world")
}
// Output:
// hello
// world
// bye
================================================
FILE: _test/defer2.go
================================================
package main
import "fmt"
func main() {
println("hello")
i := 12
defer func() {
fmt.Println("i:", i)
}()
i = 20
println("world")
}
// Output:
// hello
// world
// i: 20
================================================
FILE: _test/defer3.go
================================================
package main
import (
"net/http"
"net/http/httptest"
)
func main() {
println("hello")
mux := http.NewServeMux()
server := httptest.NewServer(mux)
defer server.Close()
}
// Output:
// hello
================================================
FILE: _test/defer4.go
================================================
package main
import "sync"
type T struct {
mu sync.RWMutex
name string
}
func (t *T) get() string {
t.mu.RLock()
defer t.mu.RUnlock()
return t.name
}
var d = T{name: "test"}
func main() {
println(d.get())
}
// Output:
// test
================================================
FILE: _test/defer5.go
================================================
package main
func f1() {
defer println("f1-begin")
f2()
defer println("f1-end")
}
func f2() {
defer println("f2-begin")
f3()
defer println("f2-end")
}
func f3() {
defer println("f3-begin")
println("hello")
defer println("f3-end")
}
func main() {
f1()
}
// Output:
// hello
// f3-end
// f3-begin
// f2-end
// f2-begin
// f1-end
// f1-begin
================================================
FILE: _test/defer6.go
================================================
package main
func f1() {
defer print("f1-begin ")
f2()
defer print("f1-end ")
}
func f2() {
defer print("f2-begin ")
f3()
defer print("f2-end ")
}
func f3() {
defer print("f3-begin ")
print("hello ")
defer print("f3-end ")
}
func main() {
f1()
println()
}
// Output:
// hello f3-end f3-begin f2-end f2-begin f1-end f1-begin
================================================
FILE: _test/defer7.go
================================================
package main
import "fmt"
func f1(in, out []string) {
defer copy(out, in)
}
func main() {
in := []string{"foo", "bar"}
out := make([]string, 2)
f1(in, out)
fmt.Println(out)
}
// Output:
// [foo bar]
================================================
FILE: _test/defer8.go
================================================
package main
import "fmt"
func f1(m map[string]string) {
defer delete(m, "foo")
defer delete(m, "test")
fmt.Println(m)
}
func main() {
m := map[string]string{
"foo": "bar",
"baz": "bat",
}
f1(m)
fmt.Println(m)
}
// Output:
// map[baz:bat foo:bar]
// map[baz:bat]
================================================
FILE: _test/defer9.go
================================================
package main
import "fmt"
func f1(ch chan string) {
defer close(ch)
ch <- "foo"
}
func main() {
ch := make(chan string, 1)
f1(ch)
for s := range ch {
fmt.Println(s)
}
}
// Output:
// foo
================================================
FILE: _test/delete0.go
================================================
package main
import "fmt"
func main() {
a := map[string]int{"hello": 1, "world": 3}
delete(a, "hello")
fmt.Println(a)
}
// Output:
// map[world:3]
================================================
FILE: _test/eval0.go
================================================
package main
import (
"log"
"os"
"github.com/traefik/yaegi/interp"
)
func main() {
log.SetFlags(log.Lshortfile)
i := interp.New(interp.Options{Stdout: os.Stdout})
if _, err := i.Eval(`func f() (int, int) { return 1, 2 }`); err != nil {
log.Fatal(err)
}
if _, err := i.Eval(`a, b := f()`); err != nil {
log.Fatal(err)
}
if _, err := i.Eval(`println(a, b)`); err != nil {
log.Fatal(err)
}
}
// Output:
// 1 2
================================================
FILE: _test/export0.go
================================================
package main
func Test() {
println("Hello from test")
}
// Output:
//
================================================
FILE: _test/export1.go
================================================
package sample
type Sample struct{ Name string }
func (s *Sample) Test() {
println("Hello from test", s.Name)
}
// Output:
//
================================================
FILE: _test/factor.go
================================================
package main
import (
"fmt"
"math/big"
)
func main() {
// 157 bit n = pq with p ~= 78 bits
n := big.NewInt(0)
n.SetString("273966616513101251352941655302036077733021013991", 10)
i := big.NewInt(0)
// Set i to be p - 10e6
i.SetString("496968652506233112158689", 10)
// Move temp big int out here so no possible GC thrashing
temp := big.NewInt(0)
// Avoid creating the new bigint each time
two := big.NewInt(2)
for {
// Check if the odd number is a divisor of n
temp.Mod(n, i)
if temp.Sign() == 0 {
fmt.Println(i)
break
}
i.Add(i, two)
}
}
================================================
FILE: _test/fib.go
================================================
package main
// Compute fibonacci numbers, no memoization
func fib(n int) int {
if n < 2 {
return n
}
return fib(n-2) + fib(n-1)
}
func main() {
println(fib(35))
//println(fib(10))
}
================================================
FILE: _test/fib0.go
================================================
package main
// Compute fibonacci numbers, no memoization
func fib(n int) int {
if n < 2 {
return n
}
return fib(n-2) + fib(n-1)
}
func main() {
println(fib(4))
}
// Output:
// 3
================================================
FILE: _test/file_access.go
================================================
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.CreateTemp("", "yeagibench")
if err != nil {
panic(err)
}
n, err := file.Write([]byte("hello world"))
if err != nil {
panic(err)
}
fmt.Println("n:", n)
err = file.Close()
if err != nil {
panic(err)
}
b, err := os.ReadFile(file.Name())
if err != nil {
panic(err)
}
fmt.Println("b:", string(b))
err = os.Remove(file.Name())
if err != nil {
panic(err)
}
}
// Output:
// n: 11
// b: hello world
================================================
FILE: _test/flag0.go
================================================
package main
import (
"flag"
"fmt"
)
func main() {
flag.Parse()
fmt.Println("Narg:", flag.NArg())
}
// Output:
// Narg: 0
================================================
FILE: _test/foo/bar.go
================================================
package foo
import "github.com/traefik/yaegi/_test/foo/boo"
var Bar = "BARR"
var Boo = boo.Boo
func init() { println("init foo") }
================================================
FILE: _test/foo/bir.go
================================================
package foo
import "github.com/traefik/yaegi/_test/foo/boo"
var Bir = boo.Boo + "22"
================================================
FILE: _test/foo/boo/boo.go
================================================
package boo
var Boo = "Boo"
func init() { println("init boo") }
================================================
FILE: _test/foo-bar/foo-bar.go
================================================
package bar
var Name = "foo-bar"
================================================
FILE: _test/for0.go
================================================
package main
func main() {
i := 0
//for ;i >= 0; i++ {
for {
if i > 5 {
break
}
println(i)
i++
}
}
// Output:
// 0
// 1
// 2
// 3
// 4
// 5
================================================
FILE: _test/for1.go
================================================
package main
func main() {
i := 0
for i < 10 {
if i > 4 {
break
}
println(i)
i++
}
}
// Output:
// 0
// 1
// 2
// 3
// 4
================================================
FILE: _test/for10.go
================================================
package main
func main() {
for a := 0; false; {
println("nok", a)
a++
break
}
println("bye")
}
// Output:
// bye
================================================
FILE: _test/for11.go
================================================
package main
func main() {
a := 0
for ; true; a++ {
println("nok", a)
break
}
println("bye", a)
}
// Output:
// nok 0
// bye 0
================================================
FILE: _test/for12.go
================================================
package main
func main() {
for a := 0; false; a++ {
println("nok", a)
break
}
println("bye")
}
// Output:
// bye
================================================
FILE: _test/for13.go
================================================
package main
func main() {
a := 0
for ; false; a++ {
println("nok", a)
break
}
println("bye", a)
}
// Output:
// bye 0
================================================
FILE: _test/for14.go
================================================
package main
func main() {
for a := 0; true; a++ {
println(a)
if a > 0 {
break
}
}
println("bye")
}
// Output:
// 0
// 1
// bye
================================================
FILE: _test/for15.go
================================================
package main
func f() int { println("in f"); return 1 }
func main() {
for i := f(); ; {
println("in loop")
if i > 0 {
break
}
}
}
// Output:
// in f
// in loop
================================================
FILE: _test/for16.go
================================================
package main
func main() {
max := 1
for ; ; max-- {
if max == 0 {
break
}
println("in for")
}
println("bye")
}
// Output:
// in for
// bye
================================================
FILE: _test/for17.go
================================================
package main
func main() {
mx := 3
for i := range mx {
println(i)
}
}
// Output:
// 0
// 1
// 2
================================================
FILE: _test/for18.go
================================================
package main
func main() {
for i := range 3 {
println(i)
}
}
// Output:
// 0
// 1
// 2
================================================
FILE: _test/for19.go
================================================
package main
func main() {
for range 3 {
println("i")
}
}
// Output:
// i
// i
// i
================================================
FILE: _test/for2.go
================================================
package main
func main() {
for i := 2; ; i++ {
println(i)
if i > 3 {
break
}
}
}
// Output:
// 2
// 3
// 4
================================================
FILE: _test/for3.go
================================================
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string][]string{
"hello": []string{"foo", "bar"},
"world": []string{"truc", "machin"},
}
var content []string
for key, values := range m {
for _, value := range values {
content = append(content, key+value)
}
}
sort.Strings(content)
fmt.Println(content)
}
// Output:
// [hellobar hellofoo worldmachin worldtruc]
================================================
FILE: _test/for4.go
================================================
package main
func main() {
for i := 1; i <= 2; i++ {
var x, y int
println(x, y)
x, y = i, 2*i
println(x, y)
}
}
// Output:
// 0 0
// 1 2
// 0 0
// 2 4
================================================
FILE: _test/for5.go
================================================
package main
func main() {
var a bool
for a {
println("nok")
break
}
println("bye")
}
// Output:
// bye
================================================
FILE: _test/for6.go
================================================
package main
import "fmt"
func main() {
s := "三"
for i := 0; i < len(s); i++ {
fmt.Printf("byte %d: %d\n", i, s[i])
}
for i, r := range s {
fmt.Printf("rune %d: %d\n", i, r)
}
}
// Output:
// byte 0: 228
// byte 1: 184
// byte 2: 137
// rune 0: 19977
================================================
FILE: _test/for7.go
================================================
package main
func main() {
for i := 0; i; {
}
}
// Error:
// 4:14: non-bool used as for condition
================================================
FILE: _test/for8.go
================================================
package main
func main() {
for i := 0; i < 4; i++ {
for {
break
}
if i == 1 {
continue
}
println(i)
}
}
// Output:
// 0
// 2
// 3
================================================
FILE: _test/for9.go
================================================
package main
func main() {
for false {
println("nok")
break
}
println("bye")
}
// Output:
// bye
================================================
FILE: _test/fun.go
================================================
package main
func f(i int) int { return i + 15 }
func main() {
println(f(4))
}
// Output:
// 19
================================================
FILE: _test/fun10.go
================================================
package main
import "fmt"
func f() func() {
return nil
}
func main() {
g := f()
fmt.Printf("%T %v\n", g, g)
if g == nil {
fmt.Println("nil func")
}
}
// Output:
// func() <nil>
// nil func
================================================
FILE: _test/fun11.go
================================================
package main
var f F
type F func(int)
func main() {
println("ok")
}
// Output:
// ok
================================================
FILE: _test/fun12.go
================================================
package main
func use(interface{}) {}
func main() {
z := map[string]interface{}{"a": 5}
use(z)
println("bye")
}
// Output:
// bye
================================================
FILE: _test/fun13.go
================================================
package main
import "fmt"
type T struct{}
func newT() (T, error) { return T{}, nil }
func main() {
var (
i interface{}
err error
)
i, err = newT()
fmt.Println(i, err)
}
// Output:
// {} <nil>
================================================
FILE: _test/fun14.go
================================================
package main
func f() (bool, int) { return true, 2 }
func g() (bool, int) { return f() }
func main() {
b, i := g()
println(b, i)
}
// Output:
// true 2
================================================
FILE: _test/fun15.go
================================================
package main
func f1(a int) interface{} { return a + 1 }
func f2(a int64) interface{} { return a + 1 }
func main() {
c := f1(3)
println(c.(int))
b := f2(3)
println(b.(int64))
}
// Output:
// 4
// 4
================================================
FILE: _test/fun16.go
================================================
package main
func f1(a int) int { return a + 1 }
func f2(a int) interface{} {
// TODO: re-enable the optimized case below, once we've figured out why it
// interferes with the empty interface model.
// return f1(a)
var foo interface{} = f1(a)
return foo
}
func main() {
c := f2(3)
println(c.(int))
}
// Output:
// 4
================================================
FILE: _test/fun17.go
================================================
package main
func f1(a int) interface{} { return a + 1 }
func f2(a int) interface{} { return f1(a) }
func main() {
c := f2(3)
println(c.(int))
}
// Output:
// 4
================================================
FILE: _test/fun18.go
================================================
package main
var m = map[string]int{"foo": 1, "bar": 2}
func f(s string) interface{} { return m[s] }
func main() {
println(f("foo").(int))
}
// Output:
// 1
================================================
FILE: _test/fun19.go
================================================
package main
import (
"fmt"
)
func foo() ([]string, error) {
return nil, fmt.Errorf("bar")
}
func main() {
a, b := foo()
fmt.Println(a, b)
}
// Output:
// [] bar
================================================
FILE: _test/fun2.go
================================================
package main
type Coord struct{ x, y int }
func f(c Coord) int { return c.x + c.y }
func main() {
c := Coord{3, 4}
println(f(c))
}
// Output:
// 7
================================================
FILE: _test/fun20.go
================================================
package main
import "fmt"
var myerr error = fmt.Errorf("bar")
func ferr() error { return myerr }
func foo() ([]string, error) {
return nil, ferr()
}
func main() {
a, b := foo()
fmt.Println(a, b)
}
// Output:
// [] bar
================================================
FILE: _test/fun21.go
================================================
package main
func Bar() string {
return
}
func main() {
println(Bar())
}
// Error:
// 4:2: not enough arguments to return
================================================
FILE: _test/fun22.go
================================================
package main
import "time"
func main() {
time.Date()
}
// Error:
// 6:2: not enough arguments in call to time.Date
================================================
FILE: _test/fun23.go
================================================
package main
func f(x int) { return x }
func main() {
print("hello")
}
// Error:
// 3:17: too many arguments to return
================================================
FILE: _test/fun24.go
================================================
package main
func f(x int) (int, int) { return x, "foo" }
func main() {
print("hello")
}
// Error:
// cannot use "foo" (type stringT) as type intT in return argument
================================================
FILE: _test/fun25.go
================================================
package main
func f(x string) (a int, b int) { return x, 5 }
func main() {
print("hello")
}
// Error:
// cannot use x (type stringT) as type intT in return argument
================================================
FILE: _test/fun26.go
================================================
package main
type F func() (int, error)
func f1() (int, error) { return 3, nil }
func f2(a string, f F) {
c, _ := f()
println(a, c)
}
func main() {
f2("hello", F(f1))
}
// Output:
// hello 3
================================================
FILE: _test/fun27.go
================================================
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
print("test")
}()
wg.Wait()
}
func print(state string) {
fmt.Println(state)
}
// Output:
// test
================================================
FILE: _test/fun28.go
================================================
package main
import (
"runtime"
)
type T struct {
name string
}
func finalize(t *T) { println("finalize") }
func newT() *T {
t := new(T)
runtime.SetFinalizer(t, finalize)
return t
}
func main() {
t := newT()
println(t != nil)
}
// Output:
// true
================================================
FILE: _test/fun3.go
================================================
package main
type Coord struct{ x, y int }
func f(i, j int, c Coord) int { return i*c.x + j*c.y }
func main() {
c := Coord{3, 4}
println(f(2, 3, c))
}
// Output:
// 18
================================================
FILE: _test/fun4.go
================================================
package main
func f() {}
func main() {
f()
println("ok")
}
// Output:
// ok
================================================
FILE: _test/fun5.go
================================================
package main
func f(i int64) {
println(i)
}
func main() {
f(34)
}
// Output:
// 34
================================================
FILE: _test/fun6.go
================================================
package main
import (
"fmt"
"sync"
)
func NewPool() Pool { return Pool{} }
type Pool struct {
p *sync.Pool
}
var _pool = NewPool()
func main() {
fmt.Println(_pool)
}
// Output:
// {<nil>}
================================================
FILE: _test/fun7.go
================================================
package main
import (
goflag "flag"
"fmt"
)
func Foo(goflag *goflag.Flag) {
fmt.Println(goflag)
}
func main() {
g := &goflag.Flag{}
Foo(g)
}
// Output:
// &{ <nil> }
================================================
FILE: _test/fun8.go
================================================
package main
func main() { println(f == nil) }
var f func()
// Output:
// true
================================================
FILE: _test/fun9.go
================================================
package main
type T uint
func main() {
type myint int
var i = myint(1)
println(i)
}
// Output:
// 1
================================================
FILE: _test/gen1.go
================================================
package main
import "fmt"
// SumInts adds together the values of m.
func SumInts(m map[string]int64) int64 {
var s int64
for _, v := range m {
s += v
}
return s
}
// SumFloats adds together the values of m.
func SumFloats(m map[string]float64) float64 {
var s float64
for _, v := range m {
s += v
}
return s
}
func main() {
// Initialize a map for the integer values
ints := map[string]int64{
"first": 34,
"second": 12,
}
// Initialize a map for the float values
floats := map[string]float64{
"first": 35.98,
"second": 26.99,
}
fmt.Printf("Non-Generic Sums: %v and %v\n",
SumInts(ints),
SumFloats(floats))
}
================================================
FILE: _test/gen10.go
================================================
package main
func genFunc() (f func()) {
return f
}
func main() {
println(genFunc() == nil)
}
// Output:
// true
================================================
FILE: _test/gen11.go
================================================
package main
import (
"encoding/json"
"fmt"
"net/netip"
)
type Slice[T any] struct {
x []T
}
type IPPrefixSlice struct {
x Slice[netip.Prefix]
}
func (v Slice[T]) MarshalJSON() ([]byte, error) { return json.Marshal(v.x) }
// MarshalJSON implements json.Marshaler.
func (v IPPrefixSlice) MarshalJSON() ([]byte, error) {
return v.x.MarshalJSON()
}
func main() {
t := IPPrefixSlice{}
fmt.Println(t)
b, e := t.MarshalJSON()
fmt.Println(string(b), e)
}
// Output:
// {{[]}}
// null <nil>
================================================
FILE: _test/gen12.go
================================================
package main
import (
"fmt"
)
func MapOf[K comparable, V any](m map[K]V) Map[K, V] {
return Map[K, V]{m}
}
type Map[K comparable, V any] struct {
ж map[K]V
}
func (v MapView) Int() Map[string, int] { return MapOf(v.ж.Int) }
type VMap struct {
Int map[string]int
}
type MapView struct {
ж *VMap
}
func main() {
mv := MapView{&VMap{}}
fmt.Println(mv.ж)
}
// Output:
// &{map[]}
================================================
FILE: _test/gen13.go
================================================
package main
type Map[K comparable, V any] struct {
ж map[K]V
}
func (m Map[K, V]) Has(k K) bool {
_, ok := m.ж[k]
return ok
}
func main() {
m := Map[string, float64]{}
println(m.Has("test"))
}
// Output:
// false
================================================
FILE: _test/gen2.go
================================================
package main
import "fmt"
// SumIntsOrFloats sums the values of map m. It supports both int64 and float64
// as types for map values.
func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V {
var s V
for _, v := range m {
s += v
}
return s
}
func main() {
// Initialize a map for the integer values
ints := map[string]int64{
"first": 34,
"second": 12,
}
// Initialize a map for the float values
floats := map[string]float64{
"first": 35.98,
"second": 26.99,
}
fmt.Printf("Generic Sums: %v and %v\n",
SumIntsOrFloats[string, int64](ints),
SumIntsOrFloats[string, float64](floats))
}
// Output:
// Generic Sums: 46 and 62.97
================================================
FILE: _test/gen3.go
================================================
package main
type Number interface {
int | int64 | ~float64
}
func Sum[T Number](numbers []T) T {
var total T
for _, x := range numbers {
total += x
}
return total
}
func main() {
xs := []int{3, 5, 10}
total := Sum(xs)
println(total)
}
// Output:
// 18
================================================
FILE: _test/gen4.go
================================================
package main
import "fmt"
type List[T any] struct {
head, tail *element[T]
}
// A recursive generic type.
type element[T any] struct {
next *element[T]
val T
}
func (lst *List[T]) Push(v T) {
if lst.tail == nil {
lst.head = &element[T]{val: v}
lst.tail = lst.head
} else {
lst.tail.next = &element[T]{val: v}
lst.tail = lst.tail.next
}
}
func (lst *List[T]) GetAll() []T {
var elems []T
for e := lst.head; e != nil; e = e.next {
elems = append(elems, e.val)
}
return elems
}
func main() {
lst := List[int]{}
lst.Push(10)
lst.Push(13)
lst.Push(23)
fmt.Println("list:", lst.GetAll())
}
// Output:
// list: [10 13 23]
================================================
FILE: _test/gen5.go
================================================
package main
import "fmt"
type Set[Elem comparable] struct {
m map[Elem]struct{}
}
func Make[Elem comparable]() Set[Elem] {
return Set[Elem]{m: make(map[Elem]struct{})}
}
func (s Set[Elem]) Add(v Elem) {
s.m[v] = struct{}{}
}
func main() {
s := Make[int]()
s.Add(1)
fmt.Println(s)
}
// Output:
// {map[1:{}]}
================================================
FILE: _test/gen6.go
================================================
package main
func MapKeys[K comparable, V any](m map[K]V) []K {
r := make([]K, 0, len(m))
for k := range m {
r = append(r, k)
}
return r
}
func main() {
var m = map[int]string{1: "2", 2: "4", 4: "8"}
// Test type inference
println(len(MapKeys(m)))
}
// Output:
// 3
================================================
FILE: _test/gen7.go
================================================
package main
func MapKeys[K comparable, V any](m map[K]V) []K {
r := make([]K, 0, len(m))
for k := range m {
r = append(r, k)
}
return r
}
func main() {
var m = map[int]string{1: "2", 2: "4", 4: "8"}
// Test type inference
println(len(MapKeys))
}
// Error:
// invalid argument for len
================================================
FILE: _test/gen8.go
================================================
package main
type Float interface {
~float32 | ~float64
}
func add[T Float](a, b T) float64 { return float64(a) + float64(b) }
func main() {
var x, y int = 1, 2
println(add(x, y))
}
// Error:
// int does not implement main.Float
================================================
FILE: _test/gen9.go
================================================
package main
type Float interface {
~float32 | ~float64
}
func add[T Float](a, b T) float64 { return float64(a) + float64(b) }
func main() {
println(add(1, 2))
}
// Error:
// untyped int does not implement main.Float
================================================
FILE: _test/goto0.go
================================================
package main
func main() {
println("foo")
goto L1
println("Hello")
L1:
println("bar")
println("bye")
}
// Output:
// foo
// bar
// bye
================================================
FILE: _test/goto1.go
================================================
package main
func main() {
if true {
goto here
}
here:
println("ok")
}
// Output:
// ok
================================================
FILE: _test/heap.go
================================================
// This example demonstrates an integer heap built using the heap interface.
package main
import (
"container/heap"
"fmt"
)
// An IntHeap is a min-heap of ints.
type IntHeap []int
func (h IntHeap) Len() int { return len(h) }
func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] }
func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] }
func (h *IntHeap) Push(x interface{}) {
// Push and Pop use pointer receivers because they modify the slice's length,
// not just its contents.
*h = append(*h, x.(int))
}
func (h *IntHeap) Pop() interface{} {
old := *h
n := len(old)
x := old[n-1]
*h = old[0 : n-1]
return x
}
// This example inserts several ints into an IntHeap, checks the minimum,
// and removes them in order of priority.
func main() {
h := &IntHeap{2, 1, 5}
heap.Init(h)
heap.Push(h, 3)
fmt.Printf("minimum: %d\n", (*h)[0])
fmt.Println("h:", h)
for h.Len() > 0 {
fmt.Printf("%d ", heap.Pop(h))
}
}
// Output:
// minimum: 1
// h: &[1 2 5 3]
// 1 2 3 5
================================================
FILE: _test/if.go
================================================
package main
func main() {
if a := f(); a > 0 {
println(a)
}
}
func f() int { return 1 }
// Output:
// 1
================================================
FILE: _test/if0.go
================================================
package main
func main() {
var a bool
if a {
println("ok")
} else {
println("nok")
}
}
// Output:
// nok
================================================
FILE: _test/if1.go
================================================
package main
func main() {
i := 1
if i > 0 {
}
println("bye")
}
// Output:
// bye
================================================
FILE: _test/if2.go
================================================
package main
import "fmt"
func main() {
var i int
if i % 1000000 {
fmt.Println("oops")
}
}
// Error:
// 7:5: non-bool used as if condition
================================================
FILE: _test/if3.go
================================================
package main
func main() {
a := 0
if false {
println("false")
a = 1
} else {
println("true")
a = -1
}
println(a)
}
// Output:
// true
// -1
================================================
FILE: _test/if4.go
================================================
package main
const bad = false
func main() {
a := 0
if bad {
println("false")
a = 1
} else {
println("true")
a = -1
}
println(a)
}
// Output:
// true
// -1
================================================
FILE: _test/if5.go
================================================
package main
func main() {
if true {
println("ok")
}
println("bye")
}
// Output:
// ok
// bye
================================================
FILE: _test/if6.go
================================================
package main
func main() {
if false {
println("nok")
}
println("bye")
}
// Output:
// bye
================================================
FILE: _test/if7.go
================================================
package main
func main() {
a := 0
b := false
if (b) {
a = 1
} else {
a = -1
}
println(a)
}
// Output:
// -1
================================================
FILE: _test/imag0.go
================================================
package main
import "fmt"
func f(c complex128) interface{} { return imag(c) }
func main() {
c := complex(3, 2)
a := f(c)
fmt.Println(a.(float64))
}
// Output:
// 2
================================================
FILE: _test/import0.go
================================================
package main
import "fmt"
func main() {
fmt.Println("Hello", 42)
}
// Output:
// Hello 42
================================================
FILE: _test/import1.go
================================================
package main
import f "fmt"
func main() {
f.Println("Hello", 42)
}
// Output:
// Hello 42
================================================
FILE: _test/import2.go
================================================
package main
import . "fmt"
func main() {
Println("Hello", 42)
}
// Output:
// Hello 42
================================================
FILE: _test/import3.go
================================================
package main
import "github.com/traefik/yaegi/_test/foo"
func main() { println(foo.Bar, foo.Boo) }
// Output:
// init boo
// init foo
// BARR Boo
================================================
FILE: _test/import4.go
================================================
package main
import "github.com/traefik/yaegi/_test/p1"
func main() { println("num:", p1.Uint32()) }
// Output:
// num: 2596996162
================================================
FILE: _test/import5.go
================================================
package main
import boo "github.com/traefik/yaegi/_test/foo"
func main() { println(boo.Bar, boo.Boo, boo.Bir) }
// Output:
// init boo
// init foo
// BARR Boo Boo22
================================================
FILE: _test/import6.go
================================================
package main
import "github.com/traefik/yaegi/_test/c1"
func main() {
println(c1.C1)
}
// Error:
// import cycle not allowed
// imports github.com/traefik/yaegi/_test/c1
================================================
FILE: _test/import7.go
================================================
package main
import bar "github.com/traefik/yaegi/_test/foo-bar"
func main() {
println(bar.Name)
}
// Output:
// foo-bar
================================================
FILE: _test/import8.go
================================================
package main
import "github.com/traefik/yaegi/_test/b1/foo"
func main() {
println(foo.Desc)
}
// Output:
// in b1/foo
================================================
FILE: _test/import9.go
================================================
package main
import "github.com/traefik/yaegi/_test/baz-bat"
func main() {
println(baz.Name)
}
// Output:
// baz-bat
================================================
FILE: _test/inc.go
================================================
package main
func main() {
i := 2
//i++
i = i + 1
println(i)
}
// Output:
// 3
================================================
FILE: _test/inception.go
================================================
package main
import (
"log"
"github.com/traefik/yaegi/interp"
)
func main() {
log.SetFlags(log.Lshortfile)
i := interp.New(interp.Options{})
i.Use(interp.Symbols)
if _, err := i.Eval(`import "github.com/traefik/yaegi/interp"`); err != nil {
log.Fatal(err)
}
if _, err := i.Eval(`i := interp.New(interp.Options{})`); err != nil {
log.Fatal(err)
}
if _, err := i.Eval(`i.Eval("println(42)")`); err != nil {
log.Fatal(err)
}
}
================================================
FILE: _test/init0.go
================================================
package main
func init() {
println("Hello from init 1")
}
func init() {
println("Hello from init 2")
}
func main() {
println("Hello from main")
}
// Output:
// Hello from init 1
// Hello from init 2
// Hello from main
================================================
FILE: _test/init1.go
================================================
package main
func init() {
println("here")
}
func main() {
init()
}
// Error:
// _test/init1.go:8:2: undefined: init
================================================
FILE: _test/interface0.go
================================================
package main
type sample struct {
count int
}
func run(inf interface{}, name string) {
x := inf.(sample)
println(x.count, name)
}
func main() {
a := sample{2}
println(a.count)
run(a, "truc")
}
// Output:
// 2
// 2 truc
================================================
FILE: _test/interface1.go
================================================
package main
import "fmt"
type fii interface {
Hello()
}
type Boo struct {
Name string
}
func (b *Boo) Hello() {
fmt.Println("Hello", b)
fmt.Println(b.Name)
}
func inCall(foo fii) {
fmt.Println("inCall")
foo.Hello()
}
func main() {
fmt.Println("in")
boo := &Boo{"foo"}
inCall(boo)
}
// Output:
// in
// inCall
// Hello &{foo}
// foo
================================================
FILE: _test/interface10.go
================================================
package main
type Edge interface {
ReverseEdge() Edge
}
func main() {
println("hello")
}
// Output:
// hello
================================================
FILE: _test/interface11.go
================================================
package main
import "fmt"
type Error interface {
error
Code() string
}
type MyError Error
type T struct {
Name string
}
func (t *T) Error() string { return "err: " + t.Name }
func (t *T) Code() string { return "code: " + t.Name }
func newT(s string) MyError { return &T{s} }
func main() {
t := newT("foo")
fmt.Println(t.Code())
}
// Output:
// code: foo
================================================
FILE: _test/interface12.go
================================================
package main
type I1 interface {
Truc()
}
type T1 struct{}
func (T1) Truc() { println("in T1 truc") }
var x I1 = T1{}
func main() {
x.Truc()
}
// Output:
// in T1 truc
================================================
FILE: _test/interface13.go
================================================
package main
import (
"fmt"
)
type X struct{}
func (X) Foo() int {
return 1
}
func (X) Bar() int {
return 2
}
type Foo interface {
Foo() int
}
type Bar interface {
Bar() int
}
func main() {
var x X
var i Foo = x
j := i.(Bar)
fmt.Println(j.Bar())
}
// Output:
// 2
================================================
FILE: _test/interface14.go
================================================
package main
type T struct{}
func (t *T) Error() string { return "T: error" }
var invalidT = &T{}
func main() {
var err error
if err != invalidT {
println("ok")
}
}
// Output:
// ok
================================================
FILE: _test/interface15.go
================================================
package main
type Fooer interface {
Foo() string
}
type Barer interface {
//fmt.Stringer
Fooer
Bar()
}
type T struct{}
func (t *T) Foo() string { return "T: foo" }
func (*T) Bar() { println("in bar") }
var t = &T{}
func main() {
var f Barer
if f != t {
println("ok")
}
}
// Output:
// ok
================================================
FILE: _test/interface16.go
================================================
package main
import "fmt"
type Barer interface {
fmt.Stringer
Bar()
}
type T struct{}
func (*T) String() string { return "T: nothing" }
func (*T) Bar() { println("in bar") }
var t = &T{}
func main() {
var f Barer
if f != t {
println("ok")
}
}
// Output:
// ok
================================================
FILE: _test/interface17.go
================================================
package main
type T struct{}
func (t T) Error() string { return "T: error" }
var invalidT = T{}
func main() {
var err error
if err != invalidT {
println("ok")
}
}
// Output:
// ok
================================================
FILE: _test/interface18.go
================================================
package main
type T struct{}
func (t *T) Error() string { return "T: error" }
func (*T) Foo() { println("foo") }
var invalidT = &T{}
func main() {
var err error
if err != invalidT {
println("ok")
}
}
// Output:
// ok
================================================
FILE: _test/interface19.go
================================================
package main
import "fmt"
var I interface{}
func main() {
fmt.Printf("%T %v\n", I, I)
}
// Output:
// <nil> <nil>
================================================
FILE: _test/interface2.go
================================================
package main
import "fmt"
type fii interface {
Hello()
}
type Boo struct {
Name string
}
type Bar struct{}
func (b Bar) Hello() { fmt.Println("b:", b) }
func (b Boo) Hello() {
fmt.Println("Hello", b)
fmt.Println(b.Name)
}
func inCall(foo fii) {
fmt.Println("inCall")
switch a := foo.(type) {
case Boo:
a.Hello()
default:
fmt.Println("a:", a)
}
}
func main() {
boo := Boo{"foo"}
inCall(boo)
inCall(Bar{})
}
// Output:
// inCall
// Hello {foo}
// foo
// inCall
// a: {}
================================================
FILE: _test/interface20.go
================================================
package main
import "fmt"
func main() {
var a interface{}
a = string("A")
fmt.Println(a)
}
// Output:
// A
================================================
FILE: _test/interface21.go
================================================
package main
import "fmt"
func main() {
s := make([]interface{}, 1)
s[0] = 1
fmt.Println(s[0])
}
// Output:
// 1
================================================
FILE: _test/interface22.go
================================================
package main
import "fmt"
func main() {
s := make([]interface{}, 0)
s = append(s, 1)
fmt.Println(s[0])
}
// Output:
// 1
================================================
FILE: _test/interface23.go
================================================
package main
import "fmt"
func main() {
m := make(map[string]interface{})
m["A"] = string("A")
fmt.Println(m["A"])
}
// Output:
// A
================================================
FILE: _test/interface24.go
================================================
package main
import "fmt"
func main() {
m := make(map[string]interface{})
fmt.Println(m["B"])
}
// Output:
// <nil>
================================================
FILE: _test/interface25.go
================================================
package main
import "fmt"
func main() {
m := make(map[string]interface{})
m["A"] = 1
for _, v := range m {
fmt.Println(v)
}
}
// Output:
// 1
================================================
FILE: _test/interface26.go
================================================
package main
import "fmt"
func main() {
s := make([]interface{}, 0)
s = append(s, 1)
for _, v := range s {
fmt.Println(v)
}
}
// Output:
// 1
================================================
FILE: _test/interface27.go
================================================
package main
import "fmt"
var errs = map[int]error{0: nil}
func main() {
fmt.Println(errs)
}
// Output:
// map[0:<nil>]
================================================
FILE: _test/interface28.go
================================================
package main
import "fmt"
var errs = []error{nil}
func main() {
fmt.Println(errs)
}
// Output:
// [<nil>]
================================================
FILE: _test/interface29.go
================================================
package main
func main() {
var a interface{}
println(a == nil)
}
// Output:
// true
================================================
FILE: _test/interface3.go
================================================
package main
import "fmt"
type fii interface {
Hello()
}
type Boo struct {
Name string
}
func (b Boo) Hello() {
fmt.Println("Hello", b)
fmt.Println(b.Name)
}
func inCall(foo fii) {
fmt.Println("inCall")
foo.Hello()
}
func main() {
boo := Boo{"foo"}
inCall(boo)
}
// Output:
// inCall
// Hello {foo}
// foo
================================================
FILE: _test/interface30.go
================================================
package main
func main() {
var a interface{}
println(a != nil)
}
// Output:
// false
================================================
FILE: _test/interface31.go
================================================
package main
import "fmt"
func main() {
s := []interface{}{"test", 2}
fmt.Println(s[0], s[1])
}
// Output:
// test 2
================================================
FILE: _test/interface32.go
================================================
package main
import "fmt"
func main() {
s := [2]interface{}{"test", 2}
fmt.Println(s[0], s[1])
}
// Output:
// test 2
================================================
FILE: _test/interface33.go
================================================
package main
import "fmt"
func main() {
var a = map[string]interface{}{"test": "test"}
fmt.Println(a["test"])
}
// Output:
// test
================================================
FILE: _test/interface34.go
================================================
package main
import "fmt"
func main() {
s := [2]interface{}{1: "test", 0: 2}
fmt.Println(s[0], s[1])
}
// Output:
// 2 test
================================================
FILE: _test/interface35.go
================================================
package main
import "fmt"
type T struct {
I interface{}
}
func main() {
t := T{"test"}
fmt.Println(t)
}
// Output:
// {test}
================================================
FILE: _test/interface36.go
================================================
package main
import "fmt"
var (
t *S
_ I = t
_ J = t
)
type S struct {
Name string
}
func (s *S) F() int { return len(s.Name) }
func (s *S) G() int { return s.F() }
func (s *S) Ri() I { return s }
func (s *S) Rj() J { return s }
type J interface {
I
G() int
Rj() J
}
type I interface {
F() int
Ri() I
}
func main() {
var j J
fmt.Println(j)
}
// Output:
// <nil>
================================================
FILE: _test/interface37.go
================================================
package main
type I interface {
A() string
B() string
}
type s struct{}
func NewS() (I, error) {
return &s{}, nil
}
func (c *s) A() string { return "a" }
func (c *s) B() string { return "b" }
func main() {
s, _ := NewS()
println(s.A())
}
// Output:
// a
================================================
FILE: _test/interface38.go
================================================
package main
import "fmt"
type foo struct {
bar string
}
func (f foo) String() string {
return "Hello from " + f.bar
}
func main() {
var f fmt.Stringer = foo{bar: "bar"}
fmt.Println(f)
}
// Output:
// Hello from bar
================================================
FILE: _test/interface39.go
================================================
package main
import "fmt"
type foo struct {
bar string
}
func (f *foo) String() string {
return "Hello from " + f.bar
}
func main() {
var f fmt.Stringer = &foo{bar: "bar"}
fmt.Println(f)
}
// Output:
// Hello from bar
================================================
FILE: _test/interface4.go
================================================
package main
import "fmt"
type fii interface {
Hello()
}
type Boo struct {
Name string
}
type Bir struct {
Boo
}
func (b Boo) Hello() {
fmt.Println("Hello", b)
fmt.Println(b.Name)
}
func inCall(foo fii) {
fmt.Println("inCall")
foo.Hello()
}
func main() {
bir := Bir{Boo{"foo"}}
inCall(bir)
}
// Output:
// inCall
// Hello {foo}
// foo
================================================
FILE: _test/interface40.go
================================================
package main
import "fmt"
type foo struct {
bar string
}
func (f foo) String() string {
return "Hello from " + f.bar
}
func Foo(s string) fmt.Stringer {
return foo{s}
}
func main() {
f := Foo("bar")
fmt.Println(f)
}
// Output:
// Hello from bar
================================================
FILE: _test/interface41.go
================================================
package main
import "fmt"
type foo struct {
bar string
}
func (f *foo) String() string {
return "Hello from " + f.bar
}
func Foo(s string) fmt.Stringer {
return &foo{s}
}
func main() {
f := Foo("bar")
fmt.Println(f)
}
// Output:
// Hello from bar
================================================
FILE: _test/interface42.go
================================================
package main
import "fmt"
func main() {
v := interface{}(0)
fmt.Println(v)
}
// Output:
// 0
================================================
FILE: _test/interface43.go
================================================
package main
import "fmt"
func main() {
v := interface{}(nil)
fmt.Println(v)
}
// Output:
// <nil>
================================================
FILE: _test/interface44.go
================================================
package main
type S struct {
a int
}
func main() {
var i interface{} = S{a: 1}
s, ok := i.(S)
if !ok {
println("bad")
return
}
println(s.a)
}
// Output:
// 1
================================================
FILE: _test/interface45.go
================================================
package main
import "fmt"
func main() {
var i interface{} = 1
var s struct{}
s, _ = i.(struct{})
fmt.Println(s)
}
// Output:
// {}
================================================
FILE: _test/interface46.go
================================================
package main
import "fmt"
type I interface {
Foo() string
}
type Printer struct {
i I
}
func New(i I) *Printer {
return &Printer{
i: i,
}
}
func (p *Printer) Print() {
fmt.Println(p.i.Foo())
}
type T struct{}
func (t *T) Foo() string {
return "test"
}
func main() {
g := New(&T{})
g.Print()
}
// Output:
// test
================================================
FILE: _test/interface47.go
================================================
package main
type Doer interface {
Do() error
}
type T struct {
Name string
}
func (t *T) Do() error { println("in do"); return nil }
func f() (Doer, error) { return &T{"truc"}, nil }
type Ev struct {
doer func() (Doer, error)
}
func (e *Ev) do() {
d, _ := e.doer()
d.Do()
}
func main() {
e := &Ev{f}
println(e != nil)
e.do()
}
// Output:
// true
// in do
================================================
FILE: _test/interface48.go
================================================
package main
import "fmt"
type I1 interface{ A }
type A = I2
type I2 interface{ F() I1 }
func main() {
var i I1
fmt.Println(i)
}
// Output:
// <nil>
================================================
FILE: _test/interface49.go
================================================
package main
type Descriptor interface {
ParentFile() FileDescriptor
}
type FileDescriptor interface {
Enums() EnumDescriptors
Services() ServiceDescriptors
}
type EnumDescriptors interface {
Get(i int) EnumDescriptor
}
type EnumDescriptor interface {
Values() EnumValueDescriptors
}
type EnumValueDescriptors interface {
Get(i int) EnumValueDescriptor
}
type EnumValueDescriptor interface {
Descriptor
}
type ServiceDescriptors interface {
Get(i int) ServiceDescriptor
}
type ServiceDescriptor interface {
Descriptor
isServiceDescriptor
}
type isServiceDescriptor interface{ ProtoType(ServiceDescriptor) }
func main() {
var d Descriptor
println(d == nil)
}
// Output:
// true
================================================
FILE: _test/interface5.go
================================================
package main
import "fmt"
type Myint int
func (i Myint) Double() { fmt.Println("Myint:", i, i) }
type Boo interface {
Double()
}
func f(boo Boo) {
boo.Double()
}
func main() {
var i Myint = 3
f(i)
}
// Output:
// Myint: 3 3
================================================
FILE: _test/interface50.go
================================================
package main
func main() {
a := true
var b interface{} = 5
println(b.(int))
b = a == true
println(b.(bool))
}
// Output:
// 5
// true
================================================
FILE: _test/interface51.go
================================================
package main
type Error interface {
error
Message() string
}
type T struct {
Msg string
}
func (t *T) Error() string { return t.Msg }
func (t *T) Message() string { return "message:" + t.Msg }
func newError() Error { return &T{"test"} }
func main() {
e := newError()
println(e.Error())
}
// Output:
// test
================================================
FILE: _test/interface52.go
================================================
package main
import "testing"
func main() {
t := testing.T{}
var tb testing.TB
tb = &t
if tb.TempDir() == "" {
println("FAIL")
return
}
println("PASS")
}
// Output:
// PASS
================================================
FILE: _test/interface6.go
================================================
package main
import "fmt"
type Myint int
func (i Myint) Double() { fmt.Println("Myint:", i, i) }
type Boo interface {
Double()
}
func f(boo Boo) { boo.Double() }
func g(i int) Boo { return Myint(i) }
func main() {
f(g(4))
}
// Output:
// Myint: 4 4
================================================
FILE: _test/interface7.go
================================================
package main
import "fmt"
type T int
func (t T) Error() string { return fmt.Sprintf("This is an error from T: %d", t) }
func f(t T) error { return t }
func main() {
x := T(1)
fmt.Println(f(x))
}
// Output:
// This is an error from T: 1
================================================
FILE: _test/interface8.go
================================================
package main
import (
"fmt"
)
var _ = (HelloInterface)((*Hello)(nil))
type HelloInterface interface {
Hi() string
}
type Hello struct{}
func (h *Hello) Hi() string {
return "hi"
}
func main() {
h := &Hello{}
fmt.Println(h.Hi())
}
// Output:
// hi
================================================
FILE: _test/interface9.go
================================================
package main
import "fmt"
type Int int
func (I Int) String() string {
return "foo"
}
func main() {
var i Int
var st fmt.Stringer = i
fmt.Println(st.String())
}
// Output:
// foo
================================================
FILE: _test/interp.gi
================================================
package main
import (
"github.com/traefik/yaegi/interp"
)
func main() {
i := interp.New(interp.Opt{})
i.Eval(`println("Hello")`)
}
// Output:
// Hello
================================================
FILE: _test/interp2.gi
================================================
package main
import (
"github.com/traefik/yaegi/interp"
)
func main() {
i := interp.New(interp.Opt{})
i.Use(interp.ExportValue, interp.ExportType)
i.Eval(`import "github.com/traefik/yaegi/interp"`)
i.Eval(`i := interp.New(interp.Opt{})`)
i.Eval(`i.Eval("println(42)")`)
}
// Output:
// 42
================================================
FILE: _test/io0.go
================================================
package main
import (
"crypto/rand"
"fmt"
"io"
)
func main() {
var buf [16]byte
fmt.Println(buf)
io.ReadFull(rand.Reader, buf[:])
//io.ReadFull(rand.Reader, buf)
fmt.Println(buf)
}
================================================
FILE: _test/io1.go
================================================
package main
import (
"encoding/base64"
"fmt"
)
func main() {
var buf [4]byte
s := base64.RawStdEncoding.EncodeToString(buf[:])
fmt.Println(s)
}
// Output:
// AAAAAA
================================================
FILE: _test/io2.go
================================================
package main
import (
"fmt"
"io"
"log"
"strings"
)
func main() {
r := strings.NewReader("Go is a general-purpose language designed with systems programming in mind.")
b, err := io.ReadAll(r)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", b)
}
// Output:
// Go is a general-purpose language designed with systems programming in mind.
================================================
FILE: _test/iota.go
================================================
package main
import "fmt"
const (
Foo = iota
Bar
Baz
)
const (
Asm = iota
C
Java
Go
)
func main() {
fmt.Println(Foo, Bar, Baz)
fmt.Println(Asm, C, Java, Go)
}
// Output:
// 0 1 2
// 0 1 2 3
================================================
FILE: _test/iota0.go
================================================
package main
import "fmt"
func main() {
const (
Foo = iota
Bar
Baz
)
const (
Asm = iota
C
Java
Go
)
fmt.Println(Foo, Bar, Baz)
fmt.Println(Asm, C, Java, Go)
}
// Output:
// 0 1 2
// 0 1 2 3
================================================
FILE: _test/ipp_as_key.go
================================================
package main
import (
"guthib.com/toto" // pkg name is actually titi
"guthib.com/tata" // pkg name is actually tutu
)
func main() {
println("Hello", titi.Quux())
println("Hello", tutu.Quux())
}
// GOPATH:testdata/redeclaration-global7
// Output:
// Hello bar
// Hello baz
================================================
FILE: _test/issue-1007.go
================================================
package main
type TypeA struct {
B TypeB
}
type TypeB struct {
C1 *TypeC
C2 *TypeC
}
type TypeC struct {
Val string
D *TypeD
D2 *TypeD
}
type TypeD struct {
Name string
}
func build() *TypeA {
return &TypeA{
B: TypeB{
C2: &TypeC{Val: "22"},
},
}
}
func Bar(s string) string {
a := build()
return s + "-" + a.B.C2.Val
}
func main() {
println(Bar("test"))
}
// Output:
// test-22
================================================
FILE: _test/issue-1010.go
================================================
package main
import (
"encoding/json"
"fmt"
)
type MyJsonMarshaler struct{ n int }
func (m MyJsonMarshaler) MarshalJSON() ([]byte, error) {
return []byte(fmt.Sprintf(`{"num": %d}`, m.n)), nil
}
func main() {
ch := make(chan json.Marshaler, 1)
ch <- MyJsonMarshaler{2}
m, err := json.Marshal(<-ch)
fmt.Println(string(m), err)
}
// Output:
// {"num":2} <nil>
================================================
FILE: _test/issue-1022.go
================================================
package main
import "fmt"
func main() {
defer func() {
r := recover()
if r != nil {
fmt.Println(r)
}
}()
panic("Ho Ho Ho!")
}
// Output:
// Ho Ho Ho!
================================================
FILE: _test/issue-1052.go
================================================
package main
import "fmt"
func main() {
a, b := 1, 1
for i := 0; i < 10; i++ {
fmt.Println(a)
a, b = b, a+b
}
}
// Output:
// 1
// 1
// 2
// 3
// 5
// 8
// 13
// 21
// 34
// 55
================================================
FILE: _test/issue-1065.go
================================================
package main
import "fmt"
type AST struct {
Num int
Children []AST
}
func newAST(num int, root AST, children ...AST) AST {
return AST{num, append([]AST{root}, children...)}
}
func main() {
ast := newAST(1, AST{}, AST{})
fmt.Println(ast)
}
// Output:
// {1 [{0 []} {0 []}]}
================================================
FILE: _test/issue-1068.go
================================================
package main
type I interface {
Hello()
}
type T struct{}
func (t T) Hello() { println("hello") }
type I2 I
func main() {
var i I2 = T{}
i.Hello()
}
// Output:
// hello
================================================
FILE: _test/issue-1088.go
================================================
package main
import "fmt"
func main() {
for i, ch := range "日本語" {
fmt.Printf("%#U starts at byte position %d\n", ch, i)
}
}
// Output:
// U+65E5 '日' starts at byte position 0
// U+672C '本' starts at byte position 3
// U+8A9E '語' starts at byte position 6
================================================
FILE: _test/issue-1089.go
================================================
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(`"` + time.RFC3339Nano + `"`)
}
// Output:
// "2006-01-02T15:04:05.999999999Z07:00"
================================================
FILE: _test/issue-1093.go
================================================
package main
func b() string {
return "b"
}
func main() {
var x int
x = "a" + b()
}
// Error:
// 9:6: cannot use type untyped string as type int in assignment
================================================
FILE: _test/issue-1094.go
================================================
package main
import "fmt"
func main() {
var x interface{}
x = "a" + fmt.Sprintf("b")
fmt.Printf("%v %T\n", x, x)
}
// Output:
// ab string
================================================
FILE: _test/issue-1101.go
================================================
package main
import (
"fmt"
"net/http"
)
func main() {
method := "POST"
switch method {
case http.MethodPost:
fmt.Println("It's a post!")
}
}
// Output:
// It's a post!
================================================
FILE: _test/issue-1115.go
================================================
package main
import "fmt"
func main() {
outer:
for y := 0; y < 10; y++ {
for x := 0; x < 10; x++ {
if x == 5 && y == 5 {
break outer
}
}
fmt.Println(y)
}
fmt.Println("Yay! I finished!")
}
// Output:
// 0
// 1
// 2
// 3
// 4
// Yay! I finished!
================================================
FILE: _test/issue-1126.go
================================================
package main
import (
"errors"
"fmt"
"strings"
)
func main() {
err := errors.New("hello there")
switch true {
case err == nil:
break
case strings.Contains(err.Error(), "hello"):
fmt.Println("True!")
default:
fmt.Println("False!")
}
}
// Output:
// True!
================================================
FILE: _test/issue-1128.go
================================================
package main
import "net"
func main() {
c := append(net.Buffers{}, []byte{})
println(len(c))
}
// Output:
// 1
================================================
FILE: _test/issue-1134.go
================================================
package main
type I interface {
Hello()
}
type T struct {
Name string
Child []*T
}
func (t *T) Hello() { println("Hello", t.Name) }
func main() {
var i I = new(T)
i.Hello()
}
// Output:
// Hello
================================================
FILE: _test/issue-1136.go
================================================
package main
import (
"fmt"
"io"
)
type T struct {
r io.Reader
}
func (t *T) Read(p []byte) (n int, err error) { n, err = t.r.Read(p); return }
func main() {
x := io.LimitedReader{}
y := io.Reader(&x)
y = &T{y}
fmt.Println(y.Read([]byte("")))
}
// Output:
// 0 EOF
================================================
FILE: _test/issue-1145.go
================================================
package main
import "sync"
type F func()
func main() {
var wg sync.WaitGroup
var f F = wg.Done
println(f != nil)
}
// Output:
// true
================================================
FILE: _test/issue-1156.go
================================================
package main
type myInterface interface {
myFunc() string
}
type V struct{}
func (v *V) myFunc() string { return "hello" }
type U struct {
v myInterface
}
func (u *U) myFunc() string { return u.v.myFunc() }
func main() {
x := V{}
y := myInterface(&x)
y = &U{y}
println(y.myFunc())
}
// Output:
// hello
================================================
FILE: _test/issue-1163.go
================================================
package main
import "fmt"
type WidgetEvent struct {
Nothing string
}
type WidgetControl interface {
HandleEvent(e *WidgetEvent)
}
type Button struct{}
func (b *Button) HandleEvent(e *WidgetEvent) {
}
type WindowEvent struct {
Something int
}
type Window struct {
Widget WidgetControl
}
func (w *Window) HandleEvent(e *WindowEvent) {
}
func main() {
window := &Window{
Widget: &Button{},
}
windowevent := &WindowEvent{}
// The next line uses the signature from the wrong method, resulting in an error.
// Renaming one of the clashing method names fixes the problem.
window.HandleEvent(windowevent)
fmt.Println("OK!")
}
// Output:
// OK!
================================================
FILE: _test/issue-1166.go
================================================
package main
import (
"fmt"
"io"
)
type T []byte
func (t *T) Write(p []byte) (n int, err error) { *t = append(*t, p...); return len(p), nil }
func foo(w io.Writer) {
a := w.(*T)
fmt.Fprint(a, "test")
fmt.Printf("%s\n", *a)
}
func main() {
x := T{}
foo(&x)
}
// Output:
// test
================================================
FILE: _test/issue-1167.go
================================================
package main
import (
"crypto/ecdsa"
"crypto/elliptic"
"crypto/rand"
)
func main() {
key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
if err != nil {
panic(err)
}
pub := key.Public().(*ecdsa.PublicKey)
println(pub.Params().Name)
}
// Output:
// P-256
================================================
FILE: _test/issue-1173.go
================================================
package main
var real = func() { println("Hello") }
func main() {
real()
}
// Output:
// Hello
================================================
FILE: _test/issue-1175.go
================================================
package main
type Level int8
const (
a Level = -1
b Level = 5
d = b - a + 1
)
type counters [d]int
func main() {
println(len(counters{}))
}
// Output:
// 7
================================================
FILE: _test/issue-1177.go
================================================
package main
type counters [3][16]int
func main() {
cs := &counters{}
p := &cs[0][1]
*p = 2
println(cs[0][1])
}
// Output:
// 2
================================================
FILE: _test/issue-1179.go
================================================
package main
type I interface {
F()
}
type T struct {
Name string
}
func (t *T) F() { println("in F", t.Name) }
func NewI(s string) I { return newT(s) }
func newT(s string) *T { return &T{s} }
func main() {
i := NewI("test")
i.F()
}
// Output:
// in F test
================================================
FILE: _test/issue-1181.go
================================================
package main
func main() {
a, b := 1, 2
a, b = b, -a
println(a, b)
}
// Output:
// 2 -1
================================================
FILE: _test/issue-1185.go
================================================
package main
import "io"
type B []byte
func (b B) Write(p []byte) (n int, err error) {
b = p
return len(p), nil
}
func main() {
b := B{}
a := make([]io.Writer, 0)
a = append(a, b)
println(len(a))
}
// Output:
// 1
================================================
FILE: _test/issue-1187.go
================================================
package main
import (
"io"
"os"
)
type sink interface {
io.Writer
io.Closer
}
func newSink() sink {
// return os.Stdout // Stdout is special in yaegi tests
file, err := os.CreateTemp("", "yaegi-test.*")
if err != nil {
panic(err)
}
return file
}
func main() {
s := newSink()
n, err := s.Write([]byte("Hello\n"))
if err != nil {
panic(err)
}
var writer io.Writer = s
m, err := writer.Write([]byte("Hello\n"))
if err != nil {
panic(err)
}
var closer io.Closer = s
err = closer.Close()
if err != nil {
panic(err)
}
err = os.Remove(s.(*os.File).Name())
if err != nil {
panic(err)
}
println(m, n)
}
// Output:
// 6 6
================================================
FILE: _test/issue-1189.go
================================================
package main
type I interface {
Foo() int
}
type S1 struct {
i int
}
func (s S1) Foo() int { return s.i }
type S2 struct{}
func (s *S2) Foo() int { return 42 }
func main() {
Is := map[string]I{
"foo": S1{21},
"bar": &S2{},
}
n := 0
for _, s := range Is {
n += s.Foo()
}
bar := "bar"
println(n, Is["foo"].Foo(), Is[bar].Foo())
}
// Output:
// 63 21 42
================================================
FILE: _test/issue-1202.go
================================================
package main
import "fmt"
type foobar struct {
callback func(string) func()
}
func cb(text string) func() {
return func() {
fmt.Println(text)
}
}
func main() {
// These ways of invoking it all work...
cb("Hi from inline callback!")()
asVarTest1 := cb("Hi from asVarTest1 callback!")
asVarTest1()
asVarTest2 := cb
asVarTest2("Hi from asVarTest2 callback!")()
// But inside a struct panics in yaegi...
asStructField := &foobar{callback: cb}
asStructField.callback("Hi from struct field callback!")() // <--- panics here
}
// Output:
// Hi from inline callback!
// Hi from asVarTest1 callback!
// Hi from asVarTest2 callback!
// Hi from struct field callback!
================================================
FILE: _test/issue-1205.go
================================================
package main
type Option interface {
apply()
}
func f(opts ...Option) {
for _, opt := range opts {
opt.apply()
}
}
type T struct{}
func (t *T) apply() { println("in apply") }
func main() {
opt := []Option{&T{}}
f(opt[0]) // works
f(opt...) // fails
}
// Output:
// in apply
// in apply
================================================
FILE: _test/issue-1208.go
================================================
package main
type Enabler interface {
Enabled() bool
}
type Logger struct {
core Enabler
}
func (log *Logger) GetCore() Enabler { return log.core }
type T struct{}
func (t *T) Enabled() bool { return true }
func main() {
base := &Logger{&T{}}
println(base.GetCore().Enabled())
}
// Output:
// true
================================================
FILE: _test/issue-1260.go
================================================
package main
import (
"fmt"
"io"
"os"
)
type WriteSyncer interface {
io.Writer
Sync() error
}
type Sink interface {
WriteSyncer
io.Closer
}
func newFileSink(path string) (Sink, error) {
return os.OpenFile(path, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
}
type Sink1 struct{ name string }
func (s Sink1) Write(b []byte) (int, error) { println("in Write"); return 0, nil }
func (s Sink1) Sync() error { println("in Sync"); return nil }
func (s Sink1) Close() error { println("in Close", s.name); return nil }
func newS1(name string) Sink { return Sink1{name} }
func newS1p(name string) Sink { return &Sink1{name} }
type Sink2 struct{ name string }
func (s *Sink2) Write(b []byte) (int, error) { println("in Write"); return 0, nil }
func (s *Sink2) Sync() error { println("in Sync"); return nil }
func (s *Sink2) Close() error { println("in Close", s.name); return nil }
func newS2(name string) Sink { return Sink1{name} }
func main() {
tmpfile, err := os.CreateTemp("", "xxx")
if err != nil {
panic(err)
}
defer os.Remove(tmpfile.Name())
closers := []io.Closer{}
sink, err := newFileSink(tmpfile.Name())
if err != nil {
panic(err)
}
closers = append(closers, sink)
s1p := newS1p("ptr")
s1 := newS1("struct")
s2 := newS2("ptr2")
closers = append(closers, s1p, s1, s2)
for _, closer := range closers {
fmt.Println(closer.Close())
}
}
// Output:
// <nil>
// in Close ptr
// <nil>
// in Close struct
// <nil>
// in Close ptr2
// <nil>
================================================
FILE: _test/issue-1276.go
================================================
package main
import (
"flag"
)
type customFlag struct{}
func (cf customFlag) String() string {
return "custom flag"
}
func (cf customFlag) Set(string) error {
return nil
}
func main() {
flag.Var(customFlag{}, "cf", "custom flag")
flag.Parse()
println("Hello, playground")
}
// Output:
// Hello, playground
================================================
FILE: _test/issue-1280.go
================================================
package main
import (
"io"
"log"
"os"
)
type DBReader interface {
io.ReadCloser
io.ReaderAt
}
type DB struct {
f DBReader
}
func main() {
f, err := os.Open(os.DevNull)
if err != nil {
log.Fatal(err)
}
d := &DB{f}
data := make([]byte, 1)
_, _ = d.f.ReadAt(data, 0)
println("bye")
}
// Output:
// bye
================================================
FILE: _test/issue-1285.go
================================================
package main
type (
T1 struct{ Path [12]int8 }
T2 struct{ Path *[12]int8 }
)
var (
t11 = &T1{}
t21 = &T2{}
)
func main() {
b := [12]byte{}
t12 := &T1{}
t22 := &T2{}
b11 := (*[len(t11.Path)]byte)(&b)
b12 := (*[len(t12.Path)]byte)(&b)
b21 := (*[len(t21.Path)]byte)(&b)
b22 := (*[len(t22.Path)]byte)(&b)
println(len(b11), len(b12), len(b21), len(b22))
}
// Output:
// 12 12 12 12
================================================
FILE: _test/issue-1288.go
================================================
package main
func main() {
println("Hi")
goto done
done:
}
// Output:
// Hi
================================================
FILE: _test/issue-1300.go
================================================
package main
const buflen = 512
type T struct {
buf []byte
}
func f(t *T) { *t = T{buf: make([]byte, 0, buflen)} }
func main() {
s := T{}
println(cap(s.buf))
f(&s)
println(cap(s.buf))
}
// Output:
// 0
// 512
================================================
FILE: _test/issue-1304.go
================================================
package main
type Node struct {
Name string
Alias *Node
Child []*Node
}
func main() {
n := &Node{Name: "parent"}
n.Child = append(n.Child, &Node{Name: "child"})
println(n.Name, n.Child[0].Name)
}
// Output:
// parent child
================================================
FILE: _test/issue-1306.go
================================================
package main
import "fmt"
func check() (result bool, err error) {
return true, nil
}
func main() {
result, error := check()
fmt.Println(result, error)
}
// Output:
// true <nil>
================================================
FILE: _test/issue-1308.go
================================================
package main
import "fmt"
type test struct {
v interface{}
s string
}
type T struct {
name string
}
func main() {
t := []test{
{
v: []interface{}{
T{"hello"},
},
s: "world",
},
}
fmt.Println(t)
}
// Output:
// [{[{hello}] world}]
================================================
FILE: _test/issue-1311.go
================================================
package main
type T struct {
v interface{}
}
func f() (ret int64, err error) {
ret += 2
return
}
func main() {
t := &T{}
t.v, _ = f()
println(t.v.(int64))
}
// Output:
// 2
================================================
FILE: _test/issue-1315.go
================================================
package main
type Intf interface {
M()
}
type T struct {
s string
}
func (t *T) M() { println("in M") }
func f(i interface{}) {
switch j := i.(type) {
case Intf:
j.M()
default:
println("default")
}
}
func main() {
var i Intf
var k interface{} = 1
i = &T{"hello"}
f(i)
f(k)
}
// Output:
// in M
// default
================================================
FILE: _test/issue-1320.go
================================================
package main
type Pooler interface {
Get() string
}
type baseClient struct {
connPool Pooler
}
type connPool struct {
name string
}
func (c *connPool) Get() string { return c.name }
func newBaseClient(i int, p Pooler) *baseClient {
return &baseClient{connPool: p}
}
func newConnPool() *connPool { return &connPool{name: "connPool"} }
func main() {
b := newBaseClient(0, newConnPool())
println(b.connPool.(*connPool).name)
}
// Output:
// connPool
================================================
FILE: _test/issue-1326.go
================================================
package main
type Option interface {
apply(*T)
}
type T struct {
s string
}
type opt struct {
name string
}
func (o *opt) apply(t *T) {
println(o.name)
}
func BuildOptions() []Option {
return []Option{
&opt{"opt1"},
&opt{"opt2"},
}
}
func NewT(name string, options ...Option) *T {
t := &T{name}
for _, opt := range options {
opt.apply(t)
}
return t
}
func main() {
t := NewT("hello", BuildOptions()...)
println(t.s)
}
// Output:
// opt1
// opt2
// hello
================================================
FILE: _test/issue-1328.go
================================================
package main
import (
"crypto/sha1"
"encoding/hex"
)
func main() {
script := "hello"
sumRaw := sha1.Sum([]byte(script))
sum := hex.EncodeToString(sumRaw[:])
println(sum)
}
// Output:
// aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
================================================
FILE: _test/issue-1330.go
================================================
package main
import (
"fmt"
"io"
"net"
)
type wrappedConn struct {
net.Conn
}
func main() {
_, err := net.Listen("tcp", "127.0.0.1:49153")
if err != nil {
panic(err)
}
dialer := &net.Dialer{
LocalAddr: &net.TCPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: 0,
},
}
conn, err := dialer.Dial("tcp", "127.0.0.1:49153")
if err != nil {
panic(err)
}
defer conn.Close()
t := &wrappedConn{conn}
var w io.Writer = t
if n, err := w.Write([]byte("hello")); err != nil {
fmt.Println(err)
} else {
fmt.Println(n)
}
}
// Output:
// 5
================================================
FILE: _test/issue-1332.go
================================================
package main
func run(fn func(name string)) { fn("test") }
type T2 struct {
name string
}
func (t *T2) f(s string) { println(s, t.name) }
func main() {
t2 := &T2{"foo"}
run(t2.f)
}
// Output:
// test foo
================================================
FILE: _test/issue-1333.go
================================================
package main
import (
"fmt"
"io"
"net/http"
"net/http/httptest"
)
func mock(name string) http.HandlerFunc {
return func(rw http.ResponseWriter, req *http.Request) {
fmt.Fprint(rw, "Hello ", name)
}
}
func client(uri string) {
resp, err := http.Get(uri)
if err != nil {
panic(err)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}
func main() {
mux := http.NewServeMux()
server := httptest.NewServer(mux)
defer server.Close()
mux.Handle("/", mock("foo"))
client(server.URL)
}
// Output:
// Hello foo
================================================
FILE: _test/issue-1337.go
================================================
package main
import (
"io"
"os"
)
func f(i interface{}) {
switch at := i.(type) {
case int, int8:
println("integer", at)
case io.Reader:
println("reader")
}
println("bye")
}
func main() {
var fd *os.File
var r io.Reader = fd
f(r)
}
// Output:
// reader
// bye
================================================
FILE: _test/issue-1342.go
================================================
package main
import "fmt"
func main() {
var a interface{}
a = "a"
fmt.Println(a, a == "a")
}
// Output:
// a true
================================================
FILE: _test/issue-1344.go
================================================
package main
import "fmt"
func main() {
var m = map[string]interface{}{"a": "a"}
a, _ := m["a"]
b, ok := a.(string)
fmt.Println("a:", a, ", b:", b, ", ok:", ok)
}
// Output:
// a: a , b: a , ok: true
================================================
FILE: _test/issue-1354.go
================================================
package main
func main() {
println(test()) // Go prints true, Yaegi false
}
func test() bool {
if true {
goto label
}
goto label
label:
println("Go continues here")
return true
println("Yaegi goes straight to this return (this line is never printed)")
return false
}
// Output:
// Go continues here
// true
================================================
FILE: _test/issue-1355.go
================================================
package main
import "github.com/traefik/yaegi/_test/p2"
func f(i interface{}) {
_, ok := i.(p2.I)
println("ok:", ok)
}
func main() {
var v *p2.T
var i interface{}
i = v
_, ok := i.(p2.I)
println("ok:", ok)
f(v)
}
// Output:
// ok: true
// ok: true
================================================
FILE: _test/issue-1360.go
================================================
package main
import (
"fmt"
. "net"
)
func main() {
v := IP{}
fmt.Println(v)
}
// Output:
// <nil>
================================================
FILE: _test/issue-1361.go
================================================
package main
import (
"fmt"
"math"
)
type obj struct {
num float64
}
type Fun func(o *obj) (r *obj, err error)
func numFun(fn func(f float64) float64) Fun {
return func(o *obj) (*obj, error) {
return &obj{fn(o.num)}, nil
}
}
func main() {
f := numFun(math.Cos)
r, err := f(&obj{})
fmt.Println(r, err)
}
// Output:
// &{1} <nil>
================================================
FILE: _test/issue-1364.go
================================================
package main
import (
"fmt"
"strconv"
)
func main() {
var value interface{}
var err error
value, err = strconv.ParseFloat("123", 64)
fmt.Println(value, err)
}
// Output:
// 123 <nil>
================================================
FILE: _test/issue-1365.go
================================================
package main
func genInt() (int, error) { return 3, nil }
func getInt() (value int) {
value, err := genInt()
if err != nil {
panic(err)
}
return
}
func main() {
println(getInt())
}
// Output:
// 3
================================================
FILE: _test/issue-1368.go
================================================
package main
const dollar byte = 36
func main() {
var c byte = 36
switch true {
case c == dollar:
println("ok")
default:
println("not ok")
}
}
// Output:
// ok
================================================
FILE: _test/issue-1371.go
================================================
package main
import "fmt"
type node struct {
parent *node
child []*node
key string
}
func main() {
root := &node{key: "root"}
root.child = nil
fmt.Println("root:", root)
}
// Output:
// root: &{<nil> [] root}
================================================
FILE: _test/issue-1373.go
================================================
package main
import (
"fmt"
"go/ast"
)
func NewBadExpr() ast.Expr {
return &ast.BadExpr{}
}
func main() {
fmt.Printf("%T\n", NewBadExpr().(*ast.BadExpr))
}
// Output:
// *ast.BadExpr
================================================
FILE: _test/issue-1375.go
================================================
package main
import "fmt"
type Option func(*Struct)
func WithOption(opt string) Option {
return func(s *Struct) {
s.opt = opt
}
}
type Struct struct {
opt string
}
func New(opts ...Option) *Struct {
s := new(Struct)
for _, opt := range opts {
opt(s)
}
return s
}
func (s *Struct) ShowOption() {
fmt.Println(s.opt)
}
func main() {
opts := []Option{
WithOption("test"),
}
s := New(opts...)
s.ShowOption()
}
// Output:
// test
================================================
FILE: _test/issue-1378.go
================================================
package main
import (
"fmt"
"time"
)
func main() {
t, err := time.Parse(time.RFC3339, "2006-01-02T15:04:05Z")
if err != nil {
panic(err)
}
fn := func() error {
_, err := t.GobEncode()
return err
}
fmt.Println(fn())
}
// Output:
// <nil>
================================================
FILE: _test/issue-1381.go
================================================
package main
import (
"bytes"
"fmt"
)
func main() {
var bufPtrOne *bytes.Buffer
var bufPtrTwo *bytes.Buffer
var bufPtrThree *bytes.Buffer
var bufPtrFour *bytes.Buffer
for i := 0; i < 2; i++ {
bufOne := bytes.Buffer{}
bufTwo := &bytes.Buffer{}
var bufThree bytes.Buffer
bufFour := new(bytes.Buffer)
if bufPtrOne == nil {
bufPtrOne = &bufOne
} else if bufPtrOne == &bufOne {
fmt.Println("bufOne was not properly redeclared")
} else {
fmt.Println("bufOne is properly redeclared")
}
if bufPtrTwo == nil {
bufPtrTwo = bufTwo
} else if bufPtrTwo == bufTwo {
fmt.Println("bufTwo was not properly redeclared")
} else {
fmt.Println("bufTwo is properly redeclared")
}
if bufPtrThree == nil {
bufPtrThree = &bufThree
} else if bufPtrThree == &bufThree {
fmt.Println("bufThree was not properly redeclared")
} else {
fmt.Println("bufThree is properly redeclared")
}
if bufPtrFour == nil {
bufPtrFour = bufFour
} else if bufPtrFour == bufFour {
fmt.Println("bufFour was not properly redeclared")
} else {
fmt.Println("bufFour is properly redeclared")
}
}
}
// Output:
// bufOne is properly redeclared
// bufTwo is properly redeclared
// bufThree is properly redeclared
// bufFour is properly redeclared
================================================
FILE: _test/issue-1404.go
================================================
package main
type I interface {
inI()
}
type T struct {
name string
}
func (t *T) inI() {}
func main() {
var i I = &T{name: "foo"}
if i, ok := i.(*T); ok {
println(i.name)
}
}
// Output:
// foo
================================================
FILE: _test/issue-1408.go
================================================
package main
type (
Number = int32
Number2 = Number
)
func f(n Number2) { println(n) }
func main() {
var n Number = 5
f(n)
}
// Output:
// 5
================================================
FILE: _test/issue-1411.go
================================================
package main
type Number int32
func (n Number) IsValid() bool { return true }
type Number1 = Number
type Number2 = Number1
func main() {
a := Number2(5)
println(a.IsValid())
}
// Output: true
================================================
FILE: _test/issue-1416.go
==============================
gitextract_wer3ebvq/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ └── feature_request.yml
│ └── workflows/
│ ├── go-cross.yml
│ ├── main.yml
│ └── release.yml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yml
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── README.md
├── _test/
│ ├── a1.go
│ ├── a10.go
│ ├── a11.go
│ ├── a12.go
│ ├── a13.go
│ ├── a14.go
│ ├── a15.go
│ ├── a16.go
│ ├── a17.go
│ ├── a18.go
│ ├── a19.go
│ ├── a2.go
│ ├── a20.go
│ ├── a21.go
│ ├── a22.go
│ ├── a23.go
│ ├── a24.go
│ ├── a25.go
│ ├── a26.go
│ ├── a27.go
│ ├── a28.go
│ ├── a29.go
│ ├── a3.go
│ ├── a30.go
│ ├── a31.go
│ ├── a32.go
│ ├── a33.go
│ ├── a34.go
│ ├── a35.go
│ ├── a36.go
│ ├── a37.go
│ ├── a38.go
│ ├── a39.go
│ ├── a4.go
│ ├── a40.go
│ ├── a41.go
│ ├── a42.go
│ ├── a43.go
│ ├── a44.go
│ ├── a5.go
│ ├── a6.go
│ ├── a7.go
│ ├── a8.go
│ ├── a9.go
│ ├── add0.go
│ ├── add1.go
│ ├── add2.go
│ ├── addr0.go
│ ├── addr1.go
│ ├── addr2.go
│ ├── addr3.go
│ ├── addr4.go
│ ├── addr5.go
│ ├── and.go
│ ├── and0.go
│ ├── and1.go
│ ├── and2.go
│ ├── and3.go
│ ├── append0.go
│ ├── append1.go
│ ├── append2.go
│ ├── append3.go
│ ├── append4.go
│ ├── assert0.go
│ ├── assert1.go
│ ├── assert2.go
│ ├── assert3.go
│ ├── assert4.go
│ ├── assign.go
│ ├── assign0.go
│ ├── assign1.go
│ ├── assign10.go
│ ├── assign11.go
│ ├── assign12.go
│ ├── assign13.go
│ ├── assign14.go
│ ├── assign15.go
│ ├── assign16.go
│ ├── assign17.go
│ ├── assign18.go
│ ├── assign19.go
│ ├── assign2.go
│ ├── assign3.go
│ ├── assign4.go
│ ├── assign5.go
│ ├── assign6.go
│ ├── assign7.go
│ ├── assign8.go
│ ├── assign9.go
│ ├── b1/
│ │ └── foo/
│ │ └── foo.go
│ ├── b2/
│ │ └── foo/
│ │ └── foo.go
│ ├── bad0.go
│ ├── baz-bat/
│ │ └── baz-bat.go
│ ├── bin.go
│ ├── bin0.go
│ ├── bin1.go
│ ├── bin2.go
│ ├── bin3.go
│ ├── bin4.go
│ ├── bin5.go
│ ├── binstruct_ptr_map0.go
│ ├── binstruct_ptr_slice0.go
│ ├── binstruct_slice0.go
│ ├── bltn.go
│ ├── bltn0.go
│ ├── bool.go
│ ├── bool0.go
│ ├── bool1.go
│ ├── bool2.go
│ ├── bool3.go
│ ├── bool4.go
│ ├── bool5.go
│ ├── break0.go
│ ├── break1.go
│ ├── break2.go
│ ├── break3.go
│ ├── c1/
│ │ └── c1.go
│ ├── c2/
│ │ └── c2.go
│ ├── cap0.go
│ ├── chan0.go
│ ├── chan1.go
│ ├── chan10.go
│ ├── chan2.go
│ ├── chan3.go
│ ├── chan4.go
│ ├── chan5.go
│ ├── chan6.go
│ ├── chan7.go
│ ├── chan8.go
│ ├── chan9.go
│ ├── cli1.go
│ ├── cli2.go
│ ├── cli3.go
│ ├── cli4.go
│ ├── cli5.go
│ ├── cli6.go
│ ├── cli7.go
│ ├── cli8.go
│ ├── closure0.go
│ ├── closure1.go
│ ├── closure10.go
│ ├── closure11.go
│ ├── closure12.go
│ ├── closure13.go
│ ├── closure14.go
│ ├── closure15.go
│ ├── closure16.go
│ ├── closure17.go
│ ├── closure18.go
│ ├── closure19.go
│ ├── closure2.go
│ ├── closure20.go
│ ├── closure3.go
│ ├── closure4.go
│ ├── closure5.go
│ ├── closure6.go
│ ├── closure7.go
│ ├── closure8.go
│ ├── closure9.go
│ ├── comp0.go
│ ├── comp1.go
│ ├── comp2.go
│ ├── complex0.go
│ ├── complex1.go
│ ├── complex2.go
│ ├── complex3.go
│ ├── complex4.go
│ ├── composite0.go
│ ├── composite1.go
│ ├── composite10.go
│ ├── composite11.go
│ ├── composite12.go
│ ├── composite13.go
│ ├── composite14.go
│ ├── composite15.go
│ ├── composite16.go
│ ├── composite17.go
│ ├── composite18.go
│ ├── composite19.go
│ ├── composite2.go
│ ├── composite3.go
│ ├── composite4.go
│ ├── composite5.go
│ ├── composite6.go
│ ├── composite7.go
│ ├── composite8.go
│ ├── composite8bis.go
│ ├── composite9.go
│ ├── const0.go
│ ├── const1.go
│ ├── const10.go
│ ├── const11.go
│ ├── const12.go
│ ├── const13.go
│ ├── const14.go
│ ├── const15.go
│ ├── const16.go
│ ├── const17.go
│ ├── const18.go
│ ├── const19.go
│ ├── const2.go
│ ├── const20.go
│ ├── const21.go
│ ├── const22.go
│ ├── const23.go
│ ├── const24.go
│ ├── const25.go
│ ├── const26.go
│ ├── const3.go
│ ├── const4.go
│ ├── const5.go
│ ├── const6.go
│ ├── const7.go
│ ├── const8.go
│ ├── const9.go
│ ├── cont.go
│ ├── cont0.go
│ ├── cont1.go
│ ├── cont2.go
│ ├── cont3.go
│ ├── context.go
│ ├── context2.go
│ ├── convert0.go
│ ├── convert1.go
│ ├── convert2.go
│ ├── convert3.go
│ ├── copy0.go
│ ├── copy1.go
│ ├── copy2.go
│ ├── ct/
│ │ ├── ct1.go
│ │ ├── ct2.go
│ │ └── ct3.go
│ ├── ct1/
│ │ └── ct1.go
│ ├── d1/
│ │ └── d1.go
│ ├── d2/
│ │ └── d2.go
│ ├── d3.go
│ ├── defer0.go
│ ├── defer1.go
│ ├── defer2.go
│ ├── defer3.go
│ ├── defer4.go
│ ├── defer5.go
│ ├── defer6.go
│ ├── defer7.go
│ ├── defer8.go
│ ├── defer9.go
│ ├── delete0.go
│ ├── eval0.go
│ ├── export0.go
│ ├── export1.go
│ ├── factor.go
│ ├── fib.go
│ ├── fib0.go
│ ├── file_access.go
│ ├── flag0.go
│ ├── foo/
│ │ ├── bar.go
│ │ ├── bir.go
│ │ └── boo/
│ │ └── boo.go
│ ├── foo-bar/
│ │ └── foo-bar.go
│ ├── for0.go
│ ├── for1.go
│ ├── for10.go
│ ├── for11.go
│ ├── for12.go
│ ├── for13.go
│ ├── for14.go
│ ├── for15.go
│ ├── for16.go
│ ├── for17.go
│ ├── for18.go
│ ├── for19.go
│ ├── for2.go
│ ├── for3.go
│ ├── for4.go
│ ├── for5.go
│ ├── for6.go
│ ├── for7.go
│ ├── for8.go
│ ├── for9.go
│ ├── fun.go
│ ├── fun10.go
│ ├── fun11.go
│ ├── fun12.go
│ ├── fun13.go
│ ├── fun14.go
│ ├── fun15.go
│ ├── fun16.go
│ ├── fun17.go
│ ├── fun18.go
│ ├── fun19.go
│ ├── fun2.go
│ ├── fun20.go
│ ├── fun21.go
│ ├── fun22.go
│ ├── fun23.go
│ ├── fun24.go
│ ├── fun25.go
│ ├── fun26.go
│ ├── fun27.go
│ ├── fun28.go
│ ├── fun3.go
│ ├── fun4.go
│ ├── fun5.go
│ ├── fun6.go
│ ├── fun7.go
│ ├── fun8.go
│ ├── fun9.go
│ ├── gen1.go
│ ├── gen10.go
│ ├── gen11.go
│ ├── gen12.go
│ ├── gen13.go
│ ├── gen2.go
│ ├── gen3.go
│ ├── gen4.go
│ ├── gen5.go
│ ├── gen6.go
│ ├── gen7.go
│ ├── gen8.go
│ ├── gen9.go
│ ├── goto0.go
│ ├── goto1.go
│ ├── heap.go
│ ├── if.go
│ ├── if0.go
│ ├── if1.go
│ ├── if2.go
│ ├── if3.go
│ ├── if4.go
│ ├── if5.go
│ ├── if6.go
│ ├── if7.go
│ ├── imag0.go
│ ├── import0.go
│ ├── import1.go
│ ├── import2.go
│ ├── import3.go
│ ├── import4.go
│ ├── import5.go
│ ├── import6.go
│ ├── import7.go
│ ├── import8.go
│ ├── import9.go
│ ├── inc.go
│ ├── inception.go
│ ├── init0.go
│ ├── init1.go
│ ├── interface0.go
│ ├── interface1.go
│ ├── interface10.go
│ ├── interface11.go
│ ├── interface12.go
│ ├── interface13.go
│ ├── interface14.go
│ ├── interface15.go
│ ├── interface16.go
│ ├── interface17.go
│ ├── interface18.go
│ ├── interface19.go
│ ├── interface2.go
│ ├── interface20.go
│ ├── interface21.go
│ ├── interface22.go
│ ├── interface23.go
│ ├── interface24.go
│ ├── interface25.go
│ ├── interface26.go
│ ├── interface27.go
│ ├── interface28.go
│ ├── interface29.go
│ ├── interface3.go
│ ├── interface30.go
│ ├── interface31.go
│ ├── interface32.go
│ ├── interface33.go
│ ├── interface34.go
│ ├── interface35.go
│ ├── interface36.go
│ ├── interface37.go
│ ├── interface38.go
│ ├── interface39.go
│ ├── interface4.go
│ ├── interface40.go
│ ├── interface41.go
│ ├── interface42.go
│ ├── interface43.go
│ ├── interface44.go
│ ├── interface45.go
│ ├── interface46.go
│ ├── interface47.go
│ ├── interface48.go
│ ├── interface49.go
│ ├── interface5.go
│ ├── interface50.go
│ ├── interface51.go
│ ├── interface52.go
│ ├── interface6.go
│ ├── interface7.go
│ ├── interface8.go
│ ├── interface9.go
│ ├── interp.gi
│ ├── interp2.gi
│ ├── io0.go
│ ├── io1.go
│ ├── io2.go
│ ├── iota.go
│ ├── iota0.go
│ ├── ipp_as_key.go
│ ├── issue-1007.go
│ ├── issue-1010.go
│ ├── issue-1022.go
│ ├── issue-1052.go
│ ├── issue-1065.go
│ ├── issue-1068.go
│ ├── issue-1088.go
│ ├── issue-1089.go
│ ├── issue-1093.go
│ ├── issue-1094.go
│ ├── issue-1101.go
│ ├── issue-1115.go
│ ├── issue-1126.go
│ ├── issue-1128.go
│ ├── issue-1134.go
│ ├── issue-1136.go
│ ├── issue-1145.go
│ ├── issue-1156.go
│ ├── issue-1163.go
│ ├── issue-1166.go
│ ├── issue-1167.go
│ ├── issue-1173.go
│ ├── issue-1175.go
│ ├── issue-1177.go
│ ├── issue-1179.go
│ ├── issue-1181.go
│ ├── issue-1185.go
│ ├── issue-1187.go
│ ├── issue-1189.go
│ ├── issue-1202.go
│ ├── issue-1205.go
│ ├── issue-1208.go
│ ├── issue-1260.go
│ ├── issue-1276.go
│ ├── issue-1280.go
│ ├── issue-1285.go
│ ├── issue-1288.go
│ ├── issue-1300.go
│ ├── issue-1304.go
│ ├── issue-1306.go
│ ├── issue-1308.go
│ ├── issue-1311.go
│ ├── issue-1315.go
│ ├── issue-1320.go
│ ├── issue-1326.go
│ ├── issue-1328.go
│ ├── issue-1330.go
│ ├── issue-1332.go
│ ├── issue-1333.go
│ ├── issue-1337.go
│ ├── issue-1342.go
│ ├── issue-1344.go
│ ├── issue-1354.go
│ ├── issue-1355.go
│ ├── issue-1360.go
│ ├── issue-1361.go
│ ├── issue-1364.go
│ ├── issue-1365.go
│ ├── issue-1368.go
│ ├── issue-1371.go
│ ├── issue-1373.go
│ ├── issue-1375.go
│ ├── issue-1378.go
│ ├── issue-1381.go
│ ├── issue-1404.go
│ ├── issue-1408.go
│ ├── issue-1411.go
│ ├── issue-1416.go
│ ├── issue-1421.go
│ ├── issue-1425.go
│ ├── issue-1439.go
│ ├── issue-1442.go
│ ├── issue-1447.go
│ ├── issue-1451.go
│ ├── issue-1454.go
│ ├── issue-1459.go
│ ├── issue-1460.go
│ ├── issue-1465.go
│ ├── issue-1466.go
│ ├── issue-1470.go
│ ├── issue-1475.go
│ ├── issue-1488.go
│ ├── issue-1496.go
│ ├── issue-1515.go
│ ├── issue-1536.go
│ ├── issue-1571.go
│ ├── issue-1594.go
│ ├── issue-1618.go
│ ├── issue-1640.go
│ ├── issue-1653.go
│ ├── issue-435.go
│ ├── issue-558.go
│ ├── issue-735.go
│ ├── issue-770.go
│ ├── issue-772.go
│ ├── issue-775.go
│ ├── issue-776.go
│ ├── issue-782.go
│ ├── issue-784.go
│ ├── issue-880.go
│ ├── issue-981.go
│ ├── issue-993.go
│ ├── l2.go
│ ├── l3.go
│ ├── l4.go
│ ├── l5.go
│ ├── len0.go
│ ├── m1/
│ │ ├── main.go
│ │ └── main_test.go
│ ├── m2/
│ │ └── m2_test.go
│ ├── make.go
│ ├── make0.go
│ ├── make1.go
│ ├── make2.go
│ ├── map.go
│ ├── map10.go
│ ├── map11.go
│ ├── map12.go
│ ├── map13.go
│ ├── map14.go
│ ├── map15.go
│ ├── map16.go
│ ├── map17.go
│ ├── map18.go
│ ├── map19.go
│ ├── map2.go
│ ├── map20.go
│ ├── map21.go
│ ├── map22.go
│ ├── map23.go
│ ├── map24.go
│ ├── map25.go
│ ├── map26.go
│ ├── map27.go
│ ├── map28.go
│ ├── map29.go
│ ├── map3.go
│ ├── map30.go
│ ├── map31.go
│ ├── map4.go
│ ├── map5.go
│ ├── map6.go
│ ├── map7.go
│ ├── map8.go
│ ├── map9.go
│ ├── math0.go
│ ├── math1.go
│ ├── math2.go
│ ├── math3.go
│ ├── method.go
│ ├── method0.go
│ ├── method1.go
│ ├── method10.go
│ ├── method11.go
│ ├── method12.go
│ ├── method13.go
│ ├── method14.go
│ ├── method15.go
│ ├── method16.go
│ ├── method17.go
│ ├── method18.go
│ ├── method19.go
│ ├── method2.go
│ ├── method20.go
│ ├── method21.go
│ ├── method22.go
│ ├── method23.go
│ ├── method24.go
│ ├── method25.go
│ ├── method26.go
│ ├── method27.go
│ ├── method28.go
│ ├── method29.go
│ ├── method3.go
│ ├── method30.go
│ ├── method31.go
│ ├── method32.go
│ ├── method33.go
│ ├── method34.go
│ ├── method35.go
│ ├── method36.go
│ ├── method37.go
│ ├── method38/
│ │ ├── a.go
│ │ └── b.go
│ ├── method38.go
│ ├── method39.go
│ ├── method4.go
│ ├── method40.go
│ ├── method5.go
│ ├── method6.go
│ ├── method7.go
│ ├── method8.go
│ ├── method9.go
│ ├── named0.go
│ ├── named1.go
│ ├── named2.go
│ ├── named3/
│ │ └── named3.go
│ ├── named3.go
│ ├── named4.go
│ ├── neg0.go
│ ├── new0.go
│ ├── new1.go
│ ├── new2.go
│ ├── nil0.go
│ ├── nil1.go
│ ├── nil2.go
│ ├── nil3.go
│ ├── not0.go
│ ├── not1.go
│ ├── not2.go
│ ├── num0.go
│ ├── op0.go
│ ├── op1.go
│ ├── op10.go
│ ├── op11.go
│ ├── op2.go
│ ├── op3.go
│ ├── op4.go
│ ├── op5.go
│ ├── op6.go
│ ├── op7.go
│ ├── op8.go
│ ├── op9.go
│ ├── opfloat32.go
│ ├── opfloat64.go
│ ├── opint16.go
│ ├── opint32.go
│ ├── opint64.go
│ ├── opint8.go
│ ├── opstring.go
│ ├── opuint16.go
│ ├── opuint32.go
│ ├── opuint64.go
│ ├── opuint8.go
│ ├── or0.go
│ ├── or1.go
│ ├── or2.go
│ ├── os0.go
│ ├── p1/
│ │ ├── s1.go
│ │ └── s2.go
│ ├── p2/
│ │ └── p2.go
│ ├── p3/
│ │ └── empty
│ ├── p4/
│ │ └── p4.go
│ ├── p5/
│ │ └── p5.go
│ ├── p5.go
│ ├── p6/
│ │ └── p6.go
│ ├── p6.go
│ ├── panic0.go
│ ├── pkgname0.go
│ ├── pkgname1.go
│ ├── pkgname2.go
│ ├── primes.go
│ ├── print0.go
│ ├── ptr0.go
│ ├── ptr1.go
│ ├── ptr2.go
│ ├── ptr3.go
│ ├── ptr4.go
│ ├── ptr5.go
│ ├── ptr5a.go
│ ├── ptr6.go
│ ├── ptr7.go
│ ├── ptr8.go
│ ├── ptr_array0.go
│ ├── ptr_array1.go
│ ├── ptr_array2.go
│ ├── ptr_array3.go
│ ├── range0.go
│ ├── range1.go
│ ├── range2.go
│ ├── range3.go
│ ├── range4.go
│ ├── range5.go
│ ├── range6.go
│ ├── range7.go
│ ├── range8.go
│ ├── range9.go
│ ├── real0.go
│ ├── recover0.go
│ ├── recover1.go
│ ├── recover2.go
│ ├── recover3.go
│ ├── recover4.go
│ ├── recurse0.go
│ ├── recurse1.go
│ ├── recurse2.go
│ ├── recurse3.go
│ ├── redeclaration-global0.go
│ ├── redeclaration-global1.go
│ ├── redeclaration-global2.go
│ ├── redeclaration-global3.go
│ ├── redeclaration-global4.go
│ ├── redeclaration-global5.go
│ ├── redeclaration-global6.go
│ ├── redeclaration-global7.go
│ ├── redeclaration0.go
│ ├── redeclaration1.go
│ ├── redeclaration2.go
│ ├── redeclaration3.go
│ ├── redeclaration4.go
│ ├── redeclaration5.go
│ ├── restricted0.go
│ ├── restricted1.go
│ ├── restricted2.go
│ ├── restricted3.go
│ ├── ret1.go
│ ├── ret2.go
│ ├── ret3.go
│ ├── ret4.go
│ ├── ret5.go
│ ├── ret6.go
│ ├── ret7.go
│ ├── ret8.go
│ ├── run0.go
│ ├── run1.go
│ ├── run10.go
│ ├── run11.go
│ ├── run12.go
│ ├── run13.go
│ ├── run4.go
│ ├── run5.go
│ ├── run6.go
│ ├── run7.go
│ ├── run8.go
│ ├── run9.go
│ ├── rune0.go
│ ├── rune1.go
│ ├── rune2.go
│ ├── sample.plugin
│ ├── scope0.go
│ ├── scope1.go
│ ├── scope2.go
│ ├── scope3.go
│ ├── scope4.go
│ ├── scope5.go
│ ├── scope6.go
│ ├── scope7.go
│ ├── secure.gi
│ ├── select.go
│ ├── select0.go
│ ├── select1.go
│ ├── select10.go
│ ├── select11.go
│ ├── select12.go
│ ├── select13.go
│ ├── select14.go
│ ├── select15.go
│ ├── select2.go
│ ├── select3.go
│ ├── select4.go
│ ├── select5.go
│ ├── select6.go
│ ├── select7.go
│ ├── select8.go
│ ├── select9.go
│ ├── selector-scope0.go
│ ├── server.go
│ ├── server0.go
│ ├── server1.go
│ ├── server1a.go
│ ├── server2.go
│ ├── server3.go
│ ├── server4.go
│ ├── server5.go
│ ├── server6.go
│ ├── server7.go
│ ├── shift0.go
│ ├── shift1.go
│ ├── shift2.go
│ ├── shift3.go
│ ├── sieve.go
│ ├── slice.go
│ ├── str.go
│ ├── str0.go
│ ├── str1.go
│ ├── str2.go
│ ├── str3.go
│ ├── str4.go
│ ├── struct.go
│ ├── struct0.go
│ ├── struct0a.go
│ ├── struct1.go
│ ├── struct10.go
│ ├── struct11.go
│ ├── struct12.go
│ ├── struct13.go
│ ├── struct14.go
│ ├── struct15.go
│ ├── struct16.go
│ ├── struct17.go
│ ├── struct18.go
│ ├── struct19.go
│ ├── struct2.go
│ ├── struct20.go
│ ├── struct21.go
│ ├── struct22.go
│ ├── struct23.go
│ ├── struct24.go
│ ├── struct25.go
│ ├── struct26.go
│ ├── struct27.go
│ ├── struct28.go
│ ├── struct29.go
│ ├── struct3.go
│ ├── struct30.go
│ ├── struct31.go
│ ├── struct32.go
│ ├── struct33.go
│ ├── struct34.go
│ ├── struct35.go
│ ├── struct36.go
│ ├── struct37.go
│ ├── struct38.go
│ ├── struct39.go
│ ├── struct4.go
│ ├── struct40.go
│ ├── struct41.go
│ ├── struct42.go
│ ├── struct43.go
│ ├── struct44.go
│ ├── struct45.go
│ ├── struct46.go
│ ├── struct47.go
│ ├── struct48.go
│ ├── struct49.go
│ ├── struct5.go
│ ├── struct50.go
│ ├── struct51.go
│ ├── struct52.go
│ ├── struct53.go
│ ├── struct54.go
│ ├── struct55.go
│ ├── struct56.go
│ ├── struct57.go
│ ├── struct58.go
│ ├── struct59.go
│ ├── struct6.go
│ ├── struct60.go
│ ├── struct61.go
│ ├── struct62.go
│ ├── struct7.go
│ ├── struct8.go
│ ├── struct9.go
│ ├── switch.go
│ ├── switch0.go
│ ├── switch1.go
│ ├── switch10.go
│ ├── switch11.go
│ ├── switch12.go
│ ├── switch13.go
│ ├── switch14.go
│ ├── switch15.go
│ ├── switch16.go
│ ├── switch17.go
│ ├── switch18.go
│ ├── switch19.go
│ ├── switch2.go
│ ├── switch20.go
│ ├── switch21.go
│ ├── switch22.go
│ ├── switch23.go
│ ├── switch24.go
│ ├── switch25.go
│ ├── switch26.go
│ ├── switch27.go
│ ├── switch28.go
│ ├── switch29.go
│ ├── switch3.go
│ ├── switch30.go
│ ├── switch31.go
│ ├── switch32.go
│ ├── switch33.go
│ ├── switch34.go
│ ├── switch35.go
│ ├── switch36.go
│ ├── switch37.go
│ ├── switch38.go
│ ├── switch39.go
│ ├── switch4.go
│ ├── switch40.go
│ ├── switch5.go
│ ├── switch6.go
│ ├── switch7.go
│ ├── switch8.go
│ ├── switch9.go
│ ├── tag0.go
│ ├── testdata/
│ │ └── redeclaration-global7/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── quux.go
│ │ ├── baz/
│ │ │ └── quux.go
│ │ ├── tata/
│ │ │ └── tutu.go
│ │ └── toto/
│ │ └── titi.go
│ ├── time0.go
│ ├── time1.go
│ ├── time10.go
│ ├── time11.go
│ ├── time12.go
│ ├── time13.go
│ ├── time14.go
│ ├── time15.go
│ ├── time16.go
│ ├── time2.go
│ ├── time3.go
│ ├── time4.go
│ ├── time5.go
│ ├── time6.go
│ ├── time7.go
│ ├── time8.go
│ ├── time9.go
│ ├── type0.go
│ ├── type1.go
│ ├── type10.go
│ ├── type11.go
│ ├── type12.go
│ ├── type13.go
│ ├── type14.go
│ ├── type15.go
│ ├── type16.go
│ ├── type17.go
│ ├── type18.go
│ ├── type19.go
│ ├── type2.go
│ ├── type20.go
│ ├── type21.go
│ ├── type22.go
│ ├── type23.go
│ ├── type24.go
│ ├── type25.go
│ ├── type26.go
│ ├── type27.go
│ ├── type28.go
│ ├── type29.go
│ ├── type3.go
│ ├── type30.go
│ ├── type31.go
│ ├── type32.go
│ ├── type33.go
│ ├── type34.go
│ ├── type4.go
│ ├── type5.go
│ ├── type6.go
│ ├── type7.go
│ ├── type8.go
│ ├── type9.go
│ ├── unsafe0.go
│ ├── unsafe1.go
│ ├── unsafe10.go
│ ├── unsafe2.go
│ ├── unsafe3.go
│ ├── unsafe4.go
│ ├── unsafe5.go
│ ├── unsafe6.go
│ ├── unsafe7.go
│ ├── unsafe8.go
│ ├── var.go
│ ├── var10.go
│ ├── var11.go
│ ├── var12.go
│ ├── var13.go
│ ├── var14.go
│ ├── var15.go
│ ├── var16.go
│ ├── var2.go
│ ├── var3.go
│ ├── var4.go
│ ├── var5.go
│ ├── var6.go
│ ├── var7.go
│ ├── var8.go
│ ├── var9.go
│ ├── variadic.go
│ ├── variadic0.go
│ ├── variadic1.go
│ ├── variadic10.go
│ ├── variadic2.go
│ ├── variadic3.go
│ ├── variadic4.go
│ ├── variadic5.go
│ ├── variadic6.go
│ ├── variadic7.go
│ ├── variadic8.go
│ ├── variadic9.go
│ └── vars/
│ ├── first.go
│ └── second.go
├── cmd/
│ └── yaegi/
│ ├── extract.go
│ ├── help.go
│ ├── run.go
│ ├── test.go
│ ├── yaegi.go
│ └── yaegi_test.go
├── example/
│ ├── closure/
│ │ ├── _pkg/
│ │ │ └── src/
│ │ │ └── foo/
│ │ │ └── bar/
│ │ │ └── bar.go
│ │ └── closure_test.go
│ ├── fs/
│ │ └── fs_test.go
│ ├── getfunc/
│ │ ├── _gopath/
│ │ │ └── src/
│ │ │ └── github.com/
│ │ │ └── foo/
│ │ │ └── bar/
│ │ │ └── foobar.go
│ │ └── getfunc_test.go
│ └── pkg/
│ ├── _pkg/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ └── fromage.go
│ ├── _pkg0/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── fromage/
│ │ │ ├── cheese/
│ │ │ │ └── cheese.go
│ │ │ └── fromage.go
│ │ └── pkg.go
│ ├── _pkg1/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── fromage/
│ │ │ └── fromage.go
│ │ └── pkg.go
│ ├── _pkg10/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ └── fromage.go
│ ├── _pkg11/
│ │ └── src/
│ │ └── foo/
│ │ ├── foo.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ └── fromage.go
│ ├── _pkg12/
│ │ └── src/
│ │ └── guthib.com/
│ │ └── foo/
│ │ ├── main.go
│ │ ├── pkg/
│ │ │ └── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── bar/
│ │ └── bar.go
│ ├── _pkg13/
│ │ └── src/
│ │ └── guthib.com/
│ │ └── foo/
│ │ └── bar/
│ │ ├── main.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── bat/
│ │ └── baz/
│ │ └── baz.go
│ ├── _pkg2/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ ├── fromage.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── cheese/
│ │ └── fromage.go
│ ├── _pkg3/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ ├── couteau/
│ │ │ └── couteau.go
│ │ ├── fromage.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── cheese/
│ │ └── fromage.go
│ ├── _pkg4/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── fromage/
│ │ ├── couteau/
│ │ │ └── couteau.go
│ │ ├── fromage.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── cheese/
│ │ ├── cheese.go
│ │ └── vin/
│ │ └── vin.go
│ ├── _pkg5/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ ├── cheese/
│ │ │ ├── cheese.go
│ │ │ └── vin/
│ │ │ └── vin.go
│ │ └── fromage/
│ │ ├── couteau/
│ │ │ └── couteau.go
│ │ └── fromage.go
│ ├── _pkg6/
│ │ └── src/
│ │ ├── github.com/
│ │ │ └── foo/
│ │ │ └── pkg/
│ │ │ ├── pkg.go
│ │ │ └── vendor/
│ │ │ └── guthib.com/
│ │ │ └── traefik/
│ │ │ └── fromage/
│ │ │ ├── couteau/
│ │ │ │ └── couteau.go
│ │ │ └── fromage.go
│ │ └── guthib.com/
│ │ └── traefik/
│ │ └── cheese/
│ │ ├── cheese.go
│ │ └── vin/
│ │ └── vin.go
│ ├── _pkg7/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── pkg.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── traefik/
│ │ ├── fromage/
│ │ │ └── fromage.go
│ │ └── vin/
│ │ ├── vendor/
│ │ │ └── guthib.com/
│ │ │ └── traefik/
│ │ │ └── cheese/
│ │ │ └── cheese.go
│ │ └── vin.go
│ ├── _pkg8/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── fromage/
│ │ │ └── fromage.go
│ │ └── pkg.go
│ ├── _pkg9/
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ └── pkg/
│ │ ├── fromage/
│ │ │ └── fromage.go
│ │ ├── pkg.go
│ │ └── pkgfalse.go
│ └── pkg_test.go
├── extract/
│ ├── extract.go
│ ├── extract_test.go
│ └── testdata/
│ ├── 1/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── main.go
│ │ └── baz/
│ │ ├── baz.go
│ │ └── go.mod
│ ├── 2/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── main.go
│ │ └── baz/
│ │ └── baz.go
│ ├── 3/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── main.go
│ │ └── baz/
│ │ ├── baz.go
│ │ └── go.mod
│ ├── 4/
│ │ └── src/
│ │ └── guthib.com/
│ │ └── bar/
│ │ ├── main.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── baz/
│ │ ├── baz.go
│ │ └── go.mod
│ ├── 5/
│ │ └── src/
│ │ └── guthib.com/
│ │ └── bar/
│ │ ├── main.go
│ │ └── vendor/
│ │ └── guthib.com/
│ │ └── baz/
│ │ └── baz.go
│ ├── 6/
│ │ └── src/
│ │ └── guthib.com/
│ │ ├── bar/
│ │ │ └── main.go
│ │ └── baz-baz/
│ │ ├── baz.go
│ │ └── go.mod
│ └── 7/
│ └── src/
│ └── guthib.com/
│ └── variadic/
│ ├── go.mod
│ └── variadic.go
├── generate.go
├── go.mod
├── install.sh
├── internal/
│ ├── cmd/
│ │ ├── extract/
│ │ │ └── extract.go
│ │ └── genop/
│ │ └── genop.go
│ └── unsafe2/
│ ├── go1_20_unsafe.go
│ ├── go1_21_unsafe.go
│ └── unsafe_test.go
├── interp/
│ ├── ast.go
│ ├── build.go
│ ├── build_test.go
│ ├── cfg.go
│ ├── compile_test.go
│ ├── debugger.go
│ ├── doc.go
│ ├── dot.go
│ ├── example_eval_test.go
│ ├── export_test.go
│ ├── generic.go
│ ├── gta.go
│ ├── hooks.go
│ ├── interp.go
│ ├── interp_chan_test.go
│ ├── interp_consistent_test.go
│ ├── interp_eval_test.go
│ ├── interp_export_test.go
│ ├── interp_file_test.go
│ ├── interp_issue_1634_test.go
│ ├── interp_test.go
│ ├── op.go
│ ├── program.go
│ ├── realfs.go
│ ├── run.go
│ ├── scope.go
│ ├── self_example_test.go
│ ├── src.go
│ ├── src_test.go
│ ├── testdata/
│ │ ├── concurrent/
│ │ │ ├── composite/
│ │ │ │ ├── composite_lit.go
│ │ │ │ └── composite_sparse.go
│ │ │ ├── hello1.go
│ │ │ └── hello2.go
│ │ ├── multi/
│ │ │ └── 731/
│ │ │ ├── sample1.go
│ │ │ ├── sample2.go
│ │ │ └── sample3.go
│ │ └── src/
│ │ └── github.com/
│ │ └── foo/
│ │ ├── bar/
│ │ │ └── baz/
│ │ │ └── baz.go
│ │ └── vendor/
│ │ └── whatever/
│ │ └── whatever.go
│ ├── trace.go
│ ├── type.go
│ ├── typecheck.go
│ ├── typestring.go
│ ├── use.go
│ └── value.go
└── stdlib/
├── generic/
│ ├── go1_21_cmp.go.txt
│ ├── go1_21_generic.go
│ ├── go1_21_maps.go.txt
│ ├── go1_21_slices.go.txt
│ ├── go1_21_sync.go.txt
│ ├── go1_21_sync_atomic.go.txt
│ ├── go1_22_cmp_cmp.go.txt
│ ├── go1_22_generic.go
│ ├── go1_22_maps_maps.go.txt
│ ├── go1_22_slices_slices.go.txt
│ ├── go1_22_slices_sort.go.txt
│ ├── go1_22_slices_zsortanyfunc.go.txt
│ ├── go1_22_sync_atomic_type.go.txt
│ └── go1_22_sync_oncefunc.go.txt
├── go1_21_archive_tar.go
├── go1_21_archive_zip.go
├── go1_21_bufio.go
├── go1_21_bytes.go
├── go1_21_cmp.go
├── go1_21_compress_bzip2.go
├── go1_21_compress_flate.go
├── go1_21_compress_gzip.go
├── go1_21_compress_lzw.go
├── go1_21_compress_zlib.go
├── go1_21_container_heap.go
├── go1_21_container_list.go
├── go1_21_container_ring.go
├── go1_21_context.go
├── go1_21_crypto.go
├── go1_21_crypto_aes.go
├── go1_21_crypto_cipher.go
├── go1_21_crypto_des.go
├── go1_21_crypto_dsa.go
├── go1_21_crypto_ecdh.go
├── go1_21_crypto_ecdsa.go
├── go1_21_crypto_ed25519.go
├── go1_21_crypto_elliptic.go
├── go1_21_crypto_hmac.go
├── go1_21_crypto_md5.go
├── go1_21_crypto_rand.go
├── go1_21_crypto_rc4.go
├── go1_21_crypto_rsa.go
├── go1_21_crypto_sha1.go
├── go1_21_crypto_sha256.go
├── go1_21_crypto_sha512.go
├── go1_21_crypto_subtle.go
├── go1_21_crypto_tls.go
├── go1_21_crypto_x509.go
├── go1_21_crypto_x509_pkix.go
├── go1_21_database_sql.go
├── go1_21_database_sql_driver.go
├── go1_21_debug_buildinfo.go
├── go1_21_debug_dwarf.go
├── go1_21_debug_elf.go
├── go1_21_debug_gosym.go
├── go1_21_debug_macho.go
├── go1_21_debug_pe.go
├── go1_21_debug_plan9obj.go
├── go1_21_encoding.go
├── go1_21_encoding_ascii85.go
├── go1_21_encoding_asn1.go
├── go1_21_encoding_base32.go
├── go1_21_encoding_base64.go
├── go1_21_encoding_binary.go
├── go1_21_encoding_csv.go
├── go1_21_encoding_gob.go
├── go1_21_encoding_hex.go
├── go1_21_encoding_json.go
├── go1_21_encoding_pem.go
├── go1_21_encoding_xml.go
├── go1_21_errors.go
├── go1_21_expvar.go
├── go1_21_flag.go
├── go1_21_fmt.go
├── go1_21_go_ast.go
├── go1_21_go_build.go
├── go1_21_go_build_constraint.go
├── go1_21_go_constant.go
├── go1_21_go_doc.go
├── go1_21_go_doc_comment.go
├── go1_21_go_format.go
├── go1_21_go_importer.go
├── go1_21_go_parser.go
├── go1_21_go_printer.go
├── go1_21_go_scanner.go
├── go1_21_go_token.go
├── go1_21_go_types.go
├── go1_21_hash.go
├── go1_21_hash_adler32.go
├── go1_21_hash_crc32.go
├── go1_21_hash_crc64.go
├── go1_21_hash_fnv.go
├── go1_21_hash_maphash.go
├── go1_21_html.go
├── go1_21_html_template.go
├── go1_21_image.go
├── go1_21_image_color.go
├── go1_21_image_color_palette.go
├── go1_21_image_draw.go
├── go1_21_image_gif.go
├── go1_21_image_jpeg.go
├── go1_21_image_png.go
├── go1_21_index_suffixarray.go
├── go1_21_io.go
├── go1_21_io_fs.go
├── go1_21_io_ioutil.go
├── go1_21_log.go
├── go1_21_log_slog.go
├── go1_21_log_syslog.go
├── go1_21_maps.go
├── go1_21_math.go
├── go1_21_math_big.go
├── go1_21_math_bits.go
├── go1_21_math_cmplx.go
├── go1_21_math_rand.go
├── go1_21_mime.go
├── go1_21_mime_multipart.go
├── go1_21_mime_quotedprintable.go
├── go1_21_net.go
├── go1_21_net_http.go
├── go1_21_net_http_cgi.go
├── go1_21_net_http_cookiejar.go
├── go1_21_net_http_fcgi.go
├── go1_21_net_http_httptest.go
├── go1_21_net_http_httptrace.go
├── go1_21_net_http_httputil.go
├── go1_21_net_http_pprof.go
├── go1_21_net_mail.go
├── go1_21_net_netip.go
├── go1_21_net_rpc.go
├── go1_21_net_rpc_jsonrpc.go
├── go1_21_net_smtp.go
├── go1_21_net_textproto.go
├── go1_21_net_url.go
├── go1_21_os.go
├── go1_21_os_signal.go
├── go1_21_os_user.go
├── go1_21_path.go
├── go1_21_path_filepath.go
├── go1_21_reflect.go
├── go1_21_regexp.go
├── go1_21_regexp_syntax.go
├── go1_21_runtime.go
├── go1_21_runtime_debug.go
├── go1_21_runtime_metrics.go
├── go1_21_runtime_pprof.go
├── go1_21_runtime_trace.go
├── go1_21_slices.go
├── go1_21_sort.go
├── go1_21_strconv.go
├── go1_21_strings.go
├── go1_21_sync.go
├── go1_21_sync_atomic.go
├── go1_21_testing.go
├── go1_21_testing_fstest.go
├── go1_21_testing_iotest.go
├── go1_21_testing_quick.go
├── go1_21_testing_slogtest.go
├── go1_21_text_scanner.go
├── go1_21_text_tabwriter.go
├── go1_21_text_template.go
├── go1_21_text_template_parse.go
├── go1_21_time.go
├── go1_21_unicode.go
├── go1_21_unicode_utf16.go
├── go1_21_unicode_utf8.go
├── go1_22_archive_tar.go
├── go1_22_archive_zip.go
├── go1_22_bufio.go
├── go1_22_bytes.go
├── go1_22_cmp.go
├── go1_22_compress_bzip2.go
├── go1_22_compress_flate.go
├── go1_22_compress_gzip.go
├── go1_22_compress_lzw.go
├── go1_22_compress_zlib.go
├── go1_22_container_heap.go
├── go1_22_container_list.go
├── go1_22_container_ring.go
├── go1_22_context.go
├── go1_22_crypto.go
├── go1_22_crypto_aes.go
├── go1_22_crypto_cipher.go
├── go1_22_crypto_des.go
├── go1_22_crypto_dsa.go
├── go1_22_crypto_ecdh.go
├── go1_22_crypto_ecdsa.go
├── go1_22_crypto_ed25519.go
├── go1_22_crypto_elliptic.go
├── go1_22_crypto_hmac.go
├── go1_22_crypto_md5.go
├── go1_22_crypto_rand.go
├── go1_22_crypto_rc4.go
├── go1_22_crypto_rsa.go
├── go1_22_crypto_sha1.go
├── go1_22_crypto_sha256.go
├── go1_22_crypto_sha512.go
├── go1_22_crypto_subtle.go
├── go1_22_crypto_tls.go
├── go1_22_crypto_x509.go
├── go1_22_crypto_x509_pkix.go
├── go1_22_database_sql.go
├── go1_22_database_sql_driver.go
├── go1_22_debug_buildinfo.go
├── go1_22_debug_dwarf.go
├── go1_22_debug_elf.go
├── go1_22_debug_gosym.go
├── go1_22_debug_macho.go
├── go1_22_debug_pe.go
├── go1_22_debug_plan9obj.go
├── go1_22_encoding.go
├── go1_22_encoding_ascii85.go
├── go1_22_encoding_asn1.go
├── go1_22_encoding_base32.go
├── go1_22_encoding_base64.go
├── go1_22_encoding_binary.go
├── go1_22_encoding_csv.go
├── go1_22_encoding_gob.go
├── go1_22_encoding_hex.go
├── go1_22_encoding_json.go
├── go1_22_encoding_pem.go
├── go1_22_encoding_xml.go
├── go1_22_errors.go
├── go1_22_expvar.go
├── go1_22_flag.go
├── go1_22_fmt.go
├── go1_22_go_ast.go
├── go1_22_go_build.go
├── go1_22_go_build_constraint.go
├── go1_22_go_constant.go
├── go1_22_go_doc.go
├── go1_22_go_doc_comment.go
├── go1_22_go_format.go
├── go1_22_go_importer.go
├── go1_22_go_parser.go
├── go1_22_go_printer.go
├── go1_22_go_scanner.go
├── go1_22_go_token.go
├── go1_22_go_types.go
├── go1_22_go_version.go
├── go1_22_hash.go
├── go1_22_hash_adler32.go
├── go1_22_hash_crc32.go
├── go1_22_hash_crc64.go
├── go1_22_hash_fnv.go
├── go1_22_hash_maphash.go
├── go1_22_html.go
├── go1_22_html_template.go
├── go1_22_image.go
├── go1_22_image_color.go
├── go1_22_image_color_palette.go
├── go1_22_image_draw.go
├── go1_22_image_gif.go
├── go1_22_image_jpeg.go
├── go1_22_image_png.go
├── go1_22_index_suffixarray.go
├── go1_22_io.go
├── go1_22_io_fs.go
├── go1_22_io_ioutil.go
├── go1_22_log.go
├── go1_22_log_slog.go
├── go1_22_log_syslog.go
├── go1_22_maps.go
├── go1_22_math.go
├── go1_22_math_big.go
├── go1_22_math_bits.go
├── go1_22_math_cmplx.go
├── go1_22_math_rand.go
├── go1_22_math_rand_v2.go
├── go1_22_mime.go
├── go1_22_mime_multipart.go
├── go1_22_mime_quotedprintable.go
├── go1_22_net.go
├── go1_22_net_http.go
├── go1_22_net_http_cgi.go
├── go1_22_net_http_cookiejar.go
├── go1_22_net_http_fcgi.go
├── go1_22_net_http_httptest.go
├── go1_22_net_http_httptrace.go
├── go1_22_net_http_httputil.go
├── go1_22_net_http_pprof.go
├── go1_22_net_mail.go
├── go1_22_net_netip.go
├── go1_22_net_rpc.go
├── go1_22_net_rpc_jsonrpc.go
├── go1_22_net_smtp.go
├── go1_22_net_textproto.go
├── go1_22_net_url.go
├── go1_22_os.go
├── go1_22_os_signal.go
├── go1_22_os_user.go
├── go1_22_path.go
├── go1_22_path_filepath.go
├── go1_22_reflect.go
├── go1_22_regexp.go
├── go1_22_regexp_syntax.go
├── go1_22_runtime.go
├── go1_22_runtime_debug.go
├── go1_22_runtime_metrics.go
├── go1_22_runtime_pprof.go
├── go1_22_runtime_trace.go
├── go1_22_slices.go
├── go1_22_sort.go
├── go1_22_strconv.go
├── go1_22_strings.go
├── go1_22_sync.go
├── go1_22_sync_atomic.go
├── go1_22_testing.go
├── go1_22_testing_fstest.go
├── go1_22_testing_iotest.go
├── go1_22_testing_quick.go
├── go1_22_testing_slogtest.go
├── go1_22_text_scanner.go
├── go1_22_text_tabwriter.go
├── go1_22_text_template.go
├── go1_22_text_template_parse.go
├── go1_22_time.go
├── go1_22_unicode.go
├── go1_22_unicode_utf16.go
├── go1_22_unicode_utf8.go
├── maptypes.go
├── restricted.go
├── stdlib-go1.22.go
├── stdlib.go
├── syscall/
│ ├── go1_21_syscall_aix_ppc64.go
│ ├── go1_21_syscall_android_386.go
│ ├── go1_21_syscall_android_amd64.go
│ ├── go1_21_syscall_android_arm.go
│ ├── go1_21_syscall_android_arm64.go
│ ├── go1_21_syscall_darwin_amd64.go
│ ├── go1_21_syscall_darwin_arm64.go
│ ├── go1_21_syscall_dragonfly_amd64.go
│ ├── go1_21_syscall_freebsd_386.go
│ ├── go1_21_syscall_freebsd_amd64.go
│ ├── go1_21_syscall_freebsd_arm.go
│ ├── go1_21_syscall_freebsd_arm64.go
│ ├── go1_21_syscall_freebsd_riscv64.go
│ ├── go1_21_syscall_illumos_amd64.go
│ ├── go1_21_syscall_ios_amd64.go
│ ├── go1_21_syscall_ios_arm64.go
│ ├── go1_21_syscall_js_wasm.go
│ ├── go1_21_syscall_linux_386.go
│ ├── go1_21_syscall_linux_amd64.go
│ ├── go1_21_syscall_linux_arm.go
│ ├── go1_21_syscall_linux_arm64.go
│ ├── go1_21_syscall_linux_loong64.go
│ ├── go1_21_syscall_linux_mips.go
│ ├── go1_21_syscall_linux_mips64.go
│ ├── go1_21_syscall_linux_mips64le.go
│ ├── go1_21_syscall_linux_mipsle.go
│ ├── go1_21_syscall_linux_ppc64.go
│ ├── go1_21_syscall_linux_ppc64le.go
│ ├── go1_21_syscall_linux_riscv64.go
│ ├── go1_21_syscall_linux_s390x.go
│ ├── go1_21_syscall_netbsd_386.go
│ ├── go1_21_syscall_netbsd_amd64.go
│ ├── go1_21_syscall_netbsd_arm.go
│ ├── go1_21_syscall_netbsd_arm64.go
│ ├── go1_21_syscall_openbsd_386.go
│ ├── go1_21_syscall_openbsd_amd64.go
│ ├── go1_21_syscall_openbsd_arm.go
│ ├── go1_21_syscall_openbsd_arm64.go
│ ├── go1_21_syscall_plan9_386.go
│ ├── go1_21_syscall_plan9_amd64.go
│ ├── go1_21_syscall_plan9_arm.go
│ ├── go1_21_syscall_solaris_amd64.go
│ ├── go1_21_syscall_wasip1_wasm.go
│ ├── go1_21_syscall_windows_386.go
│ ├── go1_21_syscall_windows_amd64.go
│ ├── go1_21_syscall_windows_arm.go
│ ├── go1_21_syscall_windows_arm64.go
│ ├── go1_22_syscall_aix_ppc64.go
│ ├── go1_22_syscall_android_386.go
│ ├── go1_22_syscall_android_amd64.go
│ ├── go1_22_syscall_android_arm.go
│ ├── go1_22_syscall_android_arm64.go
│ ├── go1_22_syscall_darwin_amd64.go
│ ├── go1_22_syscall_darwin_arm64.go
│ ├── go1_22_syscall_dragonfly_amd64.go
│ ├── go1_22_syscall_freebsd_386.go
│ ├── go1_22_syscall_freebsd_amd64.go
│ ├── go1_22_syscall_freebsd_arm.go
│ ├── go1_22_syscall_freebsd_arm64.go
│ ├── go1_22_syscall_freebsd_riscv64.go
│ ├── go1_22_syscall_illumos_amd64.go
│ ├── go1_22_syscall_ios_amd64.go
│ ├── go1_22_syscall_ios_arm64.go
│ ├── go1_22_syscall_js_wasm.go
│ ├── go1_22_syscall_linux_386.go
│ ├── go1_22_syscall_linux_amd64.go
│ ├── go1_22_syscall_linux_arm.go
│ ├── go1_22_syscall_linux_arm64.go
│ ├── go1_22_syscall_linux_loong64.go
│ ├── go1_22_syscall_linux_mips.go
│ ├── go1_22_syscall_linux_mips64.go
│ ├── go1_22_syscall_linux_mips64le.go
│ ├── go1_22_syscall_linux_mipsle.go
│ ├── go1_22_syscall_linux_ppc64.go
│ ├── go1_22_syscall_linux_ppc64le.go
│ ├── go1_22_syscall_linux_riscv64.go
│ ├── go1_22_syscall_linux_s390x.go
│ ├── go1_22_syscall_netbsd_386.go
│ ├── go1_22_syscall_netbsd_amd64.go
│ ├── go1_22_syscall_netbsd_arm.go
│ ├── go1_22_syscall_netbsd_arm64.go
│ ├── go1_22_syscall_openbsd_386.go
│ ├── go1_22_syscall_openbsd_amd64.go
│ ├── go1_22_syscall_openbsd_arm.go
│ ├── go1_22_syscall_openbsd_arm64.go
│ ├── go1_22_syscall_openbsd_ppc64.go
│ ├── go1_22_syscall_plan9_386.go
│ ├── go1_22_syscall_plan9_amd64.go
│ ├── go1_22_syscall_plan9_arm.go
│ ├── go1_22_syscall_solaris_amd64.go
│ ├── go1_22_syscall_wasip1_wasm.go
│ ├── go1_22_syscall_windows_386.go
│ ├── go1_22_syscall_windows_amd64.go
│ ├── go1_22_syscall_windows_arm.go
│ ├── go1_22_syscall_windows_arm64.go
│ └── syscall.go
├── unrestricted/
│ ├── go1_21_syscall_aix_ppc64.go
│ ├── go1_21_syscall_android_386.go
│ ├── go1_21_syscall_android_amd64.go
│ ├── go1_21_syscall_android_arm.go
│ ├── go1_21_syscall_android_arm64.go
│ ├── go1_21_syscall_darwin_amd64.go
│ ├── go1_21_syscall_darwin_arm64.go
│ ├── go1_21_syscall_dragonfly_amd64.go
│ ├── go1_21_syscall_freebsd_386.go
│ ├── go1_21_syscall_freebsd_amd64.go
│ ├── go1_21_syscall_freebsd_arm.go
│ ├── go1_21_syscall_freebsd_arm64.go
│ ├── go1_21_syscall_freebsd_riscv64.go
│ ├── go1_21_syscall_illumos_amd64.go
│ ├── go1_21_syscall_ios_amd64.go
│ ├── go1_21_syscall_ios_arm64.go
│ ├── go1_21_syscall_js_wasm.go
│ ├── go1_21_syscall_linux_386.go
│ ├── go1_21_syscall_linux_amd64.go
│ ├── go1_21_syscall_linux_arm.go
│ ├── go1_21_syscall_linux_arm64.go
│ ├── go1_21_syscall_linux_loong64.go
│ ├── go1_21_syscall_linux_mips.go
│ ├── go1_21_syscall_linux_mips64.go
│ ├── go1_21_syscall_linux_mips64le.go
│ ├── go1_21_syscall_linux_mipsle.go
│ ├── go1_21_syscall_linux_ppc64.go
│ ├── go1_21_syscall_linux_ppc64le.go
│ ├── go1_21_syscall_linux_riscv64.go
│ ├── go1_21_syscall_linux_s390x.go
│ ├── go1_21_syscall_netbsd_386.go
│ ├── go1_21_syscall_netbsd_amd64.go
│ ├── go1_21_syscall_netbsd_arm.go
│ ├── go1_21_syscall_netbsd_arm64.go
│ ├── go1_21_syscall_openbsd_386.go
│ ├── go1_21_syscall_openbsd_amd64.go
│ ├── go1_21_syscall_openbsd_arm.go
│ ├── go1_21_syscall_openbsd_arm64.go
│ ├── go1_21_syscall_plan9_386.go
│ ├── go1_21_syscall_plan9_amd64.go
│ ├── go1_21_syscall_plan9_arm.go
│ ├── go1_21_syscall_solaris_amd64.go
│ ├── go1_21_syscall_wasip1_wasm.go
│ ├── go1_21_syscall_windows_386.go
│ ├── go1_21_syscall_windows_amd64.go
│ ├── go1_21_syscall_windows_arm.go
│ ├── go1_21_syscall_windows_arm64.go
│ ├── go1_22_syscall_aix_ppc64.go
│ ├── go1_22_syscall_android_386.go
│ ├── go1_22_syscall_android_amd64.go
│ ├── go1_22_syscall_android_arm.go
│ ├── go1_22_syscall_android_arm64.go
│ ├── go1_22_syscall_darwin_amd64.go
│ ├── go1_22_syscall_darwin_arm64.go
│ ├── go1_22_syscall_dragonfly_amd64.go
│ ├── go1_22_syscall_freebsd_386.go
│ ├── go1_22_syscall_freebsd_amd64.go
│ ├── go1_22_syscall_freebsd_arm.go
│ ├── go1_22_syscall_freebsd_arm64.go
│ ├── go1_22_syscall_freebsd_riscv64.go
│ ├── go1_22_syscall_illumos_amd64.go
│ ├── go1_22_syscall_ios_amd64.go
│ ├── go1_22_syscall_ios_arm64.go
│ ├── go1_22_syscall_js_wasm.go
│ ├── go1_22_syscall_linux_386.go
│ ├── go1_22_syscall_linux_amd64.go
│ ├── go1_22_syscall_linux_arm.go
│ ├── go1_22_syscall_linux_arm64.go
│ ├── go1_22_syscall_linux_loong64.go
│ ├── go1_22_syscall_linux_mips.go
│ ├── go1_22_syscall_linux_mips64.go
│ ├── go1_22_syscall_linux_mips64le.go
│ ├── go1_22_syscall_linux_mipsle.go
│ ├── go1_22_syscall_linux_ppc64.go
│ ├── go1_22_syscall_linux_ppc64le.go
│ ├── go1_22_syscall_linux_riscv64.go
│ ├── go1_22_syscall_linux_s390x.go
│ ├── go1_22_syscall_netbsd_386.go
│ ├── go1_22_syscall_netbsd_amd64.go
│ ├── go1_22_syscall_netbsd_arm.go
│ ├── go1_22_syscall_netbsd_arm64.go
│ ├── go1_22_syscall_openbsd_386.go
│ ├── go1_22_syscall_openbsd_amd64.go
│ ├── go1_22_syscall_openbsd_arm.go
│ ├── go1_22_syscall_openbsd_arm64.go
│ ├── go1_22_syscall_openbsd_ppc64.go
│ ├── go1_22_syscall_plan9_386.go
│ ├── go1_22_syscall_plan9_amd64.go
│ ├── go1_22_syscall_plan9_arm.go
│ ├── go1_22_syscall_solaris_amd64.go
│ ├── go1_22_syscall_wasip1_wasm.go
│ ├── go1_22_syscall_windows_386.go
│ ├── go1_22_syscall_windows_amd64.go
│ ├── go1_22_syscall_windows_arm.go
│ ├── go1_22_syscall_windows_arm64.go
│ └── unrestricted.go
├── unsafe/
│ ├── go1_21_unsafe.go
│ ├── go1_22_unsafe.go
│ └── unsafe.go
└── wrapper-composed.go
Showing preview only (429K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5736 symbols across 1597 files)
FILE: _test/a1.go
function main (line 3) | func main() {
FILE: _test/a10.go
type Sample (line 3) | type Sample struct
function f (line 9) | func f(i int) {
function main (line 13) | func main() {
FILE: _test/a11.go
function main (line 3) | func main() {
FILE: _test/a12.go
function main (line 5) | func main() {
FILE: _test/a13.go
type T1 (line 3) | type T1 struct
function main (line 7) | func main() {
FILE: _test/a14.go
constant size (line 5) | size = 12
function main (line 7) | func main() {
FILE: _test/a15.go
constant size (line 5) | size = 12
function main (line 7) | func main() {
FILE: _test/a16.go
function main (line 3) | func main() {
FILE: _test/a17.go
function main (line 5) | func main() {
FILE: _test/a18.go
function main (line 3) | func main() {
FILE: _test/a19.go
function main (line 3) | func main() {
constant bsize (line 8) | bsize = 10
FILE: _test/a2.go
function main (line 3) | func main() {
FILE: _test/a20.go
type IntArray (line 5) | type IntArray
method Add (line 7) | func (h *IntArray) Add(x int) {
function main (line 11) | func main() {
FILE: _test/a21.go
function main (line 5) | func main() {
FILE: _test/a22.go
function main (line 3) | func main() {
FILE: _test/a23.go
function main (line 5) | func main() {
FILE: _test/a24.go
function main (line 5) | func main() {
FILE: _test/a25.go
function main (line 5) | func main() {
FILE: _test/a26.go
function main (line 3) | func main() {
FILE: _test/a27.go
function main (line 5) | func main() {
FILE: _test/a28.go
function main (line 5) | func main() {
FILE: _test/a29.go
constant zero (line 6) | zero = iota
constant one (line 7) | one
constant two (line 8) | two
constant three (line 9) | three
function main (line 12) | func main() {
FILE: _test/a3.go
function main (line 5) | func main() {
FILE: _test/a30.go
function main (line 3) | func main() {
FILE: _test/a31.go
function main (line 3) | func main() {
FILE: _test/a32.go
type T (line 5) | type T struct
function main (line 9) | func main() {
FILE: _test/a33.go
function main (line 5) | func main() {
FILE: _test/a34.go
function main (line 5) | func main() {
FILE: _test/a35.go
function main (line 5) | func main() {
FILE: _test/a36.go
function main (line 5) | func main() {
FILE: _test/a37.go
function main (line 5) | func main() {
FILE: _test/a38.go
function main (line 5) | func main() {
FILE: _test/a39.go
function main (line 5) | func main() {
FILE: _test/a4.go
function main (line 5) | func main() {
FILE: _test/a40.go
type rule (line 5) | type rule
constant r0 (line 8) | r0 rule = iota
constant r1 (line 9) | r1
constant r2 (line 10) | r2
function main (line 18) | func main() {
FILE: _test/a41.go
function main (line 5) | func main() {
FILE: _test/a42.go
function main (line 8) | func main() {
FILE: _test/a43.go
type T (line 5) | type T
constant l1 (line 8) | l1 = 2
constant l2 (line 9) | l2 = 3
function main (line 12) | func main() {
FILE: _test/a44.go
constant max (line 5) | max = 32
function main (line 7) | func main() {
FILE: _test/a5.go
function main (line 5) | func main() {
FILE: _test/a6.go
function main (line 5) | func main() {
FILE: _test/a7.go
function main (line 5) | func main() {
FILE: _test/a8.go
function main (line 5) | func main() {
FILE: _test/a9.go
function main (line 10) | func main() {
FILE: _test/add0.go
function main (line 3) | func main() {
FILE: _test/add1.go
function main (line 3) | func main() {
FILE: _test/add2.go
type iface (line 3) | type iface interface
function main (line 5) | func main() {
FILE: _test/addr0.go
type extendedRequest (line 8) | type extendedRequest struct
function main (line 14) | func main() {
FILE: _test/addr1.go
type T (line 5) | type T struct
function main (line 10) | func main() {
FILE: _test/addr2.go
type Email (line 9) | type Email struct
function f (line 14) | func f(r interface{}) error {
function withPointerAsInterface (line 18) | func withPointerAsInterface(r interface{}) error {
function ff (line 33) | func ff(s string, r interface{}) error {
function fff (line 37) | func fff(s string, r interface{}) error {
function main (line 41) | func main() {
FILE: _test/addr3.go
function main (line 7) | func main() {
FILE: _test/addr4.go
constant jsonData (line 9) | jsonData = `[
constant jsonData2 (line 14) | jsonData2 = `[
constant jsonData3 (line 19) | jsonData3 = `{
function fromSlice (line 24) | func fromSlice() {
function fromEmpty (line 40) | func fromEmpty() {
function sliceOfObjects (line 58) | func sliceOfObjects() {
function intoMap (line 72) | func intoMap() {
function main (line 99) | func main() {
FILE: _test/addr5.go
function main (line 9) | func main() {
FILE: _test/and.go
function main (line 3) | func main() {
function f1 (line 11) | func f1() bool {
function f2 (line 17) | func f2() bool {
FILE: _test/and0.go
function main (line 3) | func main() {
function f1 (line 11) | func f1() bool {
function f2 (line 16) | func f2() bool {
FILE: _test/and1.go
function main (line 3) | func main() {
function f1 (line 8) | func f1() bool {
function f2 (line 13) | func f2() bool {
FILE: _test/and2.go
function f (line 3) | func f() bool {
function main (line 8) | func main() {
FILE: _test/and3.go
function main (line 5) | func main() {
FILE: _test/append0.go
function f (line 5) | func f(a []int, b int) interface{} { return append(a, b) }
function main (line 7) | func main() {
FILE: _test/append1.go
function main (line 8) | func main() {
FILE: _test/append2.go
function main (line 8) | func main() {
FILE: _test/append3.go
function main (line 5) | func main() {
FILE: _test/append4.go
function main (line 5) | func main() {
FILE: _test/assert0.go
type MyWriter (line 8) | type MyWriter interface
type DummyWriter (line 12) | type DummyWriter interface
type TestStruct (line 16) | type TestStruct struct
method Write (line 18) | func (t TestStruct) Write(p []byte) (n int, err error) {
function usesWriter (line 22) | func usesWriter(w MyWriter) {
type MyStringer (line 27) | type MyStringer interface
type DummyStringer (line 31) | type DummyStringer interface
function usesStringer (line 35) | func usesStringer(s MyStringer) {
function main (line 39) | func main() {
FILE: _test/assert1.go
type TestStruct (line 9) | type TestStruct struct
method String (line 11) | func (t TestStruct) String() string {
type DummyStringer (line 15) | type DummyStringer interface
function main (line 19) | func main() {
FILE: _test/assert2.go
type stringBuilder (line 10) | type stringBuilder interface
function newStringBuilder (line 22) | func newStringBuilder() stringBuilder {
function main (line 26) | func main() {
FILE: _test/assert3.go
function main (line 5) | func main() {
FILE: _test/assert4.go
function main (line 6) | func main() {
FILE: _test/assign.go
function main (line 3) | func main() {
FILE: _test/assign0.go
function main (line 9) | func main() {
FILE: _test/assign1.go
function main (line 5) | func main() {
FILE: _test/assign10.go
function main (line 3) | func main() {
FILE: _test/assign11.go
function main (line 5) | func main() {
FILE: _test/assign12.go
function main (line 5) | func main() {
FILE: _test/assign13.go
function getStr (line 5) | func getStr() string {
function main (line 9) | func main() {
FILE: _test/assign14.go
function main (line 7) | func main() {
FILE: _test/assign15.go
function main (line 3) | func main() {
FILE: _test/assign16.go
type H (line 3) | type H struct
function main (line 7) | func main() {
FILE: _test/assign17.go
function main (line 3) | func main() {
FILE: _test/assign18.go
function main (line 3) | func main() {
FILE: _test/assign19.go
function main (line 3) | func main() {
FILE: _test/assign2.go
function main (line 3) | func main() {
function hello (line 9) | func hello(r uint32) uint32 { return r + 1 }
FILE: _test/assign3.go
function main (line 3) | func main() {
FILE: _test/assign4.go
function main (line 3) | func main() {
FILE: _test/assign5.go
function main (line 5) | func main() {
FILE: _test/assign6.go
function main (line 5) | func main() {
FILE: _test/assign7.go
function main (line 5) | func main() {
FILE: _test/assign8.go
function main (line 3) | func main() {
FILE: _test/assign9.go
type foo (line 3) | type foo
function boo (line 5) | func boo(b int) { println("boo", b) }
function main (line 7) | func main() {
FILE: _test/bin.go
function main (line 5) | func main() {
FILE: _test/bin0.go
function main (line 5) | func main() {
FILE: _test/bin1.go
function main (line 8) | func main() {
FILE: _test/bin2.go
function main (line 8) | func main() {
FILE: _test/bin3.go
function main (line 5) | func main() {
FILE: _test/bin4.go
function Bar (line 8) | func Bar(s string) bool {
function main (line 16) | func main() {
FILE: _test/bin5.go
function main (line 8) | func main() {
FILE: _test/binstruct_ptr_map0.go
function main (line 8) | func main() {
FILE: _test/binstruct_ptr_slice0.go
function main (line 8) | func main() {
FILE: _test/binstruct_slice0.go
function main (line 8) | func main() {
FILE: _test/bltn.go
function main (line 3) | func main() {
FILE: _test/bltn0.go
function main (line 3) | func main() {
FILE: _test/bool.go
function main (line 5) | func main() {
FILE: _test/bool0.go
function main (line 5) | func main() {
FILE: _test/bool1.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/bool2.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/bool3.go
function main (line 3) | func main() {
FILE: _test/bool4.go
function main (line 3) | func main() {
FILE: _test/bool5.go
function main (line 3) | func main() {
FILE: _test/break0.go
function main (line 3) | func main() {
FILE: _test/break1.go
function main (line 3) | func main() {
FILE: _test/break2.go
function main (line 3) | func main() {
FILE: _test/break3.go
function main (line 3) | func main() {
FILE: _test/cap0.go
function f (line 3) | func f(a []int) interface{} {
function g (line 7) | func g(a []int) int {
function main (line 11) | func main() {
FILE: _test/chan0.go
type Channel (line 3) | type Channel
function send (line 5) | func send(c Channel) { c <- "ping" }
function main (line 7) | func main() {
FILE: _test/chan1.go
function send (line 3) | func send(c chan<- string) { c <- "ping" }
function main (line 5) | func main() {
FILE: _test/chan10.go
function main (line 5) | func main() {
FILE: _test/chan2.go
function main (line 5) | func main() {
FILE: _test/chan3.go
function send (line 3) | func send(c chan<- int32) { c <- 123 }
function main (line 5) | func main() {
FILE: _test/chan4.go
function send (line 3) | func send(c chan<- bool) { c <- false }
function main (line 5) | func main() {
FILE: _test/chan5.go
function main (line 5) | func main() {
FILE: _test/chan6.go
function send (line 3) | func send(c chan<- int32) { c <- 123 }
function main (line 5) | func main() {
FILE: _test/chan7.go
function main (line 5) | func main() {
FILE: _test/chan8.go
function main (line 3) | func main() {
FILE: _test/chan9.go
type Channel (line 3) | type Channel
type T (line 5) | type T struct
function send (line 9) | func send(c Channel) { c <- "ping" }
function main (line 11) | func main() {
FILE: _test/cli1.go
function client (line 11) | func client(uri string) {
function server (line 23) | func server(ln net.Listener, ready chan bool) {
function main (line 33) | func main() {
FILE: _test/cli2.go
type T (line 11) | type T struct
method Close (line 15) | func (t *T) Close() {
function client (line 19) | func client(uri string) {
function server (line 31) | func server(ln net.Listener, ready chan bool) {
function main (line 41) | func main() {
FILE: _test/cli3.go
function client (line 11) | func client(uri string) {
function main (line 23) | func main() {
FILE: _test/cli4.go
type mw1 (line 11) | type mw1 struct
method ServeHTTP (line 15) | func (m *mw1) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
type mw0 (line 19) | type mw0 struct
method ServeHTTP (line 21) | func (m *mw0) ServeHTTP(w http.ResponseWriter, r *http.Request) {
function main (line 25) | func main() {
function client (line 38) | func client(uri string) {
FILE: _test/cli5.go
type mw1 (line 11) | type mw1 struct
method ServeHTTP (line 15) | func (m *mw1) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
type mw0 (line 19) | type mw0 struct
method ServeHTTP (line 21) | func (m *mw0) ServeHTTP(w http.ResponseWriter, r *http.Request) {
function main (line 25) | func main() {
function client (line 38) | func client(uri string) {
FILE: _test/cli6.go
type T (line 11) | type T struct
type mw1 (line 15) | type mw1 struct
method ServeHTTP (line 19) | func (m *mw1) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
function main (line 27) | func main() {
function client (line 39) | func client(uri string) {
FILE: _test/cli7.go
type T (line 11) | type T struct
type mw1 (line 15) | type mw1 struct
method ServeHTTP (line 20) | func (m *mw1) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
function main (line 29) | func main() {
function client (line 43) | func client(uri string) {
FILE: _test/cli8.go
type T (line 8) | type T struct
method ServeHTTP (line 13) | func (t *T) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
function New (line 20) | func New(name string, next http.Handler) (http.Handler, error) { return ...
function main (line 22) | func main() {
FILE: _test/closure0.go
type adder (line 3) | type adder
function genAdd (line 5) | func genAdd(k int) adder {
function main (line 11) | func main() {
FILE: _test/closure1.go
type adder (line 3) | type adder
function genAdd (line 5) | func genAdd(k int) adder {
function main (line 11) | func main() {
FILE: _test/closure10.go
function main (line 3) | func main() {
FILE: _test/closure11.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/closure12.go
type T (line 5) | type T struct
function main (line 9) | func main() {
FILE: _test/closure13.go
type monkey (line 8) | type monkey struct
function main (line 12) | func main() {
FILE: _test/closure14.go
type monkey (line 5) | type monkey struct
function getk (line 9) | func getk(k int) (int, error) { return k, nil }
function main (line 11) | func main() {
FILE: _test/closure15.go
function main (line 3) | func main() {
FILE: _test/closure16.go
function main (line 3) | func main() {
FILE: _test/closure17.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/closure18.go
type T (line 5) | type T struct
function main (line 9) | func main() {
FILE: _test/closure19.go
function main (line 3) | func main() {
FILE: _test/closure2.go
function adder (line 3) | func adder() func(int) int {
function main (line 11) | func main() {
FILE: _test/closure20.go
function main (line 3) | func main() {
FILE: _test/closure3.go
type T1 (line 3) | type T1 struct
method genAdd (line 7) | func (t *T1) genAdd(k int) func(int) int {
function main (line 16) | func main() {
FILE: _test/closure4.go
type T1 (line 3) | type T1 struct
method genAdd (line 7) | func (t *T1) genAdd(k int) func(int) int {
function main (line 16) | func main() {
FILE: _test/closure5.go
type T1 (line 3) | type T1 struct
method genAdd (line 7) | func (t T1) genAdd(k int) func(int) int {
function main (line 16) | func main() {
FILE: _test/closure6.go
type T1 (line 3) | type T1 struct
method genAdd (line 7) | func (t *T1) genAdd(k int) func(int) int {
function main (line 16) | func main() {
FILE: _test/closure7.go
type Config (line 7) | type Config struct
function SetConfig (line 13) | func SetConfig() func(*Config) {
function main (line 19) | func main() {
FILE: _test/closure8.go
function main (line 5) | func main() {
FILE: _test/closure9.go
function main (line 3) | func main() {
FILE: _test/comp0.go
function main (line 3) | func main() {
FILE: _test/comp1.go
function main (line 3) | func main() {
FILE: _test/comp2.go
type delta (line 3) | type delta
function main (line 5) | func main() {
FILE: _test/complex0.go
function main (line 5) | func main() {
FILE: _test/complex1.go
function main (line 5) | func main() {
FILE: _test/complex2.go
function main (line 5) | func main() {
FILE: _test/complex3.go
function main (line 5) | func main() {
FILE: _test/complex4.go
function f (line 5) | func f(a, b float64) interface{} { return complex(a, b) }
function main (line 7) | func main() {
FILE: _test/composite0.go
type T (line 7) | type T struct
function main (line 9) | func main() {
FILE: _test/composite1.go
type T (line 7) | type T struct
function main (line 9) | func main() {
FILE: _test/composite10.go
function main (line 5) | func main() {
FILE: _test/composite11.go
function main (line 8) | func main() {
FILE: _test/composite12.go
type A (line 3) | type A struct
type D (line 7) | type D struct
function main (line 11) | func main() {
FILE: _test/composite13.go
type A (line 3) | type A struct
type D (line 7) | type D struct
function main (line 11) | func main() {
FILE: _test/composite14.go
type T (line 5) | type T struct
function main (line 9) | func main() {
FILE: _test/composite15.go
function interfaceAsInts (line 7) | func interfaceAsInts() {
function interfaceAsInterfaces (line 24) | func interfaceAsInterfaces() {
function main (line 42) | func main() {
FILE: _test/composite16.go
function main (line 8) | func main() {
FILE: _test/composite17.go
function main (line 9) | func main() {
function stringOr (line 22) | func stringOr(v, def string) string {
FILE: _test/composite18.go
type fn (line 5) | type fn
function cmpLessFn (line 13) | func cmpLessFn(a string, b string) bool {
function cmpGreaterFn (line 17) | func cmpGreaterFn(a string, b string) bool {
function main (line 21) | func main() {
FILE: _test/composite19.go
type fn (line 5) | type fn
function cmpLessFn (line 13) | func cmpLessFn(a string, b string) bool {
function cmpGreaterFn (line 17) | func cmpGreaterFn(a string, b string) bool {
function main (line 21) | func main() {
FILE: _test/composite2.go
type T (line 7) | type T struct
function main (line 9) | func main() {
FILE: _test/composite3.go
function main (line 3) | func main() {
FILE: _test/composite4.go
function main (line 3) | func main() {
FILE: _test/composite5.go
type T (line 5) | type T struct
function main (line 11) | func main() {
FILE: _test/composite6.go
type T (line 9) | type T struct
function main (line 15) | func main() {
FILE: _test/composite7.go
type T (line 3) | type T struct
function main (line 13) | func main() {
FILE: _test/composite8.go
type T (line 3) | type T struct
function main (line 5) | func main() {
FILE: _test/composite8bis.go
type T (line 3) | type T struct
function main (line 5) | func main() {
FILE: _test/composite9.go
function main (line 5) | func main() {
FILE: _test/const0.go
constant a (line 4) | a = iota
constant b (line 5) | b
function main (line 8) | func main() {
FILE: _test/const1.go
type T (line 3) | type T struct
function main (line 10) | func main() {
FILE: _test/const10.go
constant a (line 4) | a = 2
constant b (line 5) | b = c + d
constant c (line 6) | c = a + d
constant d (line 7) | d = e + f
constant e (line 8) | e = 3
constant f (line 9) | f = 4
function main (line 12) | func main() {
FILE: _test/const11.go
function main (line 3) | func main() {
FILE: _test/const12.go
type Kind (line 3) | type Kind
constant None (line 6) | None Kind = 0
constant Left (line 7) | Left Kind = 1 << iota
constant Right (line 8) | Right
constant Both (line 9) | Both Kind = Left | Right
function main (line 12) | func main() {
FILE: _test/const13.go
function main (line 7) | func main() {
FILE: _test/const14.go
function f1 (line 5) | func f1(i int) { println("i:", i) }
function main (line 7) | func main() {
FILE: _test/const15.go
type T1 (line 3) | type T1
type t1 (line 5) | type t1
constant P2 (line 8) | P2 T1 = 2
constant P3 (line 9) | P3 T1 = 3
function main (line 12) | func main() {
FILE: _test/const16.go
function main (line 7) | func main() {
FILE: _test/const17.go
function main (line 7) | func main() {
FILE: _test/const18.go
function main (line 5) | func main() {
FILE: _test/const19.go
function get10Hours (line 8) | func get10Hours() time.Duration {
function main (line 12) | func main() {
FILE: _test/const2.go
function main (line 3) | func main() {
constant a (line 7) | a = "hello"
FILE: _test/const20.go
constant maxLen (line 5) | maxLen = int64(int64(^uint64(0) >> 1))
function main (line 7) | func main() {
FILE: _test/const21.go
constant a (line 3) | a = 64
function main (line 7) | func main() {
FILE: _test/const22.go
constant numDec (line 4) | numDec uint8 = (1 << iota) / 2
constant numHex (line 5) | numHex
constant numOct (line 6) | numOct
constant numFloat (line 7) | numFloat
function main (line 10) | func main() {
FILE: _test/const23.go
constant maxlen (line 3) | maxlen = len("hello")
function main (line 7) | func main() {
FILE: _test/const24.go
constant maxlen (line 5) | maxlen = cap(aa)
function main (line 9) | func main() {
FILE: _test/const25.go
constant FGBlack (line 4) | FGBlack Attribute = iota + 30
type Attribute (line 7) | type Attribute
function main (line 9) | func main() {
FILE: _test/const26.go
function init (line 7) | func init() {
constant constString (line 13) | constString string = "hello"
constant const1 (line 16) | const1 = iota + 10
constant const2 (line 17) | const2
constant const3 (line 18) | const3
function main (line 23) | func main() {}
FILE: _test/const3.go
constant a (line 3) | a, b, c int = 1, 2, 3
function main (line 5) | func main() { println(a, b, c) }
FILE: _test/const4.go
constant a (line 4) | a = 2
constant b (line 5) | b = 3
constant c (line 6) | c
function main (line 9) | func main() {
FILE: _test/const5.go
constant a (line 8) | a uint8 = 2 * iota
constant b (line 9) | b
constant c (line 10) | c
function main (line 13) | func main() {
FILE: _test/const6.go
constant maxNonStarters (line 4) | maxNonStarters = 30
constant maxBufferSize (line 5) | maxBufferSize = maxNonStarters + 2
type reorderBuffer (line 8) | type reorderBuffer struct
type Properties (line 12) | type Properties struct
function main (line 17) | func main() {
FILE: _test/const7.go
constant a (line 6) | a = iota
constant b (line 7) | b
constant c (line 8) | c
constant d (line 9) | d
type T (line 12) | type T
function main (line 14) | func main() {
FILE: _test/const8.go
constant a (line 4) | a = 2
constant b (line 5) | b = c + d
constant c (line 6) | c = 4
constant d (line 7) | d = 5
function main (line 10) | func main() {
FILE: _test/const9.go
constant a (line 4) | a = 2
constant b (line 5) | b = c + d
constant c (line 6) | c = a + d
constant d (line 7) | d = e + f
constant e (line 8) | e = b + 2
constant f (line 9) | f = 4
function main (line 12) | func main() {
FILE: _test/cont.go
function main (line 3) | func main() {
FILE: _test/cont0.go
function main (line 3) | func main() {
FILE: _test/cont1.go
function main (line 3) | func main() {
FILE: _test/cont2.go
function main (line 3) | func main() {
FILE: _test/cont3.go
function main (line 3) | func main() {
FILE: _test/context.go
function get (line 5) | func get(ctx context.Context, k string) string {
function main (line 13) | func main() {
FILE: _test/context2.go
function get (line 5) | func get(ctx context.Context, k string) string {
function main (line 15) | func main() {
FILE: _test/convert0.go
type T (line 3) | type T struct
type comparator (line 7) | type comparator
function sort (line 9) | func sort(items []T, comp comparator) {
function compT (line 13) | func compT(t0, t1 T) bool { return t0.v < t1.v }
function main (line 15) | func main() {
FILE: _test/convert1.go
type atoidef (line 5) | type atoidef
function main (line 7) | func main() {
FILE: _test/convert2.go
function fakeSplitFunc (line 5) | func fakeSplitFunc(data []byte, atEOF bool) (advance int, token []byte, ...
function main (line 9) | func main() {
FILE: _test/convert3.go
function main (line 8) | func main() {
FILE: _test/copy0.go
function main (line 5) | func main() {
FILE: _test/copy1.go
function main (line 5) | func main() {
FILE: _test/copy2.go
function f (line 5) | func f(a, b []int) interface{} { return copy(a, b) }
function main (line 7) | func main() {
FILE: _test/ct/ct1.go
function init (line 3) | func init() { println("hello from ct1") }
FILE: _test/ct/ct2.go
function init (line 5) | func init() { println("hello from ct2") }
FILE: _test/ct/ct3.go
function init (line 5) | func init() { println("hello from ct3") }
FILE: _test/ct1/ct1.go
type Class (line 3) | type Class
constant L (line 6) | L Class = iota
constant R (line 7) | R
constant AL (line 8) | AL
FILE: _test/d1/d1.go
type T (line 3) | type T struct
method F (line 7) | func (t *T) F() { println(t.Name) }
function NewT (line 9) | func NewT(s string) *T { return &T{s} }
FILE: _test/d3.go
function main (line 5) | func main() {
FILE: _test/defer0.go
function main (line 5) | func main() {
FILE: _test/defer1.go
function main (line 5) | func main() {
FILE: _test/defer2.go
function main (line 5) | func main() {
FILE: _test/defer3.go
function main (line 8) | func main() {
FILE: _test/defer4.go
type T (line 5) | type T struct
method get (line 10) | func (t *T) get() string {
function main (line 18) | func main() {
FILE: _test/defer5.go
function f1 (line 3) | func f1() {
function f2 (line 9) | func f2() {
function f3 (line 15) | func f3() {
function main (line 21) | func main() {
FILE: _test/defer6.go
function f1 (line 3) | func f1() {
function f2 (line 9) | func f2() {
function f3 (line 15) | func f3() {
function main (line 21) | func main() {
FILE: _test/defer7.go
function f1 (line 5) | func f1(in, out []string) {
function main (line 9) | func main() {
FILE: _test/defer8.go
function f1 (line 5) | func f1(m map[string]string) {
function main (line 12) | func main() {
FILE: _test/defer9.go
function f1 (line 5) | func f1(ch chan string) {
function main (line 11) | func main() {
FILE: _test/delete0.go
function main (line 5) | func main() {
FILE: _test/eval0.go
function main (line 10) | func main() {
FILE: _test/export0.go
function Test (line 3) | func Test() {
FILE: _test/export1.go
type Sample (line 3) | type Sample struct
method Test (line 5) | func (s *Sample) Test() {
FILE: _test/factor.go
function main (line 8) | func main() {
FILE: _test/fib.go
function fib (line 4) | func fib(n int) int {
function main (line 11) | func main() {
FILE: _test/fib0.go
function fib (line 4) | func fib(n int) int {
function main (line 11) | func main() {
FILE: _test/file_access.go
function main (line 8) | func main() {
FILE: _test/flag0.go
function main (line 8) | func main() {
FILE: _test/foo/bar.go
function init (line 8) | func init() { println("init foo") }
FILE: _test/foo/boo/boo.go
function init (line 5) | func init() { println("init boo") }
FILE: _test/for0.go
function main (line 3) | func main() {
FILE: _test/for1.go
function main (line 3) | func main() {
FILE: _test/for10.go
function main (line 3) | func main() {
FILE: _test/for11.go
function main (line 3) | func main() {
FILE: _test/for12.go
function main (line 3) | func main() {
FILE: _test/for13.go
function main (line 3) | func main() {
FILE: _test/for14.go
function main (line 3) | func main() {
FILE: _test/for15.go
function f (line 3) | func f() int { println("in f"); return 1 }
function main (line 5) | func main() {
FILE: _test/for16.go
function main (line 3) | func main() {
FILE: _test/for17.go
function main (line 3) | func main() {
FILE: _test/for18.go
function main (line 3) | func main() {
FILE: _test/for19.go
function main (line 3) | func main() {
FILE: _test/for2.go
function main (line 3) | func main() {
FILE: _test/for3.go
function main (line 8) | func main() {
FILE: _test/for4.go
function main (line 3) | func main() {
FILE: _test/for5.go
function main (line 3) | func main() {
FILE: _test/for6.go
function main (line 5) | func main() {
FILE: _test/for7.go
function main (line 3) | func main() {
FILE: _test/for8.go
function main (line 3) | func main() {
FILE: _test/for9.go
function main (line 3) | func main() {
FILE: _test/fun.go
function f (line 3) | func f(i int) int { return i + 15 }
function main (line 5) | func main() {
FILE: _test/fun10.go
function f (line 5) | func f() func() {
function main (line 9) | func main() {
FILE: _test/fun11.go
type F (line 5) | type F
function main (line 7) | func main() {
FILE: _test/fun12.go
function use (line 3) | func use(interface{}) {}
function main (line 5) | func main() {
FILE: _test/fun13.go
type T (line 5) | type T struct
function newT (line 7) | func newT() (T, error) { return T{}, nil }
function main (line 9) | func main() {
FILE: _test/fun14.go
function f (line 3) | func f() (bool, int) { return true, 2 }
function g (line 5) | func g() (bool, int) { return f() }
function main (line 7) | func main() {
FILE: _test/fun15.go
function f1 (line 3) | func f1(a int) interface{} { return a + 1 }
function f2 (line 5) | func f2(a int64) interface{} { return a + 1 }
function main (line 7) | func main() {
FILE: _test/fun16.go
function f1 (line 3) | func f1(a int) int { return a + 1 }
function f2 (line 5) | func f2(a int) interface{} {
function main (line 13) | func main() {
FILE: _test/fun17.go
function f1 (line 3) | func f1(a int) interface{} { return a + 1 }
function f2 (line 5) | func f2(a int) interface{} { return f1(a) }
function main (line 7) | func main() {
FILE: _test/fun18.go
function f (line 5) | func f(s string) interface{} { return m[s] }
function main (line 7) | func main() {
FILE: _test/fun19.go
function foo (line 7) | func foo() ([]string, error) {
function main (line 11) | func main() {
FILE: _test/fun2.go
type Coord (line 3) | type Coord struct
function f (line 5) | func f(c Coord) int { return c.x + c.y }
function main (line 7) | func main() {
FILE: _test/fun20.go
function ferr (line 7) | func ferr() error { return myerr }
function foo (line 9) | func foo() ([]string, error) {
function main (line 13) | func main() {
FILE: _test/fun21.go
function Bar (line 3) | func Bar() string {
function main (line 7) | func main() {
FILE: _test/fun22.go
function main (line 5) | func main() {
FILE: _test/fun23.go
function f (line 3) | func f(x int) { return x }
function main (line 5) | func main() {
FILE: _test/fun24.go
function f (line 3) | func f(x int) (int, int) { return x, "foo" }
function main (line 5) | func main() {
FILE: _test/fun25.go
function f (line 3) | func f(x string) (a int, b int) { return x, 5 }
function main (line 5) | func main() {
FILE: _test/fun26.go
type F (line 3) | type F
function f1 (line 5) | func f1() (int, error) { return 3, nil }
function f2 (line 7) | func f2(a string, f F) {
function main (line 12) | func main() {
FILE: _test/fun27.go
function main (line 8) | func main() {
function print (line 20) | func print(state string) {
FILE: _test/fun28.go
type T (line 7) | type T struct
function finalize (line 11) | func finalize(t *T) { println("finalize") }
function newT (line 13) | func newT() *T {
function main (line 19) | func main() {
FILE: _test/fun3.go
type Coord (line 3) | type Coord struct
function f (line 5) | func f(i, j int, c Coord) int { return i*c.x + j*c.y }
function main (line 7) | func main() {
FILE: _test/fun4.go
function f (line 3) | func f() {}
function main (line 5) | func main() {
FILE: _test/fun5.go
function f (line 3) | func f(i int64) {
function main (line 7) | func main() {
FILE: _test/fun6.go
function NewPool (line 8) | func NewPool() Pool { return Pool{} }
type Pool (line 10) | type Pool struct
function main (line 16) | func main() {
FILE: _test/fun7.go
function Foo (line 8) | func Foo(goflag *goflag.Flag) {
function main (line 12) | func main() {
FILE: _test/fun8.go
function main (line 3) | func main() { println(f == nil) }
FILE: _test/fun9.go
type T (line 3) | type T
function main (line 5) | func main() {
FILE: _test/gen1.go
function SumInts (line 6) | func SumInts(m map[string]int64) int64 {
function SumFloats (line 15) | func SumFloats(m map[string]float64) float64 {
function main (line 23) | func main() {
FILE: _test/gen10.go
function genFunc (line 3) | func genFunc() (f func()) {
function main (line 7) | func main() {
FILE: _test/gen11.go
type Slice (line 9) | type Slice struct
type IPPrefixSlice (line 13) | type IPPrefixSlice struct
method MarshalJSON (line 20) | func (v IPPrefixSlice) MarshalJSON() ([]byte, error) {
method MarshalJSON (line 17) | func (v Slice[T]) MarshalJSON() ([]byte, error) { return json.Marshal(v....
function main (line 24) | func main() {
FILE: _test/gen12.go
function MapOf (line 7) | func MapOf[K comparable, V any](m map[K]V) Map[K, V] {
type Map (line 11) | type Map struct
type VMap (line 17) | type VMap struct
type MapView (line 21) | type MapView struct
method Int (line 15) | func (v MapView) Int() Map[string, int] { return MapOf(v.ж.Int) }
function main (line 25) | func main() {
FILE: _test/gen13.go
type Map (line 3) | type Map struct
method Has (line 7) | func (m Map[K, V]) Has(k K) bool {
function main (line 12) | func main() {
FILE: _test/gen2.go
function SumIntsOrFloats (line 7) | func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V {
function main (line 15) | func main() {
FILE: _test/gen3.go
type Number (line 3) | type Number interface
function Sum (line 7) | func Sum[T Number](numbers []T) T {
function main (line 15) | func main() {
FILE: _test/gen4.go
type List (line 5) | type List struct
type element (line 10) | type element struct
method Push (line 15) | func (lst *List[T]) Push(v T) {
method GetAll (line 25) | func (lst *List[T]) GetAll() []T {
function main (line 33) | func main() {
FILE: _test/gen5.go
type Set (line 5) | type Set struct
function Make (line 9) | func Make[Elem comparable]() Set[Elem] {
method Add (line 13) | func (s Set[Elem]) Add(v Elem) {
function main (line 17) | func main() {
FILE: _test/gen6.go
function MapKeys (line 3) | func MapKeys[K comparable, V any](m map[K]V) []K {
function main (line 11) | func main() {
FILE: _test/gen7.go
function MapKeys (line 3) | func MapKeys[K comparable, V any](m map[K]V) []K {
function main (line 11) | func main() {
FILE: _test/gen8.go
type Float (line 3) | type Float interface
function add (line 7) | func add[T Float](a, b T) float64 { return float64(a) + float64(b) }
function main (line 9) | func main() {
FILE: _test/gen9.go
type Float (line 3) | type Float interface
function add (line 7) | func add[T Float](a, b T) float64 { return float64(a) + float64(b) }
function main (line 9) | func main() {
FILE: _test/goto0.go
function main (line 3) | func main() {
FILE: _test/goto1.go
function main (line 3) | func main() {
FILE: _test/heap.go
type IntHeap (line 10) | type IntHeap
method Len (line 12) | func (h IntHeap) Len() int { return len(h) }
method Less (line 13) | func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] }
method Swap (line 14) | func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] }
method Push (line 16) | func (h *IntHeap) Push(x interface{}) {
method Pop (line 22) | func (h *IntHeap) Pop() interface{} {
function main (line 32) | func main() {
FILE: _test/if.go
function main (line 3) | func main() {
function f (line 9) | func f() int { return 1 }
FILE: _test/if0.go
function main (line 3) | func main() {
FILE: _test/if1.go
function main (line 3) | func main() {
FILE: _test/if2.go
function main (line 5) | func main() {
FILE: _test/if3.go
function main (line 3) | func main() {
FILE: _test/if4.go
constant bad (line 3) | bad = false
function main (line 5) | func main() {
FILE: _test/if5.go
function main (line 3) | func main() {
FILE: _test/if6.go
function main (line 3) | func main() {
FILE: _test/if7.go
function main (line 3) | func main() {
FILE: _test/imag0.go
function f (line 5) | func f(c complex128) interface{} { return imag(c) }
function main (line 7) | func main() {
FILE: _test/import0.go
function main (line 5) | func main() {
FILE: _test/import1.go
function main (line 5) | func main() {
FILE: _test/import2.go
function main (line 5) | func main() {
FILE: _test/import3.go
function main (line 5) | func main() { println(foo.Bar, foo.Boo) }
FILE: _test/import4.go
function main (line 5) | func main() { println("num:", p1.Uint32()) }
FILE: _test/import5.go
function main (line 5) | func main() { println(boo.Bar, boo.Boo, boo.Bir) }
FILE: _test/import6.go
function main (line 5) | func main() {
FILE: _test/import7.go
function main (line 5) | func main() {
FILE: _test/import8.go
function main (line 5) | func main() {
FILE: _test/import9.go
function main (line 5) | func main() {
FILE: _test/inc.go
function main (line 3) | func main() {
FILE: _test/inception.go
function main (line 9) | func main() {
FILE: _test/init0.go
function init (line 3) | func init() {
function init (line 7) | func init() {
function main (line 11) | func main() {
FILE: _test/init1.go
function init (line 3) | func init() {
function main (line 7) | func main() {
FILE: _test/interface0.go
type sample (line 3) | type sample struct
function run (line 7) | func run(inf interface{}, name string) {
function main (line 12) | func main() {
FILE: _test/interface1.go
type fii (line 5) | type fii interface
type Boo (line 9) | type Boo struct
method Hello (line 13) | func (b *Boo) Hello() {
function inCall (line 18) | func inCall(foo fii) {
function main (line 23) | func main() {
FILE: _test/interface10.go
type Edge (line 3) | type Edge interface
function main (line 7) | func main() {
FILE: _test/interface11.go
type Error (line 5) | type Error interface
type MyError (line 10) | type MyError
type T (line 12) | type T struct
method Error (line 16) | func (t *T) Error() string { return "err: " + t.Name }
method Code (line 17) | func (t *T) Code() string { return "code: " + t.Name }
function newT (line 19) | func newT(s string) MyError { return &T{s} }
function main (line 21) | func main() {
FILE: _test/interface12.go
type I1 (line 3) | type I1 interface
type T1 (line 7) | type T1 struct
method Truc (line 9) | func (T1) Truc() { println("in T1 truc") }
function main (line 13) | func main() {
FILE: _test/interface13.go
type X (line 7) | type X struct
method Foo (line 9) | func (X) Foo() int {
method Bar (line 12) | func (X) Bar() int {
type Foo (line 16) | type Foo interface
type Bar (line 19) | type Bar interface
function main (line 23) | func main() {
FILE: _test/interface14.go
type T (line 3) | type T struct
method Error (line 5) | func (t *T) Error() string { return "T: error" }
function main (line 9) | func main() {
FILE: _test/interface15.go
type Fooer (line 3) | type Fooer interface
type Barer (line 7) | type Barer interface
type T (line 13) | type T struct
method Foo (line 15) | func (t *T) Foo() string { return "T: foo" }
method Bar (line 16) | func (*T) Bar() { println("in bar") }
function main (line 20) | func main() {
FILE: _test/interface16.go
type Barer (line 5) | type Barer interface
type T (line 10) | type T struct
method String (line 12) | func (*T) String() string { return "T: nothing" }
method Bar (line 13) | func (*T) Bar() { println("in bar") }
function main (line 17) | func main() {
FILE: _test/interface17.go
type T (line 3) | type T struct
method Error (line 5) | func (t T) Error() string { return "T: error" }
function main (line 9) | func main() {
FILE: _test/interface18.go
type T (line 3) | type T struct
method Error (line 5) | func (t *T) Error() string { return "T: error" }
method Foo (line 6) | func (*T) Foo() { println("foo") }
function main (line 10) | func main() {
FILE: _test/interface19.go
function main (line 7) | func main() {
FILE: _test/interface2.go
type fii (line 5) | type fii interface
type Boo (line 9) | type Boo struct
method Hello (line 17) | func (b Boo) Hello() {
type Bar (line 13) | type Bar struct
method Hello (line 15) | func (b Bar) Hello() { fmt.Println("b:", b) }
function inCall (line 22) | func inCall(foo fii) {
function main (line 32) | func main() {
FILE: _test/interface20.go
function main (line 5) | func main() {
FILE: _test/interface21.go
function main (line 5) | func main() {
FILE: _test/interface22.go
function main (line 5) | func main() {
FILE: _test/interface23.go
function main (line 5) | func main() {
FILE: _test/interface24.go
function main (line 5) | func main() {
FILE: _test/interface25.go
function main (line 5) | func main() {
FILE: _test/interface26.go
function main (line 5) | func main() {
FILE: _test/interface27.go
function main (line 7) | func main() {
FILE: _test/interface28.go
function main (line 7) | func main() {
FILE: _test/interface29.go
function main (line 3) | func main() {
FILE: _test/interface3.go
type fii (line 5) | type fii interface
type Boo (line 9) | type Boo struct
method Hello (line 13) | func (b Boo) Hello() {
function inCall (line 18) | func inCall(foo fii) {
function main (line 23) | func main() {
FILE: _test/interface30.go
function main (line 3) | func main() {
FILE: _test/interface31.go
function main (line 5) | func main() {
FILE: _test/interface32.go
function main (line 5) | func main() {
FILE: _test/interface33.go
function main (line 5) | func main() {
FILE: _test/interface34.go
function main (line 5) | func main() {
FILE: _test/interface35.go
type T (line 5) | type T struct
function main (line 9) | func main() {
FILE: _test/interface36.go
type S (line 11) | type S struct
method F (line 15) | func (s *S) F() int { return len(s.Name) }
method G (line 16) | func (s *S) G() int { return s.F() }
method Ri (line 17) | func (s *S) Ri() I { return s }
method Rj (line 18) | func (s *S) Rj() J { return s }
type J (line 20) | type J interface
type I (line 26) | type I interface
function main (line 31) | func main() {
FILE: _test/interface37.go
type I (line 3) | type I interface
type s (line 8) | type s struct
method A (line 14) | func (c *s) A() string { return "a" }
method B (line 15) | func (c *s) B() string { return "b" }
function NewS (line 10) | func NewS() (I, error) {
function main (line 17) | func main() {
FILE: _test/interface38.go
type foo (line 5) | type foo struct
method String (line 9) | func (f foo) String() string {
function main (line 13) | func main() {
FILE: _test/interface39.go
type foo (line 5) | type foo struct
method String (line 9) | func (f *foo) String() string {
function main (line 13) | func main() {
FILE: _test/interface4.go
type fii (line 5) | type fii interface
type Boo (line 9) | type Boo struct
method Hello (line 17) | func (b Boo) Hello() {
type Bir (line 13) | type Bir struct
function inCall (line 22) | func inCall(foo fii) {
function main (line 27) | func main() {
FILE: _test/interface40.go
type foo (line 5) | type foo struct
method String (line 9) | func (f foo) String() string {
function Foo (line 13) | func Foo(s string) fmt.Stringer {
function main (line 17) | func main() {
FILE: _test/interface41.go
type foo (line 5) | type foo struct
method String (line 9) | func (f *foo) String() string {
function Foo (line 13) | func Foo(s string) fmt.Stringer {
function main (line 17) | func main() {
FILE: _test/interface42.go
function main (line 5) | func main() {
FILE: _test/interface43.go
function main (line 5) | func main() {
FILE: _test/interface44.go
type S (line 3) | type S struct
function main (line 7) | func main() {
FILE: _test/interface45.go
function main (line 5) | func main() {
FILE: _test/interface46.go
type I (line 5) | type I interface
type Printer (line 9) | type Printer struct
method Print (line 19) | func (p *Printer) Print() {
function New (line 13) | func New(i I) *Printer {
type T (line 23) | type T struct
method Foo (line 25) | func (t *T) Foo() string {
function main (line 29) | func main() {
FILE: _test/interface47.go
type Doer (line 3) | type Doer interface
type T (line 7) | type T struct
method Do (line 11) | func (t *T) Do() error { println("in do"); return nil }
function f (line 13) | func f() (Doer, error) { return &T{"truc"}, nil }
type Ev (line 15) | type Ev struct
method do (line 19) | func (e *Ev) do() {
function main (line 24) | func main() {
FILE: _test/interface48.go
type I1 (line 5) | type I1 interface
type I2 (line 9) | type I2 interface
function main (line 11) | func main() {
FILE: _test/interface49.go
type Descriptor (line 3) | type Descriptor interface
type FileDescriptor (line 7) | type FileDescriptor interface
type EnumDescriptors (line 12) | type EnumDescriptors interface
type EnumDescriptor (line 16) | type EnumDescriptor interface
type EnumValueDescriptors (line 20) | type EnumValueDescriptors interface
type EnumValueDescriptor (line 24) | type EnumValueDescriptor interface
type ServiceDescriptors (line 28) | type ServiceDescriptors interface
type ServiceDescriptor (line 32) | type ServiceDescriptor interface
type isServiceDescriptor (line 37) | type isServiceDescriptor interface
function main (line 39) | func main() {
FILE: _test/interface5.go
type Myint (line 5) | type Myint
method Double (line 7) | func (i Myint) Double() { fmt.Println("Myint:", i, i) }
type Boo (line 9) | type Boo interface
function f (line 13) | func f(boo Boo) {
function main (line 17) | func main() {
FILE: _test/interface50.go
function main (line 3) | func main() {
FILE: _test/interface51.go
type Error (line 3) | type Error interface
type T (line 8) | type T struct
method Error (line 12) | func (t *T) Error() string { return t.Msg }
method Message (line 13) | func (t *T) Message() string { return "message:" + t.Msg }
function newError (line 15) | func newError() Error { return &T{"test"} }
function main (line 17) | func main() {
FILE: _test/interface52.go
function main (line 5) | func main() {
FILE: _test/interface6.go
type Myint (line 5) | type Myint
method Double (line 7) | func (i Myint) Double() { fmt.Println("Myint:", i, i) }
type Boo (line 9) | type Boo interface
function f (line 13) | func f(boo Boo) { boo.Double() }
function g (line 15) | func g(i int) Boo { return Myint(i) }
function main (line 17) | func main() {
FILE: _test/interface7.go
type T (line 5) | type T
method Error (line 7) | func (t T) Error() string { return fmt.Sprintf("This is an error from ...
function f (line 9) | func f(t T) error { return t }
function main (line 11) | func main() {
FILE: _test/interface8.go
type HelloInterface (line 9) | type HelloInterface interface
type Hello (line 13) | type Hello struct
method Hi (line 15) | func (h *Hello) Hi() string {
function main (line 19) | func main() {
FILE: _test/interface9.go
type Int (line 5) | type Int
method String (line 7) | func (I Int) String() string {
function main (line 11) | func main() {
FILE: _test/io0.go
function main (line 9) | func main() {
FILE: _test/io1.go
function main (line 8) | func main() {
FILE: _test/io2.go
function main (line 10) | func main() {
FILE: _test/iota.go
constant Foo (line 6) | Foo = iota
constant Bar (line 7) | Bar
constant Baz (line 8) | Baz
constant Asm (line 12) | Asm = iota
constant C (line 13) | C
constant Java (line 14) | Java
constant Go (line 15) | Go
function main (line 18) | func main() {
FILE: _test/iota0.go
function main (line 5) | func main() {
FILE: _test/ipp_as_key.go
function main (line 8) | func main() {
FILE: _test/issue-1007.go
type TypeA (line 3) | type TypeA struct
type TypeB (line 7) | type TypeB struct
type TypeC (line 12) | type TypeC struct
type TypeD (line 18) | type TypeD struct
function build (line 22) | func build() *TypeA {
function Bar (line 30) | func Bar(s string) string {
function main (line 35) | func main() {
FILE: _test/issue-1010.go
type MyJsonMarshaler (line 8) | type MyJsonMarshaler struct
method MarshalJSON (line 10) | func (m MyJsonMarshaler) MarshalJSON() ([]byte, error) {
function main (line 14) | func main() {
FILE: _test/issue-1022.go
function main (line 5) | func main() {
FILE: _test/issue-1052.go
function main (line 5) | func main() {
FILE: _test/issue-1065.go
type AST (line 5) | type AST struct
function newAST (line 10) | func newAST(num int, root AST, children ...AST) AST {
function main (line 14) | func main() {
FILE: _test/issue-1068.go
type I (line 3) | type I interface
type T (line 7) | type T struct
method Hello (line 9) | func (t T) Hello() { println("hello") }
type I2 (line 11) | type I2
function main (line 13) | func main() {
FILE: _test/issue-1088.go
function main (line 5) | func main() {
FILE: _test/issue-1089.go
function main (line 8) | func main() {
FILE: _test/issue-1093.go
function b (line 3) | func b() string {
function main (line 7) | func main() {
FILE: _test/issue-1094.go
function main (line 5) | func main() {
FILE: _test/issue-1101.go
function main (line 8) | func main() {
FILE: _test/issue-1115.go
function main (line 5) | func main() {
FILE: _test/issue-1126.go
function main (line 9) | func main() {
FILE: _test/issue-1128.go
function main (line 5) | func main() {
FILE: _test/issue-1134.go
type I (line 3) | type I interface
type T (line 7) | type T struct
method Hello (line 12) | func (t *T) Hello() { println("Hello", t.Name) }
function main (line 14) | func main() {
FILE: _test/issue-1136.go
type T (line 8) | type T struct
method Read (line 12) | func (t *T) Read(p []byte) (n int, err error) { n, err = t.r.Read(p); ...
function main (line 14) | func main() {
FILE: _test/issue-1145.go
type F (line 5) | type F
function main (line 7) | func main() {
FILE: _test/issue-1156.go
type myInterface (line 3) | type myInterface interface
type V (line 7) | type V struct
method myFunc (line 9) | func (v *V) myFunc() string { return "hello" }
type U (line 11) | type U struct
method myFunc (line 15) | func (u *U) myFunc() string { return u.v.myFunc() }
function main (line 17) | func main() {
FILE: _test/issue-1163.go
type WidgetEvent (line 5) | type WidgetEvent struct
type WidgetControl (line 9) | type WidgetControl interface
type Button (line 13) | type Button struct
method HandleEvent (line 15) | func (b *Button) HandleEvent(e *WidgetEvent) {
type WindowEvent (line 18) | type WindowEvent struct
type Window (line 22) | type Window struct
method HandleEvent (line 26) | func (w *Window) HandleEvent(e *WindowEvent) {
function main (line 29) | func main() {
FILE: _test/issue-1166.go
type T (line 8) | type T
method Write (line 10) | func (t *T) Write(p []byte) (n int, err error) { *t = append(*t, p...)...
function foo (line 12) | func foo(w io.Writer) {
function main (line 18) | func main() {
FILE: _test/issue-1167.go
function main (line 9) | func main() {
FILE: _test/issue-1173.go
function main (line 5) | func main() {
FILE: _test/issue-1175.go
type Level (line 3) | type Level
constant a (line 6) | a Level = -1
constant b (line 7) | b Level = 5
constant d (line 8) | d = b - a + 1
type counters (line 11) | type counters
function main (line 13) | func main() {
FILE: _test/issue-1177.go
type counters (line 3) | type counters
function main (line 5) | func main() {
FILE: _test/issue-1179.go
type I (line 3) | type I interface
type T (line 7) | type T struct
method F (line 11) | func (t *T) F() { println("in F", t.Name) }
function NewI (line 13) | func NewI(s string) I { return newT(s) }
function newT (line 15) | func newT(s string) *T { return &T{s} }
function main (line 17) | func main() {
FILE: _test/issue-1181.go
function main (line 3) | func main() {
FILE: _test/issue-1185.go
type B (line 5) | type B
method Write (line 7) | func (b B) Write(p []byte) (n int, err error) {
function main (line 12) | func main() {
FILE: _test/issue-1187.go
type sink (line 8) | type sink interface
function newSink (line 13) | func newSink() sink {
function main (line 22) | func main() {
FILE: _test/issue-1189.go
type I (line 3) | type I interface
type S1 (line 7) | type S1 struct
method Foo (line 11) | func (s S1) Foo() int { return s.i }
type S2 (line 13) | type S2 struct
method Foo (line 15) | func (s *S2) Foo() int { return 42 }
function main (line 17) | func main() {
FILE: _test/issue-1202.go
type foobar (line 5) | type foobar struct
function cb (line 9) | func cb(text string) func() {
function main (line 15) | func main() {
FILE: _test/issue-1205.go
type Option (line 3) | type Option interface
function f (line 7) | func f(opts ...Option) {
type T (line 13) | type T struct
method apply (line 15) | func (t *T) apply() { println("in apply") }
function main (line 17) | func main() {
FILE: _test/issue-1208.go
type Enabler (line 3) | type Enabler interface
type Logger (line 7) | type Logger struct
method GetCore (line 11) | func (log *Logger) GetCore() Enabler { return log.core }
type T (line 13) | type T struct
method Enabled (line 15) | func (t *T) Enabled() bool { return true }
function main (line 17) | func main() {
FILE: _test/issue-1260.go
type WriteSyncer (line 9) | type WriteSyncer interface
type Sink (line 14) | type Sink interface
function newFileSink (line 19) | func newFileSink(path string) (Sink, error) {
type Sink1 (line 23) | type Sink1 struct
method Write (line 25) | func (s Sink1) Write(b []byte) (int, error) { println("in Write"); ret...
method Sync (line 26) | func (s Sink1) Sync() error { println("in Sync"); retu...
method Close (line 27) | func (s Sink1) Close() error { println("in Close", s.na...
function newS1 (line 28) | func newS1(name string) Sink { return Sink1{name} }
function newS1p (line 29) | func newS1p(name string) Sink { return &Sink1{name} }
type Sink2 (line 31) | type Sink2 struct
method Write (line 33) | func (s *Sink2) Write(b []byte) (int, error) { println("in Write"); re...
method Sync (line 34) | func (s *Sink2) Sync() error { println("in Sync"); ret...
method Close (line 35) | func (s *Sink2) Close() error { println("in Close", s.n...
function newS2 (line 36) | func newS2(name string) Sink { return Sink1{name} }
function main (line 38) | func main() {
FILE: _test/issue-1276.go
type customFlag (line 7) | type customFlag struct
method String (line 9) | func (cf customFlag) String() string {
method Set (line 13) | func (cf customFlag) Set(string) error {
function main (line 17) | func main() {
FILE: _test/issue-1280.go
type DBReader (line 9) | type DBReader interface
type DB (line 14) | type DB struct
function main (line 18) | func main() {
FILE: _test/issue-1285.go
type T1 (line 4) | type T1 struct
type T2 (line 5) | type T2 struct
function main (line 13) | func main() {
FILE: _test/issue-1288.go
function main (line 3) | func main() {
FILE: _test/issue-1300.go
constant buflen (line 3) | buflen = 512
type T (line 5) | type T struct
function f (line 9) | func f(t *T) { *t = T{buf: make([]byte, 0, buflen)} }
function main (line 11) | func main() {
FILE: _test/issue-1304.go
type Node (line 3) | type Node struct
function main (line 9) | func main() {
FILE: _test/issue-1306.go
function check (line 5) | func check() (result bool, err error) {
function main (line 9) | func main() {
FILE: _test/issue-1308.go
type test (line 5) | type test struct
type T (line 10) | type T struct
function main (line 14) | func main() {
FILE: _test/issue-1311.go
type T (line 3) | type T struct
function f (line 7) | func f() (ret int64, err error) {
function main (line 12) | func main() {
FILE: _test/issue-1315.go
type Intf (line 3) | type Intf interface
type T (line 7) | type T struct
method M (line 11) | func (t *T) M() { println("in M") }
function f (line 13) | func f(i interface{}) {
function main (line 22) | func main() {
FILE: _test/issue-1320.go
type Pooler (line 3) | type Pooler interface
type baseClient (line 7) | type baseClient struct
type connPool (line 11) | type connPool struct
method Get (line 15) | func (c *connPool) Get() string { return c.name }
function newBaseClient (line 17) | func newBaseClient(i int, p Pooler) *baseClient {
function newConnPool (line 21) | func newConnPool() *connPool { return &connPool{name: "connPool"} }
function main (line 23) | func main() {
FILE: _test/issue-1326.go
type Option (line 3) | type Option interface
type T (line 7) | type T struct
type opt (line 11) | type opt struct
method apply (line 15) | func (o *opt) apply(t *T) {
function BuildOptions (line 19) | func BuildOptions() []Option {
function NewT (line 26) | func NewT(name string, options ...Option) *T {
function main (line 34) | func main() {
FILE: _test/issue-1328.go
function main (line 8) | func main() {
FILE: _test/issue-1330.go
type wrappedConn (line 9) | type wrappedConn struct
function main (line 13) | func main() {
FILE: _test/issue-1332.go
function run (line 3) | func run(fn func(name string)) { fn("test") }
type T2 (line 5) | type T2 struct
method f (line 9) | func (t *T2) f(s string) { println(s, t.name) }
function main (line 11) | func main() {
FILE: _test/issue-1333.go
function mock (line 10) | func mock(name string) http.HandlerFunc {
function client (line 16) | func client(uri string) {
function main (line 28) | func main() {
FILE: _test/issue-1337.go
function f (line 8) | func f(i interface{}) {
function main (line 18) | func main() {
FILE: _test/issue-1342.go
function main (line 5) | func main() {
FILE: _test/issue-1344.go
function main (line 5) | func main() {
FILE: _test/issue-1354.go
function main (line 3) | func main() {
function test (line 7) | func test() bool {
FILE: _test/issue-1355.go
function f (line 5) | func f(i interface{}) {
function main (line 10) | func main() {
FILE: _test/issue-1360.go
function main (line 8) | func main() {
FILE: _test/issue-1361.go
type obj (line 8) | type obj struct
type Fun (line 12) | type Fun
function numFun (line 14) | func numFun(fn func(f float64) float64) Fun {
function main (line 20) | func main() {
FILE: _test/issue-1364.go
function main (line 8) | func main() {
FILE: _test/issue-1365.go
function genInt (line 3) | func genInt() (int, error) { return 3, nil }
function getInt (line 5) | func getInt() (value int) {
function main (line 13) | func main() {
FILE: _test/issue-1368.go
constant dollar (line 3) | dollar byte = 36
function main (line 5) | func main() {
FILE: _test/issue-1371.go
type node (line 5) | type node struct
function main (line 11) | func main() {
FILE: _test/issue-1373.go
function NewBadExpr (line 8) | func NewBadExpr() ast.Expr {
function main (line 12) | func main() {
FILE: _test/issue-1375.go
type Option (line 5) | type Option
function WithOption (line 7) | func WithOption(opt string) Option {
type Struct (line 13) | type Struct struct
method ShowOption (line 25) | func (s *Struct) ShowOption() {
function New (line 17) | func New(opts ...Option) *Struct {
function main (line 29) | func main() {
FILE: _test/issue-1378.go
function main (line 8) | func main() {
FILE: _test/issue-1381.go
function main (line 8) | func main() {
FILE: _test/issue-1404.go
type I (line 3) | type I interface
type T (line 7) | type T struct
method inI (line 11) | func (t *T) inI() {}
function main (line 13) | func main() {
FILE: _test/issue-1408.go
function f (line 8) | func f(n Number2) { println(n) }
function main (line 10) | func main() {
FILE: _test/issue-1411.go
type Number (line 3) | type Number
method IsValid (line 5) | func (n Number) IsValid() bool { return true }
function main (line 11) | func main() {
FILE: _test/issue-1416.go
type Number (line 3) | type Number
method IsValid (line 9) | func (n Number2) IsValid() bool { return true }
function main (line 11) | func main() {
FILE: _test/issue-1421.go
function main (line 5) | func main() {
FILE: _test/issue-1425.go
type WrappedReader (line 10) | type WrappedReader struct
method Read (line 14) | func (wr WrappedReader) Read(p []byte) (n int, err error) {
method WriteTo (line 21) | func (wr WrappedReader) WriteTo(w io.Writer) (n int64, err error) {
function main (line 31) | func main() {
FILE: _test/issue-1439.go
type Transformer (line 3) | type Transformer interface
type Encoder (line 7) | type Encoder struct
type nop (line 11) | type nop struct
method Reset (line 13) | func (nop) Reset() { println("Reset") }
function f (line 15) | func f(e Transformer) {
function main (line 19) | func main() {
FILE: _test/issue-1442.go
function main (line 7) | func main() {
FILE: _test/issue-1447.go
type I (line 5) | type I interface
type S (line 9) | type S struct
function main (line 13) | func main() {
FILE: _test/issue-1451.go
type t1 (line 3) | type t1
constant n1 (line 6) | n1 t1 = iota
constant n2 (line 7) | n2
type T (line 10) | type T struct
function main (line 14) | func main() {
FILE: _test/issue-1454.go
type I2 (line 3) | type I2 interface
type I (line 7) | type I interface
type S (line 11) | type S struct
method I2 (line 13) | func (*S) I2() string { return "foo" }
function main (line 15) | func main() {
FILE: _test/issue-1459.go
type funclistItem (line 5) | type funclistItem
type funclist (line 7) | type funclist struct
function main (line 11) | func main() {
FILE: _test/issue-1460.go
function unmarshalJSON (line 11) | func unmarshalJSON[T any](b []byte, x *[]T) error {
function SliceOfViews (line 21) | func SliceOfViews[T ViewCloner[T, V], V StructView[T]](x []T) SliceView[...
type StructView (line 25) | type StructView interface
type SliceView (line 30) | type SliceView struct
type ViewCloner (line 34) | type ViewCloner interface
method MarshalJSON (line 39) | func (v SliceView[T, V]) MarshalJSON() ([]byte, error) { return json.Mar...
method UnmarshalJSON (line 41) | func (v *SliceView[T, V]) UnmarshalJSON(b []byte) error { return unmarsh...
type Slice (line 43) | type Slice struct
method MarshalJSON (line 47) | func (v Slice[T]) MarshalJSON() ([]byte, error) { return json.Marshal(v....
method UnmarshalJSON (line 49) | func (v *Slice[T]) UnmarshalJSON(b []byte) error { return unmarshalJSON(...
function SliceOf (line 51) | func SliceOf[T any](x []T) Slice[T] {
type IPPrefixSlice (line 55) | type IPPrefixSlice struct
type viewStruct (line 59) | type viewStruct struct
function main (line 65) | func main() {
FILE: _test/issue-1465.go
function SomeFunc (line 7) | func SomeFunc[T int | string](defaultValue T) T {
function main (line 17) | func main() {
FILE: _test/issue-1466.go
function SomeFunc (line 7) | func SomeFunc(defaultValue interface{}) interface{} {
function main (line 17) | func main() {
FILE: _test/issue-1470.go
type T (line 3) | type T struct
constant tnum (line 7) | tnum = 23
function main (line 9) | func main() {
FILE: _test/issue-1475.go
type T (line 3) | type T
function f (line 5) | func f() T { return 0 }
function main (line 7) | func main() {
FILE: _test/issue-1488.go
type vector (line 5) | type vector interface
function sum (line 9) | func sum[V vector](v V) (out int) {
function main (line 16) | func main() {
FILE: _test/issue-1496.go
function main (line 3) | func main() {
FILE: _test/issue-1515.go
type I1 (line 3) | type I1 interface
type I2 (line 8) | type I2 interface
type S2 (line 12) | type S2 struct
method Wrap (line 24) | func (s *S2) Wrap() *S3 {
function newS2 (line 16) | func newS2(i2 I2) I1 {
type S3 (line 20) | type S3 struct
type T (line 29) | type T struct
method F (line 33) | func (t *T) F() { println("in F", t.name) }
function main (line 35) | func main() {
FILE: _test/issue-1536.go
constant prefix (line 6) | prefix = "/usr/"
constant path (line 7) | path = prefix + "local/bin"
function main (line 10) | func main() {
FILE: _test/issue-1571.go
type A (line 3) | type A struct
type B (line 7) | type B struct
function main (line 11) | func main() {
FILE: _test/issue-1594.go
function main (line 3) | func main() {
FILE: _test/issue-1618.go
function humanizeBytes (line 9) | func humanizeBytes(bytes uint64) string {
function main (line 35) | func main() {
FILE: _test/issue-1640.go
function ShortVariableDeclarations (line 7) | func ShortVariableDeclarations() (i int, err error) {
function main (line 13) | func main() {
FILE: _test/issue-1653.go
function f (line 3) | func f(b uint) uint {
function main (line 7) | func main() {
FILE: _test/issue-435.go
type Foo (line 8) | type Foo
method String (line 10) | func (f Foo) String() string {
function print1 (line 14) | func print1(arg interface{}) {
function main (line 18) | func main() {
FILE: _test/issue-558.go
type readAutoCloser (line 10) | type readAutoCloser struct
method Read (line 14) | func (a readAutoCloser) Read(b []byte) (n int, err error) {
method Close (line 25) | func (a readAutoCloser) Close() error {
type pipe (line 32) | type pipe struct
function newReadAutoCloser (line 36) | func newReadAutoCloser(r io.Reader) readAutoCloser {
function main (line 43) | func main() {
FILE: _test/issue-735.go
function strToInt (line 12) | func strToInt(s string, defaultValue int) int {
function main (line 20) | func main() {
FILE: _test/issue-770.go
type I (line 5) | type I interface
type T (line 9) | type T struct
method Foo (line 13) | func (t T) Foo() int { return 0 }
function f (line 15) | func f(v reflect.Value) int {
function main (line 20) | func main() {
FILE: _test/issue-772.go
type Message (line 9) | type Message struct
function main (line 13) | func main() {
FILE: _test/issue-775.go
function main (line 8) | func main() {
FILE: _test/issue-776.go
type Filter (line 6) | type Filter interface
type GIFT (line 11) | type GIFT struct
method List (line 23) | func (g *GIFT) List() {
function New (line 16) | func New(filters ...Filter) *GIFT {
type MyFilter (line 28) | type MyFilter struct
method Foo (line 31) | func (f *MyFilter) Foo() {}
function main (line 33) | func main() {
FILE: _test/issue-782.go
function main (line 5) | func main() {
FILE: _test/issue-784.go
type Filter (line 6) | type Filter interface
type GIFT (line 11) | type GIFT struct
method Bounds (line 23) | func (g *GIFT) Bounds(srcBounds string) (dstBounds string) {
function New (line 16) | func New(filters ...Filter) *GIFT {
function main (line 31) | func main() {
FILE: _test/issue-880.go
function main (line 8) | func main() {
FILE: _test/issue-981.go
function main (line 5) | func main() {
FILE: _test/issue-993.go
function initVar (line 5) | func initVar() {
function main (line 9) | func main() {
FILE: _test/l2.go
function main (line 3) | func main() {
FILE: _test/l3.go
function main (line 5) | func main() {
FILE: _test/l4.go
function main (line 3) | func main() { println(f(5)) }
function f (line 4) | func f(i int) int { return i + 1 }
FILE: _test/l5.go
function main (line 5) | func main() {
FILE: _test/len0.go
function f (line 3) | func f(a []int) interface{} {
function main (line 7) | func main() {
FILE: _test/m1/main.go
function main (line 8) | func main() {
function TestWeird (line 12) | func TestWeird(t *testing.T) {
FILE: _test/m1/main_test.go
function TestMain (line 9) | func TestMain(t *testing.T) {
function BenchmarkMain (line 13) | func BenchmarkMain(b *testing.B) {
FILE: _test/m2/m2_test.go
function TestM2 (line 5) | func TestM2(t *testing.T) {
FILE: _test/make.go
function main (line 8) | func main() {
FILE: _test/make0.go
function f (line 3) | func f() interface{} {
function main (line 7) | func main() {
FILE: _test/make1.go
function f (line 5) | func f() interface{} {
function main (line 9) | func main() {
FILE: _test/make2.go
function main (line 5) | func main() {
FILE: _test/map.go
type Dict (line 3) | type Dict
function main (line 5) | func main() {
FILE: _test/map10.go
type Foo (line 8) | type Foo struct
function main (line 12) | func main() {
FILE: _test/map11.go
type Foo (line 8) | type Foo struct
function main (line 12) | func main() {
FILE: _test/map12.go
type Foo (line 8) | type Foo struct
function main (line 12) | func main() {
FILE: _test/map13.go
constant acceptEncoding (line 8) | acceptEncoding = "Accept-Encoding"
function main (line 10) | func main() {
FILE: _test/map14.go
function f (line 7) | func f(s string) bool { return m[s] > 0.0 }
function main (line 9) | func main() {
FILE: _test/map15.go
function main (line 5) | func main() {
FILE: _test/map16.go
function main (line 5) | func main() {
FILE: _test/map17.go
type T (line 5) | type T struct
method ServeHTTP (line 9) | func (b *T) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
function main (line 15) | func main() {
FILE: _test/map18.go
function main (line 7) | func main() {
FILE: _test/map19.go
type cmap (line 5) | type cmap struct
type server (line 9) | type server struct
function main (line 13) | func main() {
FILE: _test/map2.go
function main (line 3) | func main() {
FILE: _test/map20.go
function main (line 5) | func main() {
FILE: _test/map21.go
function main (line 7) | func main() {
FILE: _test/map22.go
function main (line 7) | func main() {
FILE: _test/map23.go
function main (line 7) | func main() {
FILE: _test/map24.go
function main (line 8) | func main() {
FILE: _test/map25.go
function main (line 8) | func main() {
FILE: _test/map26.go
function main (line 5) | func main() {
FILE: _test/map27.go
type fm (line 8) | type fm
type foo (line 10) | type foo struct
function main (line 12) | func main() {
FILE: _test/map28.go
function main (line 7) | func main() {
FILE: _test/map29.go
type Item (line 8) | type Item struct
function main (line 13) | func main() {
FILE: _test/map3.go
function main (line 3) | func main() {
FILE: _test/map30.go
function f (line 5) | func f(s string) string { return "hello " + s }
function g (line 7) | func g(s string) string { return "hi " + s }
function main (line 14) | func main() {
FILE: _test/map31.go
function main (line 3) | func main() {
FILE: _test/map4.go
function main (line 3) | func main() {
FILE: _test/map5.go
function main (line 5) | func main() {
FILE: _test/map6.go
function main (line 3) | func main() {
FILE: _test/map7.go
function main (line 3) | func main() {
FILE: _test/map8.go
function main (line 8) | func main() {
FILE: _test/map9.go
type Foo (line 8) | type Foo struct
function main (line 12) | func main() {
FILE: _test/math0.go
function main (line 8) | func main() {
FILE: _test/math1.go
function main (line 5) | func main() {
FILE: _test/math2.go
constant c (line 3) | c uint64 = 2
function main (line 5) | func main() {
FILE: _test/math3.go
function md5Crypt (line 8) | func md5Crypt(password, salt, magic []byte) []byte {
function main (line 25) | func main() {
FILE: _test/method.go
type Coord (line 3) | type Coord struct
method dist (line 7) | func (c Coord) dist() int { return c.x*c.x + c.y*c.y }
function main (line 9) | func main() {
FILE: _test/method0.go
type Foo (line 5) | type Foo struct
method Call (line 8) | func (Foo) Call() {
type Bar (line 12) | type Bar struct
type Baz (line 16) | type Baz struct
method Call (line 20) | func (Baz) Call() {
function main (line 24) | func main() {
FILE: _test/method1.go
type Sample (line 3) | type Sample struct
method foo (line 7) | func (s *Sample) foo(i int) {
function main (line 11) | func main() {
FILE: _test/method10.go
constant BlockSize (line 3) | BlockSize = 8
type Cipher (line 5) | type Cipher struct
method BlockSize (line 7) | func (c *Cipher) BlockSize() int { return BlockSize }
function main (line 9) | func main() {
FILE: _test/method11.go
function BlockSize (line 3) | func BlockSize() string { return "func" }
type Cipher (line 5) | type Cipher struct
method BlockSize (line 7) | func (c *Cipher) BlockSize() string { return "method" }
function main (line 9) | func main() {
FILE: _test/method12.go
type Coord (line 3) | type Coord struct
method dist (line 7) | func (c Coord) dist() int { return c.x*c.x + c.y*c.y }
function main (line 9) | func main() {
FILE: _test/method13.go
type Coord (line 3) | type Coord struct
method dist (line 7) | func (c Coord) dist() int { return c.x*c.x + c.y*c.y }
type Point (line 9) | type Point struct
function main (line 14) | func main() {
FILE: _test/method14.go
function main (line 3) | func main() {
type Coord (line 10) | type Coord struct
method dist (line 8) | func (c *Coord) dist() int { return c.x*c.x + c.y*c.y }
FILE: _test/method15.go
type Coord (line 3) | type Coord struct
method dist (line 7) | func (c Coord) dist() int { return c.x*c.x + c.y*c.y }
function main (line 9) | func main() {
FILE: _test/method16.go
type Cheese (line 7) | type Cheese struct
method Hello (line 11) | func (t *Cheese) Hello(param string) {
function main (line 15) | func main() {
FILE: _test/method17.go
type MyTime (line 8) | type MyTime struct
method Foo (line 13) | func (m MyTime) Foo() {
method Bar (line 18) | func (m *MyTime) Bar() {
function main (line 23) | func main() {
FILE: _test/method18.go
type GzipResponseWriter (line 9) | type GzipResponseWriter struct
type GzipResponseWriterWithCloseNotify (line 15) | type GzipResponseWriterWithCloseNotify struct
method CloseNotify (line 19) | func (w GzipResponseWriterWithCloseNotify) CloseNotify() <-chan bool {
function main (line 23) | func main() {
FILE: _test/method19.go
function f (line 5) | func f() (string, error) {
function main (line 10) | func main() {
FILE: _test/method2.go
type Coord (line 3) | type Coord struct
method dist (line 7) | func (c Coord) dist() int { return c.x*c.x + c.y*c.y }
type Point (line 9) | type Point struct
function main (line 14) | func main() {
FILE: _test/method20.go
type Hello (line 8) | type Hello struct
method Hi (line 12) | func (h *Hello) Hi() string {
function main (line 18) | func main() {
FILE: _test/method21.go
type Hello (line 7) | type Hello struct
method Hi (line 9) | func (*Hello) Hi() string {
function main (line 13) | func main() {
FILE: _test/method22.go
function Bar (line 3) | func Bar() {
type T (line 10) | type T struct
method Foo (line 12) | func (t *T) Foo() bool { return t != nil }
function main (line 14) | func main() {
FILE: _test/method23.go
function Bar (line 3) | func Bar() {
function NewT (line 10) | func NewT() *T { return &T{} }
type T (line 12) | type T struct
method Foo (line 14) | func (t *T) Foo() bool { return t != nil }
function main (line 16) | func main() {
FILE: _test/method24.go
type Pool (line 8) | type Pool struct
method Get (line 12) | func (p Pool) Get() *Buffer { return &Buffer{} }
function NewPool (line 14) | func NewPool() Pool { return Pool{} }
type Buffer (line 16) | type Buffer struct
function main (line 26) | func main() {
FILE: _test/method25.go
function NewPool (line 10) | func NewPool() Pool { return Pool{} }
type Buffer (line 12) | type Buffer struct
type Pool (line 17) | type Pool struct
method Get (line 8) | func (p Pool) Get() *Buffer { return &Buffer{} }
function main (line 26) | func main() {
FILE: _test/method26.go
function NewT (line 3) | func NewT(name string) *T { return &T{name} }
type T (line 9) | type T struct
method f (line 7) | func (t *T) f() { println(t == C) }
function main (line 13) | func main() {
FILE: _test/method27.go
type AuthenticatedRequest (line 8) | type AuthenticatedRequest struct
function main (line 13) | func main() {
FILE: _test/method28.go
type T (line 5) | type T struct
method create (line 9) | func (T) create() *T {
function main (line 13) | func main() {
FILE: _test/method29.go
function main (line 10) | func main() {
FILE: _test/method3.go
type Coord (line 3) | type Coord struct
method dist (line 7) | func (c Coord) dist() int { return c.x*c.x + c.y*c.y }
type Point (line 9) | type Point struct
function main (line 14) | func main() {
FILE: _test/method30.go
type T (line 3) | type T struct
method foo (line 7) | func (t *T) foo(a string) string {
function main (line 15) | func main() {
FILE: _test/method31.go
type dbWrapper (line 7) | type dbWrapper struct
method get (line 11) | func (d *dbWrapper) get() *cmap {
type cmap (line 15) | type cmap struct
method f (line 19) | func (c *cmap) f() {
function main (line 23) | func main() {
FILE: _test/method32.go
function main (line 7) | func main() {
function bar (line 13) | func bar(a string) {
FILE: _test/method33.go
type T1 (line 7) | type T1 struct
method f (line 9) | func (t1 T1) f() {
method g (line 13) | func (t1 T1) g() {
type T2 (line 17) | type T2 struct
method f (line 21) | func (t2 T2) f() {
type I (line 25) | type I interface
function printType (line 29) | func printType(i I) {
function main (line 43) | func main() {
FILE: _test/method34.go
type Root (line 3) | type Root struct
method Hello (line 19) | func (r *Root) Hello() string { return "Hello " + r.Name }
type One (line 7) | type One struct
type Hi (line 11) | type Hi interface
type Hey (line 15) | type Hey interface
function main (line 21) | func main() {
FILE: _test/method35.go
function main (line 5) | func main() {
FILE: _test/method36.go
type I (line 3) | type I interface
type T (line 5) | type T struct
method Hello (line 7) | func (t *T) Hello() { println("Hello", t.Name) }
type FT (line 9) | type FT
type ST (line 11) | type ST struct
function newF (line 13) | func newF() FT {
function main (line 19) | func main() {
FILE: _test/method37.go
function writeBufs (line 8) | func writeBufs(bufs ...[]byte) error {
function main (line 14) | func main() {
FILE: _test/method38.go
function main (line 9) | func main() {
FILE: _test/method38/a.go
function NewPool (line 5) | func NewPool() Pool { return Pool{} }
type Buffer (line 7) | type Buffer struct
type Pool (line 12) | type Pool struct
FILE: _test/method38/b.go
method Get (line 3) | func (p Pool) Get() *Buffer { return &Buffer{} }
FILE: _test/method39.go
function NewPool (line 10) | func NewPool() Pool { return Pool{} }
type Buffer (line 12) | type Buffer struct
type Pool (line 17) | type Pool struct
function main (line 27) | func main() {
FILE: _test/method4.go
type Coord (line 3) | type Coord struct
method dist (line 7) | func (c Coord) dist() int { return c.x*c.x + c.y*c.y }
type Point (line 9) | type Point struct
type Tpoint (line 14) | type Tpoint struct
function main (line 19) | func main() {
FILE: _test/method40.go
type TMemoryBuffer (line 8) | type TMemoryBuffer struct
function newTMemoryBuffer (line 13) | func newTMemoryBuffer() *TMemoryBuffer {
type TTransport (line 19) | type TTransport interface
function check (line 23) | func check(t TTransport) {
function main (line 27) | func main() {
FILE: _test/method5.go
type Foo (line 5) | type Foo struct
method Show (line 8) | func (Foo) Show() {
method Call (line 12) | func (f Foo) Call() {
type Bar (line 17) | type Bar struct
type Baz (line 21) | type Baz struct
method Call (line 25) | func (Baz) Call() {
method Show (line 29) | func (Baz) Show() {
function main (line 33) | func main() {
FILE: _test/method6.go
type Sample (line 3) | type Sample struct
method foo (line 7) | func (s Sample) foo(i int) {
function main (line 15) | func main() {
FILE: _test/method7.go
type Sample (line 3) | type Sample struct
method foo (line 7) | func (s *Sample) foo(i int) {
function main (line 15) | func main() {
FILE: _test/method8.go
type Sample (line 3) | type Sample struct
method foo (line 8) | func (s *Sample) foo(j int) {
function main (line 18) | func main() {
FILE: _test/method9.go
type Coord (line 3) | type Coord struct
method dist (line 12) | func (c Coord) dist() int { return c.x*c.x + c.y*c.y }
function main (line 7) | func main() {
FILE: _test/named0.go
type Root (line 5) | type Root struct
method Hello (line 9) | func (r *Root) Hello() {
function main (line 15) | func main() {
function displayOne (line 25) | func displayOne(val *One) {
function displayRoot (line 29) | func displayRoot(val *Root) {
FILE: _test/named1.go
type MyT (line 5) | type MyT
type T (line 7) | type T struct
function main (line 11) | func main() {
FILE: _test/named2.go
type MyT (line 9) | type MyT
method Test (line 5) | func (t MyT) Test() string {
function main (line 11) | func main() {
FILE: _test/named3.go
function init (line 7) | func init() {
type T (line 11) | type T
method PrintT (line 13) | func (t *T) PrintT() {
function main (line 17) | func main() {
FILE: _test/named3/named3.go
type T (line 8) | type T struct
method Print (line 12) | func (t *T) Print() {
type A (line 16) | type A
method ForeachKey (line 18) | func (a A) ForeachKey() error {
method Set (line 29) | func (a A) Set(k string, v []string) {
FILE: _test/named4.go
type A (line 8) | type A
method Test1 (line 10) | func (a A) Test1() {
type B (line 14) | type B
method Test2 (line 16) | func (b B) Test2() {
method Test3 (line 20) | func (b B) Test3() {
function main (line 28) | func main() {
FILE: _test/neg0.go
function main (line 5) | func main() {
FILE: _test/new0.go
function main (line 3) | func main() {
FILE: _test/new1.go
function main (line 5) | func main() {
FILE: _test/new2.go
function f (line 3) | func f() interface{} {
function main (line 7) | func main() {
FILE: _test/nil0.go
function f (line 5) | func f() (host, port string, err error) {
function main (line 9) | func main() {
FILE: _test/nil1.go
function main (line 3) | func main() {
FILE: _test/nil2.go
function test (line 3) | func test() error { return nil }
function main (line 5) | func main() {
FILE: _test/nil3.go
type I (line 3) | type I interface
type T (line 7) | type T struct
method Hello (line 11) | func (t *T) Hello() { println("Hello") }
function main (line 13) | func main() {
FILE: _test/not0.go
function main (line 3) | func main() {
FILE: _test/not1.go
function main (line 3) | func main() {
FILE: _test/not2.go
function main (line 3) | func main() {
FILE: _test/num0.go
function main (line 5) | func main() {
FILE: _test/op0.go
function main (line 5) | func main() {
FILE: _test/op1.go
function main (line 3) | func main() {
FILE: _test/op10.go
function main (line 3) | func main() {
FILE: _test/op11.go
function main (line 3) | func main() {
FILE: _test/op2.go
function main (line 5) | func main() {
FILE: _test/op3.go
function main (line 5) | func main() {
FILE: _test/op4.go
function main (line 3) | func main() {
FILE: _test/op5.go
function main (line 5) | func main() {
FILE: _test/op6.go
type T (line 3) | type T
method Error (line 5) | func (t T) Error() string { return "T: error" }
function main (line 9) | func main() {
FILE: _test/op7.go
type T (line 3) | type T
method Error (line 5) | func (t T) Error() string { return "T: error" }
function main (line 9) | func main() {
FILE: _test/op8.go
type I (line 3) | type I interface
type T (line 7) | type T struct
method Get (line 9) | func (T) Get() interface{} {
function main (line 13) | func main() {
FILE: _test/op9.go
function main (line 3) | func main() {
FILE: _test/opfloat32.go
function main (line 5) | func main() {
FILE: _test/opfloat64.go
function main (line 5) | func main() {
FILE: _test/opint16.go
function main (line 5) | func main() {
FILE: _test/opint32.go
function main (line 5) | func main() {
FILE: _test/opint64.go
function main (line 5) | func main() {
FILE: _test/opint8.go
function main (line 5) | func main() {
FILE: _test/opstring.go
function main (line 5) | func main() {
FILE: _test/opuint16.go
function main (line 5) | func main() {
FILE: _test/opuint32.go
function main (line 5) | func main() {
FILE: _test/opuint64.go
function main (line 5) | func main() {
FILE: _test/opuint8.go
function main (line 5) | func main() {
FILE: _test/or0.go
function main (line 3) | func main() {
FILE: _test/or1.go
function main (line 3) | func main() {
FILE: _test/or2.go
function main (line 5) | func main() {
FILE: _test/os0.go
function main (line 8) | func main() {
FILE: _test/p1/s2.go
function init (line 7) | func init() { rand.Seed(1) }
FILE: _test/p2/p2.go
type I (line 3) | type I interface
type T (line 7) | type T struct
method isI (line 9) | func (t *T) isI() {}
FILE: _test/p5.go
function main (line 5) | func main() {
FILE: _test/p6.go
function main (line 9) | func main() {
FILE: _test/p6/p6.go
type Slice (line 8) | type Slice struct
type IPPrefixSlice (line 12) | type IPPrefixSlice struct
method MarshalJSON (line 19) | func (v IPPrefixSlice) MarshalJSON() ([]byte, error) {
method MarshalJSON (line 16) | func (v Slice[T]) MarshalJSON() ([]byte, error) { return json.Marshal(v....
FILE: _test/panic0.go
function main (line 3) | func main() {
function foo (line 7) | func foo() {
function bar (line 11) | func bar() {
function baz (line 15) | func baz() {
FILE: _test/pkgname0.go
function main (line 8) | func main() {
FILE: _test/pkgname1.go
function main (line 7) | func main() {
FILE: _test/pkgname2.go
function main (line 7) | func main() {
FILE: _test/primes.go
function Primes (line 3) | func Primes(n int) int {
function main (line 21) | func main() {
FILE: _test/print0.go
function main (line 3) | func main() {
FILE: _test/ptr0.go
type myint (line 3) | type myint
function main (line 5) | func main() {
FILE: _test/ptr1.go
function main (line 3) | func main() {
FILE: _test/ptr2.go
function f (line 3) | func f(i *int) {
function main (line 7) | func main() {
FILE: _test/ptr3.go
function f (line 3) | func f(i *int) {
function main (line 7) | func main() {
FILE: _test/ptr4.go
type Foo (line 3) | type Foo struct
function f (line 7) | func f(p *Foo) {
function main (line 11) | func main() {
FILE: _test/ptr5.go
type Foo (line 3) | type Foo struct
function main (line 7) | func main() {
FILE: _test/ptr5a.go
type Foo (line 3) | type Foo struct
function main (line 7) | func main() {
FILE: _test/ptr6.go
type Foo (line 3) | type Foo struct
function main (line 7) | func main() {
FILE: _test/ptr7.go
type ipNetValue (line 9) | type ipNetValue
method Set (line 11) | func (ipnet *ipNetValue) Set(value string) error {
function main (line 20) | func main() {
FILE: _test/ptr8.go
function main (line 5) | func main() {
FILE: _test/ptr_array0.go
type T (line 3) | type T
function F0 (line 5) | func F0(t *T) int { return t[0] }
function main (line 7) | func main() {
FILE: _test/ptr_array1.go
type T (line 3) | type T
function F0 (line 5) | func F0(t *T) {
function main (line 11) | func main() {
FILE: _test/ptr_array2.go
type T (line 5) | type T
function F1 (line 7) | func F1(t *T) { t[0] = 1 }
function main (line 9) | func main() {
FILE: _test/ptr_array3.go
function main (line 5) | func main() {
FILE: _test/range0.go
function main (line 5) | func main() {
FILE: _test/range1.go
function main (line 5) | func main() {
FILE: _test/range2.go
function main (line 5) | func main() {
FILE: _test/range3.go
function main (line 5) | func main() {
FILE: _test/range4.go
function main (line 5) | func main() {
FILE: _test/range5.go
function main (line 5) | func main() {
FILE: _test/range6.go
function main (line 8) | func main() {
FILE: _test/range7.go
function someChan (line 7) | func someChan() <-chan struct{} {
function main (line 13) | func main() {
FILE: _test/range8.go
function main (line 8) | func main() {
FILE: _test/range9.go
function main (line 3) | func main() {
FILE: _test/real0.go
function f (line 5) | func f(c complex128) interface{} { return real(c) }
function main (line 7) | func main() {
FILE: _test/recover0.go
function main (line 5) | func main() {
FILE: _test/recover1.go
function main (line 5) | func main() {
FILE: _test/recover2.go
function main (line 3) | func main() {
FILE: _test/recover3.go
function main (line 5) | func main() {
FILE: _test/recover4.go
function div (line 5) | func div(a, b int) (result int) {
function main (line 19) | func main() {
FILE: _test/recurse0.go
type T (line 5) | type T struct
type U (line 18) | type U struct
function main (line 30) | func main() {
FILE: _test/recurse1.go
type F (line 3) | type F
type A (line 5) | type A struct
function main (line 10) | func main() {
FILE: _test/recurse2.go
type F (line 3) | type F
type A (line 5) | type A struct
type D (line 11) | type D struct
function f1 (line 16) | func f1(a *A) { println("in f1", a.B) }
function main (line 18) | func main() {
FILE: _test/recurse3.go
type F (line 3) | type F
type A (line 5) | type A struct
type D (line 10) | type D struct
function f1 (line 16) | func f1(a *A) { println("in f1", a.B) }
function main (line 18) | func main() {
FILE: _test/redeclaration-global0.go
type time (line 3) | type time
function main (line 7) | func main() {
FILE: _test/redeclaration-global1.go
type time (line 5) | type time
function main (line 7) | func main() {
FILE: _test/redeclaration-global2.go
function main (line 8) | func main() {
FILE: _test/redeclaration-global3.go
function main (line 9) | func main() {
FILE: _test/redeclaration-global4.go
type time (line 7) | type time
function main (line 9) | func main() {
FILE: _test/redeclaration-global5.go
function time (line 5) | func time() string {
function main (line 9) | func main() {
FILE: _test/redeclaration-global6.go
function time (line 7) | func time() string {
function main (line 11) | func main() {
FILE: _test/redeclaration-global7.go
function main (line 8) | func main() {
FILE: _test/redeclaration0.go
function main (line 3) | func main() {
FILE: _test/redeclaration1.go
function main (line 3) | func main() {
FILE: _test/redeclaration2.go
function main (line 3) | func main() {
FILE: _test/redeclaration3.go
function main (line 3) | func main() {
FILE: _test/redeclaration4.go
function main (line 3) | func main() {
FILE: _test/redeclaration5.go
function main (line 3) | func main() {
FILE: _test/restricted0.go
function main (line 8) | func main() {
FILE: _test/restricted1.go
function main (line 8) | func main() {
FILE: _test/restricted2.go
function main (line 8) | func main() {
FILE: _test/restricted3.go
function main (line 14) | func main() {
FILE: _test/ret1.go
function f (line 3) | func f(i int) (o int) { o = i + 1; return }
function main (line 5) | func main() { println(f(4)) }
FILE: _test/ret2.go
function r2 (line 3) | func r2() (int, int) { return 1, 2 }
function main (line 5) | func main() {
FILE: _test/ret3.go
function r2 (line 5) | func r2() (int, int) { return 1, 2 }
function main (line 7) | func main() {
FILE: _test/ret4.go
function r (line 3) | func r() int { return 1 }
function main (line 5) | func main() {
FILE: _test/ret5.go
function r2 (line 3) | func r2() (int, int) { return 1, 2 }
function main (line 7) | func main() { println(a, b) }
FILE: _test/ret6.go
type Foo (line 5) | type Foo struct
function foo (line 7) | func foo() *Foo { return nil }
function main (line 9) | func main() {
FILE: _test/ret7.go
function one (line 3) | func one() uint {
function main (line 6) | func main() {
FILE: _test/ret8.go
type CustomError (line 5) | type CustomError
method Error (line 7) | func (s CustomError) Error() string {
function NewCustomError (line 11) | func NewCustomError(errorText string) CustomError {
function fail (line 15) | func fail() (err error) {
function main (line 19) | func main() {
FILE: _test/run0.go
function f (line 5) | func f() (int, int) { return 2, 3 }
function main (line 7) | func main() {
FILE: _test/run1.go
function f (line 3) | func f() (int, int) { return 2, 3 }
function g (line 5) | func g(i, j int) int { return i + j }
function main (line 7) | func main() {
FILE: _test/run10.go
function main (line 3) | func main() {
FILE: _test/run11.go
function main (line 5) | func main() {
function f (line 9) | func f() (int, int) { return 2, 3 }
FILE: _test/run12.go
function f (line 3) | func f(a int) (int, int) {
function main (line 7) | func main() {
FILE: _test/run13.go
function main (line 3) | func main() {
function f (line 8) | func f(a int) (int, int) {
FILE: _test/run4.go
type fn (line 3) | type fn
function f1 (line 5) | func f1(i int) { println("f1", i) }
function test (line 7) | func test(f fn, v int) { f(v) }
function main (line 9) | func main() { test(f1, 21) }
FILE: _test/run5.go
type fn (line 3) | type fn
function test (line 5) | func test(f fn, v int) { f(v) }
function main (line 7) | func main() {
FILE: _test/run6.go
type fn (line 3) | type fn
function test (line 5) | func test(f fn, v int) { f(v) }
function main (line 7) | func main() {
FILE: _test/run7.go
type fn (line 3) | type fn
function test (line 5) | func test(f fn, v int) { f(v) }
function main (line 7) | func main() {
FILE: _test/run8.go
function main (line 3) | func main() {
FILE: _test/run9.go
function main (line 3) | func main() {
FILE: _test/rune0.go
function main (line 5) | func main() {
FILE: _test/rune1.go
function main (line 5) | func main() {
FILE: _test/rune2.go
constant majorVersion (line 5) | majorVersion = '2'
type hashed (line 7) | type hashed struct
function main (line 11) | func main() {
FILE: _test/scope0.go
function main (line 5) | func main() {
FILE: _test/scope1.go
function f (line 3) | func f(a int) int {
function main (line 9) | func main() {
FILE: _test/scope2.go
function f (line 5) | func f() { println(a) }
function main (line 7) | func main() {
FILE: _test/scope3.go
function main (line 3) | func main() {
FILE: _test/scope4.go
function main (line 3) | func main() {
FILE: _test/scope5.go
function f (line 5) | func f() { println(a) }
function main (line 7) | func main() {
FILE: _test/scope6.go
function f (line 7) | func f() { fmt.Println(a) }
function main (line 9) | func main() {
FILE: _test/scope7.go
function f (line 7) | func f() { fmt.Println(a) }
function main (line 9) | func main() {
FILE: _test/select.go
function main (line 6) | func main() {
FILE: _test/select0.go
function forever (line 5) | func forever() {
function main (line 10) | func main() {
FILE: _test/select1.go
function main (line 8) | func main() {
FILE: _test/select10.go
function main (line 3) | func main() {
FILE: _test/select11.go
function main (line 3) | func main() {
FILE: _test/select12.go
type S (line 3) | type S struct
method Send (line 7) | func (s *S) Send() {
function main (line 15) | func main() {
FILE: _test/select13.go
function main (line 3) | func main() {
FILE: _test/select14.go
constant period (line 9) | period = 300 * time.Millisecond
constant precision (line 10) | precision = 30 * time.Millisecond
function main (line 13) | func main() {
FILE: _test/select15.go
type T (line 3) | type T struct
function main (line 8) | func main() {
FILE: _test/select2.go
function main (line 7) | func main() {
FILE: _test/select3.go
function main (line 3) | func main() {
FILE: _test/select4.go
function main (line 3) | func main() {
FILE: _test/select5.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/select6.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/select7.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/select8.go
type T (line 3) | type T struct
function main (line 8) | func main() {
FILE: _test/select9.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/selector-scope0.go
function test (line 8) | func test(time string, t time.Time) string {
function test2 (line 14) | func test2(time string) time.Time {
function main (line 18) | func main() {
FILE: _test/server.go
function main (line 10) | func main() {
FILE: _test/server0.go
function myHandler (line 10) | func myHandler(w http.ResponseWriter, r *http.Request) {
function main (line 14) | func main() {
FILE: _test/server1.go
type Middleware (line 10) | type Middleware struct
method Handler (line 14) | func (m *Middleware) Handler(w http.ResponseWriter, r *http.Request) {
function main (line 18) | func main() {
FILE: _test/server1a.go
type Middleware (line 11) | type Middleware struct
method Handler (line 15) | func (m *Middleware) Handler(w http.ResponseWriter, r *http.Request) {
function main (line 22) | func main() {
FILE: _test/server2.go
function main (line 10) | func main() {
FILE: _test/server3.go
function main (line 9) | func main() {
FILE: _test/server4.go
function main (line 7) | func main() {
FILE: _test/server5.go
function main (line 11) | func main() {
FILE: _test/server6.go
type T1 (line 12) | type T1 struct
method Handler (line 16) | func (t *T1) Handler(h http.Handler) http.Handler {
function main (line 24) | func main() {
FILE: _test/server7.go
function main (line 7) | func main() {
FILE: _test/shift0.go
function main (line 3) | func main() {
FILE: _test/shift1.go
constant a1 (line 5) | a1 = 0x7f8 >> 3
function main (line 7) | func main() {
FILE: _test/shift2.go
function main (line 3) | func main() {
FILE: _test/shift3.go
constant a (line 3) | a = 1.0
constant b (line 5) | b = a + 3
function main (line 7) | func main() { println(b << (1)) }
FILE: _test/sieve.go
function Generate (line 6) | func Generate(ch chan<- int) {
function Filter (line 14) | func Filter(in <-chan int, out chan<- int, prime int) {
function main (line 24) | func main() {
FILE: _test/slice.go
function main (line 5) | func main() {
FILE: _test/str.go
function main (line 3) | func main() {
FILE: _test/str0.go
constant itoa64 (line 5) | itoa64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
function main (line 7) | func main() {
FILE: _test/str1.go
constant itoa64 (line 3) | itoa64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
function main (line 5) | func main() {
FILE: _test/str2.go
constant itoa64 (line 3) | itoa64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
function main (line 5) | func main() {
FILE: _test/str3.go
function main (line 5) | func main() {
FILE: _test/str4.go
function main (line 5) | func main() {
FILE: _test/struct.go
type T (line 3) | type T struct
function main (line 8) | func main() {
FILE: _test/struct0.go
type T (line 3) | type T struct
function main (line 8) | func main() {
FILE: _test/struct0a.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/struct1.go
type T (line 3) | type T struct
function main (line 10) | func main() {
FILE: _test/struct10.go
type T (line 3) | type T struct
function main (line 8) | func main() {
FILE: _test/struct11.go
type Fromage (line 8) | type Fromage struct
function main (line 12) | func main() {
FILE: _test/struct12.go
type S1 (line 5) | type S1 struct
type S2 (line 9) | type S2 struct
function main (line 13) | func main() {
FILE: _test/struct13.go
type Fromage (line 8) | type Fromage struct
function main (line 12) | func main() {
FILE: _test/struct14.go
type Fromage (line 8) | type Fromage struct
function main (line 12) | func main() {
FILE: _test/struct15.go
type GzipResponseWriter (line 8) | type GzipResponseWriter struct
type GzipResponseWriterWithCloseNotify (line 13) | type GzipResponseWriterWithCloseNotify struct
method CloseNotify (line 17) | func (w GzipResponseWriterWithCloseNotify) CloseNotify() <-chan bool {
function main (line 21) | func main() {
FILE: _test/struct16.go
type S1 (line 3) | type S1 struct
type S2 (line 7) | type S2 struct
function main (line 11) | func main() {
FILE: _test/struct17.go
type S1 (line 3) | type S1 struct
type S2 (line 7) | type S2 struct
function main (line 11) | func main() {
FILE: _test/struct18.go
type AuthenticatedRequest (line 8) | type AuthenticatedRequest struct
function main (line 13) | func main() {
FILE: _test/struct19.go
type Config (line 5) | type Config struct
type Users (line 14) | type Users
function CreateConfig (line 16) | func CreateConfig() *Config {
function main (line 20) | func main() {
FILE: _test/struct2.go
type T (line 3) | type T struct
function main (line 8) | func main() {
FILE: _test/struct20.go
type SecretProvider (line 3) | type SecretProvider
type BasicAuth (line 5) | type BasicAuth struct
method CheckAuth (line 10) | func (a *BasicAuth) CheckAuth() string { return a.Secrets("me", a.Real...
function secretBasic (line 12) | func secretBasic(user, realm string) string { return user + "-" + realm }
function main (line 14) | func main() {
FILE: _test/struct21.go
type SecretProvider (line 3) | type SecretProvider
type BasicAuth (line 5) | type BasicAuth struct
method CheckAuth (line 10) | func (a *BasicAuth) CheckAuth() string { return a.Secrets("me", a.Real...
method secretBasic (line 12) | func (a *BasicAuth) secretBasic(user, realm string) string { return a....
function main (line 14) | func main() {
FILE: _test/struct22.go
type S (line 3) | type S struct
function main (line 8) | func main() {
FILE: _test/struct23.go
type S (line 8) | type S struct
function main (line 13) | func main() {
FILE: _test/struct24.go
type T (line 5) | type T struct
function main (line 7) | func main() {
FILE: _test/struct25.go
type T (line 7) | type T struct
function main (line 9) | func main() {
FILE: _test/struct26.go
function newT2 (line 5) | func newT2() *T2 { return &T2{} }
type T2 (line 7) | type T2 struct
type T1 (line 11) | type T1 struct
function main (line 15) | func main() {
FILE: _test/struct27.go
type Foo (line 7) | type Foo struct
method Boo (line 5) | func (f *Foo) Boo() { fmt.Println(f.name, "Boo") }
function main (line 12) | func main() {
FILE: _test/struct28.go
type T1 (line 5) | type T1 struct
type T2 (line 9) | type T2 struct
function main (line 13) | func main() {
FILE: _test/struct29.go
type T1 (line 3) | type T1 struct
type T2 (line 8) | type T2 struct
function main (line 14) | func main() {
FILE: _test/struct3.go
type T (line 3) | type T struct
function f (line 11) | func f(i int) int { return i + 3 }
function main (line 13) | func main() {
FILE: _test/struct30.go
type T1 (line 3) | type T1 struct
type T2 (line 8) | type T2 struct
function main (line 14) | func main() {
FILE: _test/struct31.go
type T (line 3) | type T struct
function main (line 9) | func main() {
FILE: _test/struct32.go
type T0 (line 3) | type T0 struct
method F1 (line 14) | func (t T0) F1() bool { println("in F1"); return true }
type lookupFunc (line 7) | type lookupFunc
type T1 (line 9) | type T1 struct
type T2 (line 16) | type T2 struct
method f (line 20) | func (t2 *T2) f() {
function main (line 27) | func main() {
FILE: _test/struct33.go
type T0 (line 3) | type T0 struct
method F1 (line 14) | func (t T0) F1() bool { println("in F1"); return true }
type lookupFunc (line 7) | type lookupFunc
type T1 (line 9) | type T1 struct
function look (line 18) | func look(s string) T0 { println("in look"); return t0 }
function main (line 26) | func main() {
FILE: _test/struct34.go
type T (line 3) | type T struct
function f1 (line 7) | func f1(t *T) { t.f = f2 }
function f2 (line 9) | func f2(t *T) { t.f = f1 }
function main (line 11) | func main() {
FILE: _test/struct35.go
type T (line 3) | type T struct
function f1 (line 7) | func f1(t *T) { t.f = f1 }
function main (line 9) | func main() {
FILE: _test/struct36.go
type S (line 8) | type S struct
function main (line 12) | func main() {
FILE: _test/struct37.go
type MyHttpClient (line 8) | type MyHttpClient struct
function main (line 12) | func main() {
FILE: _test/struct38.go
type T (line 3) | type T struct
type T1 (line 8) | type T1 struct
type xxx (line 12) | type xxx struct
function main (line 19) | func main() {
FILE: _test/struct39.go
type T (line 3) | type T struct
type T1 (line 8) | type T1 struct
type xxx (line 15) | type xxx struct
function main (line 17) | func main() {
FILE: _test/struct4.go
type T3 (line 3) | type T3 struct
type T2 (line 7) | type T2 struct
type T (line 12) | type T struct
function f (line 18) | func f(i int) int { return i * i }
function main (line 20) | func main() {
FILE: _test/struct40.go
type T (line 3) | type T struct
type T1 (line 8) | type T1 struct
function f (line 12) | func f(t *T) { println("in f") }
type xxx (line 16) | type xxx struct
function main (line 18) | func main() {
FILE: _test/struct41.go
type Ti (line 3) | type Ti
type T1 (line 5) | type T1 struct
type T (line 9) | type T struct
function f (line 14) | func f(t *T) { println("in f") }
type xxx (line 16) | type xxx struct
function main (line 20) | func main() {
FILE: _test/struct42.go
type T (line 3) | type T struct
function f (line 8) | func f(t *T) { println("in f") }
type xxx (line 12) | type xxx struct
function main (line 14) | func main() {
FILE: _test/struct43.go
type T (line 3) | type T struct
function f (line 8) | func f(t *T) { println("in f") }
type xxx (line 10) | type xxx struct
function main (line 12) | func main() {
FILE: _test/struct44.go
type Ti (line 3) | type Ti
type T1 (line 5) | type T1 struct
type T (line 9) | type T struct
function f (line 14) | func f(t *T) X { println("in f"); return X{} }
type X (line 16) | type X struct
type xxx (line 18) | type xxx struct
function main (line 22) | func main() {
FILE: _test/struct45.go
type T (line 3) | type T struct
type T1 (line 7) | type T1 struct
function main (line 11) | func main() {
FILE: _test/struct46.go
type A (line 5) | type A struct
type D (line 10) | type D struct
function main (line 15) | func main() {
FILE: _test/struct47.go
type A (line 5) | type A struct
method Test (line 10) | func (a *A) Test() string {
type D (line 14) | type D struct
function main (line 18) | func main() {
FILE: _test/struct48.go
type List (line 3) | type List struct
function add (line 8) | func add(l *List, n int) *List {
function pr (line 16) | func pr(l *List) {
function main (line 25) | func main() {
FILE: _test/struct49.go
type S (line 3) | type S struct
method getT (line 11) | func (c *S) getT(addr string) (t *T, ok bool) {
type T (line 7) | type T struct
function main (line 22) | func main() {
FILE: _test/struct5.go
type T (line 3) | type T struct
function f (line 8) | func f(i int) int { return i * i }
function main (line 10) | func main() {
FILE: _test/struct50.go
type Node (line 5) | type Node struct
function main (line 10) | func main() {
FILE: _test/struct51.go
type Node (line 8) | type Node struct
function main (line 13) | func main() {
FILE: _test/struct52.go
type Node (line 5) | type Node struct
function main (line 10) | func main() {
FILE: _test/struct53.go
type T1 (line 5) | type T1 struct
type T2 (line 9) | type T2 struct
type T (line 13) | type T struct
function main (line 18) | func main() {
FILE: _test/struct54.go
type S (line 3) | type S struct
function newS (line 7) | func newS() *S {
type T (line 13) | type T struct
type U (line 17) | type U struct
function main (line 21) | func main() {
FILE: _test/struct55.go
type Logger (line 8) | type Logger struct
method Infof (line 12) | func (l *Logger) Infof(format string, args ...interface{}) {
function main (line 16) | func main() {
FILE: _test/struct56.go
type A (line 8) | type A struct
type InnerA (line 12) | type InnerA struct
function main (line 16) | func main() {
FILE: _test/struct57.go
type A (line 8) | type A struct
type InnerA (line 12) | type InnerA struct
function main (line 16) | func main() {
FILE: _test/struct58.go
type A (line 8) | type A struct
function main (line 12) | func main() {
FILE: _test/struct59.go
type A (line 7) | type A struct
type C (line 12) | type C struct
type D (line 17) | type D struct
type E (line 22) | type E struct
type B (line 27) | type B struct
type F (line 28) | type F struct
type G (line 29) | type G struct
type H (line 30) | type H struct
function main (line 32) | func main() {
FILE: _test/struct6.go
type T (line 3) | type T struct
function main (line 7) | func main() {
FILE: _test/struct60.go
type data (line 7) | type data struct
function render (line 11) | func render(v interface{}) {
function main (line 15) | func main() {
FILE: _test/struct61.go
type A (line 5) | type A struct
type D (line 10) | type D struct
function main (line 15) | func main() {
FILE: _test/struct62.go
function main (line 3) | func main() {
FILE: _test/struct7.go
type Opt (line 3) | type Opt struct
type T (line 7) | type T struct
function main (line 12) | func main() {
FILE: _test/struct8.go
type T3 (line 3) | type T3 struct
type T2 (line 7) | type T2 struct
type T (line 12) | type T struct
function f (line 18) | func f(i int) int { return i * i }
function main (line 20) | func main() {
FILE: _test/struct9.go
type T (line 3) | type T struct
function main (line 8) | func main() {
FILE: _test/switch.go
function main (line 3) | func main() {
FILE: _test/switch0.go
function f (line 5) | func f(i int) bool {
function main (line 16) | func main() {
FILE: _test/switch1.go
function main (line 3) | func main() {
FILE: _test/switch10.go
function main (line 3) | func main() {
FILE: _test/switch11.go
function main (line 3) | func main() {
FILE: _test/switch12.go
function main (line 3) | func main() {
FILE: _test/switch13.go
function main (line 3) | func main() {
FILE: _test/switch14.go
type fii (line 5) | type fii interface
type Boo (line 9) | type Boo struct
method Hello (line 21) | func (b Boo) Hello() {
type Bir (line 13) | type Bir struct
type Bar (line 17) | type Bar struct
method Hello (line 19) | func (b Bar) Hello() { fmt.Println("b:", b) }
function inCall (line 26) | func inCall(foo fii) {
function main (line 36) | func main() {
FILE: _test/switch15.go
type fii (line 5) | type fii interface
type Boo (line 9) | type Boo struct
method Hello (line 21) | func (b Boo) Hello() {
type Bir (line 13) | type Bir struct
type Bar (line 17) | type Bar struct
method Hello (line 19) | func (b Bar) Hello() { fmt.Println("b:", b) }
function inCall (line 26) | func inCall(foo fii) {
function main (line 36) | func main() {
FILE: _test/switch16.go
type fii (line 5) | type fii interface
type Boo (line 9) | type Boo struct
method Hello (line 21) | func (b Boo) Hello() {
type Bir (line 13) | type Bir struct
type Bar (line 17) | type Bar struct
method Hello (line 19) | func (b Bar) Hello() { fmt.Println("b:", b) }
function inCall (line 26) | func inCall(foo fii) {
function main (line 36) | func main() {
FILE: _test/switch17.go
type fii (line 5) | type fii interface
type Boo (line 9) | type Boo struct
method Hello (line 21) | func (b Boo) Hello() {
type Bir (line 13) | type Bir struct
type Bar (line 17) | type Bar struct
method Hello (line 19) | func (b Bar) Hello() { fmt.Println("b:", b) }
function inCall (line 26) | func inCall(foo fii) {
function main (line 40) | func main() {
FILE: _test/switch18.go
type fii (line 5) | type fii interface
type Bir (line 9) | type Bir struct
method Yo (line 11) | func (b Bir) Yo() {
method Hello (line 15) | func (b Bir) Hello() {
type Boo (line 19) | type Boo struct
method Hello (line 23) | func (b Boo) Hello() {
type Bar (line 28) | type Bar struct
method Hello (line 30) | func (b Bar) Hello() { fmt.Println("b:", b) }
function inCall (line 32) | func inCall(foo fii) {
function main (line 44) | func main() {
FILE: _test/switch19.go
type fii (line 5) | type fii interface
type Bir (line 9) | type Bir struct
method Yo (line 11) | func (b Bir) Yo() {
method Hello (line 15) | func (b Bir) Hello() {
type Boo (line 19) | type Boo struct
method Hello (line 23) | func (b Boo) Hello() {
type Bar (line 28) | type Bar struct
method Hello (line 30) | func (b Bar) Hello() { fmt.Println("b:", b) }
function inCall (line 32) | func inCall(foo fii) {
function main (line 44) | func main() {
FILE: _test/switch2.go
function main (line 3) | func main() {
FILE: _test/switch20.go
function main (line 3) | func main() {
FILE: _test/switch21.go
function main (line 5) | func main() {
FILE: _test/switch22.go
type T (line 3) | type T struct
function f (line 7) | func f(t interface{}) {
function main (line 16) | func main() {
FILE: _test/switch23.go
function getType (line 3) | func getType() string { return "T1" }
function main (line 5) | func main() {
FILE: _test/switch24.go
function main (line 3) | func main() {
FILE: _test/switch25.go
function main (line 3) | func main() {
FILE: _test/switch26.go
function main (line 3) | func main() {
FILE: _test/switch27.go
function main (line 3) | func main() {
FILE: _test/switch28.go
function main (line 3) | func main() {
FILE: _test/switch29.go
function main (line 3) | func main() {
FILE: _test/switch3.go
function main (line 3) | func main() {
FILE: _test/switch30.go
function main (line 3) | func main() {
FILE: _test/switch31.go
function main (line 3) | func main() {
FILE: _test/switch32.go
function main (line 3) | func main() {
FILE: _test/switch33.go
function main (line 3) | func main() {
FILE: _test/switch34.go
function main (line 3) | func main() {
FILE: _test/switch35.go
function main (line 3) | func main() {
FILE: _test/switch36.go
function main (line 3) | func main() {
FILE: _test/switch37.go
function main (line 3) | func main() {
FILE: _test/switch38.go
function isSeparator (line 3) | func isSeparator(c byte) bool {
function main (line 11) | func main() {
FILE: _test/switch39.go
function f (line 3) | func f(params ...interface{}) {
function main (line 12) | func main() {
FILE: _test/switch4.go
function main (line 3) | func main() {
FILE: _test/switch40.go
function f (line 3) | func f(params ...interface{}) {
function main (line 12) | func main() {
FILE: _test/switch5.go
function main (line 3) | func main() {
FILE: _test/switch6.go
function main (line 3) | func main() {
FILE: _test/switch7.go
function main (line 3) | func main() {
FILE: _test/switch8.go
function main (line 3) | func main() {
FILE: _test/switch9.go
function main (line 3) | func main() {
FILE: _test/tag0.go
function main (line 8) | func main() {
FILE: _test/testdata/redeclaration-global7/src/guthib.com/bar/quux.go
function Quux (line 3) | func Quux() string {
FILE: _test/testdata/redeclaration-global7/src/guthib.com/baz/quux.go
function Quux (line 3) | func Quux() string {
FILE: _test/testdata/redeclaration-global7/src/guthib.com/tata/tutu.go
function Quux (line 5) | func Quux() string {
FILE: _test/testdata/redeclaration-global7/src/guthib.com/toto/titi.go
function Quux (line 5) | func Quux() string {
FILE: _test/time0.go
function main (line 8) | func main() {
FILE: _test/time1.go
function main (line 8) | func main() {
FILE: _test/time10.go
function main (line 7) | func main() {
FILE: _test/time11.go
constant df (line 8) | df = time.Minute * 30
function main (line 10) | func main() {
FILE: _test/time12.go
function main (line 10) | func main() {
FILE: _test/time13.go
function main (line 12) | func main() {
FILE: _test/time14.go
function f (line 10) | func f() time.Time {
function main (line 15) | func main() {
FILE: _test/time15.go
type TimeValue (line 5) | type TimeValue
method decode (line 7) | func (v *TimeValue) decode() { println("in decode") }
function main (line 9) | func main() {
FILE: _test/time16.go
function main (line 5) | func main() {
FILE: _test/time2.go
function main (line 8) | func main() {
FILE: _test/time3.go
function main (line 9) | func main() {
FILE: _test/time4.go
function main (line 8) | func main() {
FILE: _test/time5.go
function main (line 8) | func main() {
FILE: _test/time6.go
function main (line 8) | func main() {
FILE: _test/time7.go
function main (line 10) | func main() { fmt.Println(d) }
FILE: _test/time8.go
type durationValue (line 7) | type durationValue
method String (line 9) | func (d *durationValue) String() string { return (*time.Duration)(d).S...
function main (line 11) | func main() {
FILE: _test/time9.go
function main (line 8) | func main() {
FILE: _test/type0.go
type newInt (line 3) | type newInt
function main (line 5) | func main() {
FILE: _test/type1.go
function main (line 5) | func main() {
FILE: _test/type10.go
function main (line 11) | func main() {
FILE: _test/type11.go
function main (line 11) | func main() {
FILE: _test/type12.go
type T1 (line 3) | type T1 struct
method Get (line 7) | func (t *T1) Get() string {
type T2 (line 11) | type T2 struct
method V (line 15) | func (t *T2) V() *T2 {
function main (line 24) | func main() {
FILE: _test/type13.go
type T (line 5) | type T struct
function main (line 7) | func main() {
FILE: _test/type14.go
type T (line 7) | type T struct
function main (line 9) | func main() {
FILE: _test/type15.go
function main (line 3) | func main() {
FILE: _test/type16.go
function main (line 5) | func main() {
FILE: _test/type17.go
function main (line 5) | func main() {
FILE: _test/type18.go
type T (line 3) | type T struct
function main (line 15) | func main() {
FILE: _test/type19.go
type T (line 3) | type T struct
function main (line 16) | func main() {
FILE: _test/type2.go
type Options (line 8) | type Options struct
type T1 (line 12) | type T1 struct
function main (line 17) | func main() {
FILE: _test/type20.go
function isCloser (line 8) | func isCloser(r io.Reader) bool {
function main (line 13) | func main() {
FILE: _test/type21.go
function main (line 8) | func main() {
FILE: _test/type22.go
type T1 (line 3) | type T1
function foo (line 5) | func foo() T1 {
type T (line 9) | type T struct
function main (line 13) | func main() {
FILE: _test/type23.go
function main (line 8) | func main() {
FILE: _test/type24.go
function main (line 9) | func main() {
function assertInt (line 15) | func assertInt() {
function assertNil (line 25) | func assertNil() {
function assertValue (line 35) | func assertValue() {
FILE: _test/type25.go
type wrappedError (line 8) | type wrappedError struct
method Error (line 12) | func (e wrappedError) Error() string {
method Unwrap (line 16) | func (e wrappedError) Unwrap() error {
function getWrapped (line 22) | func getWrapped() *wrappedError {
function main (line 32) | func main() {
FILE: _test/type26.go
type wrappedError (line 8) | type wrappedError struct
method Error (line 12) | func (e *wrappedError) Error() string {
method Unwrap (line 16) | func (e *wrappedError) Unwrap() error {
function getWrapped (line 22) | func getWrapped() *wrappedError {
function main (line 32) | func main() {
FILE: _test/type27.go
method Bar (line 7) | func (f Foo) Bar() int {
function main (line 11) | func main() {
FILE: _test/type28.go
method Bar (line 7) | func (f *Foo) Bar() int {
function main (line 11) | func main() {
FILE: _test/type29.go
method Bar (line 5) | func (f Foo) Bar() int {
function main (line 9) | func main() {}
FILE: _test/type3.go
type S1 (line 5) | type S1
function main (line 7) | func main() {
FILE: _test/type30.go
method Bar (line 5) | func (f Foo) Bar() int {
function main (line 9) | func main() {}
FILE: _test/type31.go
method Bar (line 5) | func (f Foo) Bar() int {
function main (line 11) | func main() {
FILE: _test/type32.go
method Bar (line 5) | func (f *Foo) Bar() int {
function main (line 11) | func main() {
FILE: _test/type33.go
method Bar (line 3) | func (f *Foo) Bar() int {
function main (line 7) | func main() {
FILE: _test/type34.go
type original (line 3) | type original struct
function main (line 7) | func main() {
FILE: _test/type4.go
function main (line 8) | func main() {
FILE: _test/type5.go
type T (line 8) | type T
function main (line 10) | func main() {
FILE: _test/type6.go
function main (line 8) | func main() {
type T (line 13) | type T
FILE: _test/type7.go
function main (line 5) | func main() {
FILE: _test/type8.go
function main (line 8) | func main() {
FILE: _test/type9.go
type Hello (line 5) | type Hello struct
function main (line 9) | func main() {
type GoodbyeProvider (line 15) | type GoodbyeProvider
FILE: _test/unsafe0.go
function main (line 5) | func main() {
FILE: _test/unsafe1.go
type S (line 5) | type S struct
function main (line 9) | func main() {
FILE: _test/unsafe10.go
type T (line 5) | type T struct
function f (line 10) | func f(off uintptr) { println(off) }
function main (line 12) | func main() {
FILE: _test/unsafe2.go
function main (line 8) | func main() {
FILE: _test/unsafe3.go
constant SSize (line 9) | SSize = 16
constant WSize (line 10) | WSize = bits.UintSize / 8
type S (line 13) | type S struct
function main (line 18) | func main() {
FILE: _test/unsafe4.go
constant WSize (line 9) | WSize = bits.UintSize / 8
type S (line 11) | type S struct
function main (line 17) | func main() {
FILE: _test/unsafe5.go
constant WSize (line 8) | WSize = bits.UintSize / 8
type S (line 10) | type S struct
function main (line 16) | func main() {
FILE: _test/unsafe6.go
type S (line 8) | type S struct
function main (line 14) | func main() {
FILE: _test/unsafe7.go
type S (line 8) | type S struct
function main (line 14) | func main() {
FILE: _test/unsafe8.go
type T (line 5) | type T struct
function main (line 13) | func main() {
FILE: _test/var.go
function main (line 3) | func main() {
FILE: _test/var10.go
function main (line 6) | func main() {
FILE: _test/var11.go
function main (line 5) | func main() {
FILE: _test/var12.go
function main (line 8) | func main() {
FILE: _test/var13.go
function concat (line 10) | func concat(a ...string) string {
function main (line 18) | func main() {
FILE: _test/var14.go
function main (line 5) | func main() {
FILE: _test/var15.go
function inca (line 5) | func inca() {
function main (line 9) | func main() {
FILE: _test/var16.go
function getArray (line 3) | func getArray() ([]int, error) { println("getArray"); return []int{1, 2}...
function getNum (line 5) | func getNum() (int, error) { println("getNum"); return 3, nil }
function main (line 7) | func main() {
FILE: _test/var2.go
function main (line 3) | func main() {
FILE: _test/var3.go
function main (line 3) | func main() {
FILE: _test/var4.go
function main (line 3) | func main() {
FILE: _test/var5.go
function main (line 5) | func main() {
FILE: _test/var6.go
type Foo (line 7) | type Foo struct
function Hello (line 13) | func Hello() {
function main (line 19) | func main() {
FILE: _test/var7.go
type T (line 7) | type T struct
function main (line 13) | func main() {
FILE: _test/var8.go
type Message (line 8) | type Message struct
function main (line 14) | func main() {
FILE: _test/var9.go
function main (line 6) | func main() {
FILE: _test/variadic.go
function f (line 5) | func f(a ...int) {
function main (line 9) | func main() {
FILE: _test/variadic0.go
function f (line 5) | func f(s string, a ...int) {
function main (line 9) | func main() {
FILE: _test/variadic1.go
function f (line 5) | func f(s string, a ...int32) {
function main (line 9) | func main() {
FILE: _test/variadic10.go
function main (line 8) | func main() {
FILE: _test/variadic2.go
function f (line 5) | func f(a ...int) {
function main (line 11) | func main() {
FILE: _test/variadic3.go
function f (line 5) | func f(a ...int) int {
function main (line 14) | func main() {
FILE: _test/variadic4.go
function variadic (line 3) | func variadic(s ...string) {}
function f (line 5) | func f(s string) { println(s + "bar") }
function main (line 7) | func main() { f("foo") }
FILE: _test/variadic5.go
type A (line 7) | type A struct
method f (line 10) | func (a A) f(vals ...bool) {
function main (line 16) | func main() {
FILE: _test/variadic6.go
type A (line 5) | type A struct
method f (line 8) | func (a A) f(vals ...bool) {
function main (line 13) | func main() {
FILE: _test/variadic7.go
function main (line 5) | func main() {
FILE: _test/variadic8.go
function main (line 8) | func main() {
FILE: _test/variadic9.go
function Sprintf (line 5) | func Sprintf(format string, a ...interface{}) string {
function main (line 9) | func main() {
FILE: _test/vars/first.go
function concat (line 8) | func concat(a ...string) string {
FILE: cmd/yaegi/extract.go
function extractCmd (line 17) | func extractCmd(arg []string) error {
function genLicense (line 104) | func genLicense(fname string) (string, error) {
FILE: cmd/yaegi/help.go
constant usage (line 5) | usage = `Yaegi is a Go interpreter.
function help (line 25) | func help(arg []string) error {
FILE: cmd/yaegi/run.go
function run (line 19) | func run(arg []string) error {
function isFile (line 131) | func isFile(path string) bool {
function runFile (line 136) | func runFile(i *interp.Interpreter, path string, noAutoImport bool) error {
function showError (line 157) | func showError(err error) {
FILE: cmd/yaegi/test.go
function test (line 22) | func test(arg []string) (err error) {
FILE: cmd/yaegi/yaegi.go
constant Extract (line 107) | Extract = "extract"
constant Help (line 108) | Help = "help"
constant Run (line 109) | Run = "run"
constant Test (line 110) | Test = "test"
constant Version (line 111) | Version = "version"
function main (line 116) | func main() {
FILE: cmd/yaegi/yaegi_test.go
constant CITimeoutMultiplier (line 18) | CITimeoutMultiplier = 3
function Sleep (line 22) | func Sleep(d time.Duration) {
function applyCIMultiplier (line 27) | func applyCIMultiplier(timeout time.Duration) time.Duration {
function TestYaegiCmdCancel (line 39) | func TestYaegiCmdCancel(t *testing.T) {
function raceDetectorSupported (line 120) | func raceDetectorSupported(goos, goarch string) bool {
FILE: example/closure/_pkg/src/foo/bar/bar.go
function NewSample (line 9) | func NewSample() func(string, string) func(string) string {
FILE: example/closure/closure_test.go
function TestFunctionCall (line 10) | func TestFunctionCall(t *testing.T) {
FILE: example/fs/fs_test.go
function TestFilesystemMapFS (line 52) | func TestFilesystemMapFS(t *testing.T) {
FILE: example/getfunc/_gopath/src/github.com/foo/bar/foobar.go
type Foo (line 3) | type Foo struct
function NewFoo (line 7) | func NewFoo() *Foo {
FILE: example/getfunc/getfunc_test.go
function TestGetFunc (line 11) | func TestGetFunc(t *testing.T) {
FILE: example/pkg/_pkg/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg0/src/github.com/foo/pkg/fromage/cheese/cheese.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg0/src/github.com/foo/pkg/fromage/fromage.go
function Hello (line 9) | func Hello() string {
FILE: example/pkg/_pkg0/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg1/src/github.com/foo/pkg/fromage/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg1/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg10/src/github.com/foo/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg10/src/github.com/foo/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg11/src/foo/foo.go
function main (line 9) | func main() {
FILE: example/pkg/_pkg11/src/foo/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg12/src/guthib.com/foo/main.go
function main (line 9) | func main() {
FILE: example/pkg/_pkg12/src/guthib.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg12/src/guthib.com/foo/vendor/guthib.com/bar/bar.go
function Bar (line 4) | func Bar() string {
FILE: example/pkg/_pkg13/src/guthib.com/foo/bar/main.go
function main (line 9) | func main() {
FILE: example/pkg/_pkg13/src/guthib.com/foo/bar/vendor/guthib.com/bat/baz/baz.go
function NewT (line 3) | func NewT() *T {
type T (line 10) | type T struct
type U (line 15) | type U struct
type V (line 20) | type V struct
FILE: example/pkg/_pkg2/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg2/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 9) | func Hello() string {
FILE: example/pkg/_pkg2/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/vendor/guthib.com/traefik/cheese/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg3/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg3/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/couteau/couteau.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg3/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 10) | func Hello() string {
FILE: example/pkg/_pkg3/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/vendor/guthib.com/traefik/cheese/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg4/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg4/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/couteau/couteau.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg4/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 10) | func Hello() string {
FILE: example/pkg/_pkg4/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/vendor/guthib.com/traefik/cheese/cheese.go
function Hello (line 9) | func Hello() string {
FILE: example/pkg/_pkg4/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/vendor/guthib.com/traefik/cheese/vin/vin.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg5/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg5/src/github.com/foo/pkg/vendor/guthib.com/traefik/cheese/cheese.go
function Hello (line 9) | func Hello() string {
FILE: example/pkg/_pkg5/src/github.com/foo/pkg/vendor/guthib.com/traefik/cheese/vin/vin.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg5/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/couteau/couteau.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg5/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 10) | func Hello() string {
FILE: example/pkg/_pkg6/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg6/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/couteau/couteau.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg6/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 10) | func Hello() string {
FILE: example/pkg/_pkg6/src/guthib.com/traefik/cheese/cheese.go
function Hello (line 9) | func Hello() string {
FILE: example/pkg/_pkg6/src/guthib.com/traefik/cheese/vin/vin.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg7/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg7/src/github.com/foo/pkg/vendor/guthib.com/traefik/fromage/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg7/src/github.com/foo/pkg/vendor/guthib.com/traefik/vin/vendor/guthib.com/traefik/cheese/cheese.go
function Hello (line 9) | func Hello() string {
FILE: example/pkg/_pkg7/src/github.com/foo/pkg/vendor/guthib.com/traefik/vin/vin.go
function Hello (line 9) | func Hello() string {
FILE: example/pkg/_pkg8/src/github.com/foo/pkg/fromage/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg8/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg9/src/github.com/foo/pkg/fromage/fromage.go
function Hello (line 5) | func Hello() string {
FILE: example/pkg/_pkg9/src/github.com/foo/pkg/pkg.go
function Here (line 9) | func Here() string {
function NewSample (line 13) | func NewSample() func() string {
FILE: example/pkg/_pkg9/src/github.com/foo/pkg/pkgfalse.go
function HereNot (line 9) | func HereNot() string {
function NewSampleNot (line 13) | func NewSampleNot() func() string {
FILE: example/pkg/pkg_test.go
function TestPackages (line 14) | func TestPackages(t *testing.T) {
function fatalStderrf (line 151) | func fatalStderrf(t *testing.T, format string, args ...interface{}) {
function TestPackagesError (line 158) | func TestPackagesError(t *testing.T) {
FILE: extract/extract.go
constant model (line 28) | model = `// Code generated by 'yaegi extract {{.ImportPath}}'. DO NOT EDIT.
type Val (line 98) | type Val struct
type Method (line 104) | type Method struct
type Wrap (line 109) | type Wrap struct
function matchList (line 125) | func matchList(name string, list []string) (match bool, err error) {
type Extractor (line 136) | type Extractor struct
method genContent (line 144) | func (e *Extractor) genContent(importPath string, p *types.Package) ([...
method importPath (line 378) | func (e *Extractor) importPath(pkgIdent, importPath string) (string, e...
method Extract (line 444) | func (e *Extractor) Extract(pkgIdent, importPath string, rw io.Writer)...
function fixConst (line 339) | func fixConst(name string, val constant.Value, imports map[string]bool) ...
function GetMinor (line 468) | func GetMinor(part string) string {
constant defaultMinorVersion (line 481) | defaultMinorVersion = 22
function genBuildTags (line 483) | func genBuildTags() (string, error) {
function isInStdlib (line 509) | func isInStdlib(path string) bool { return !strings.Contains(path, ".") }
FILE: extract/extract_test.go
function TestPackages (line 28) | func TestPackages(t *testing.T) {
FILE: extract/testdata/1/src/guthib.com/bar/main.go
function main (line 7) | func main() {
FILE: extract/testdata/1/src/guthib.com/baz/baz.go
function Hello (line 3) | func Hello() {
FILE: extract/testdata/2/src/guthib.com/bar/main.go
function main (line 7) | func main() {
FILE: extract/testdata/2/src/guthib.com/baz/baz.go
function Hello (line 3) | func Hello() {
FILE: extract/testdata/3/src/guthib.com/bar/main.go
function main (line 7) | func main() {
FILE: extract/testdata/3/src/guthib.com/baz/baz.go
function Hello (line 3) | func Hello() {
FILE: extract/testdata/4/src/guthib.com/bar/main.go
function main (line 7) | func main() {
FILE: extract/testdata/4/src/guthib.com/bar/vendor/guthib.com/baz/baz.go
function Hello (line 3) | func Hello() {
FILE: extract/testdata/5/src/guthib.com/bar/main.go
function main (line 7) | func main() {
FILE: extract/testdata/5/src/guthib.com/bar/vendor/guthib.com/baz/baz.go
function Hello (line 3) | func Hello() {
FILE: extract/testdata/6/src/guthib.com/bar/main.go
function main (line 7) | func main() {
FILE: extract/testdata/6/src/guthib.com/baz-baz/baz.go
function Hello (line 3) | func Hello() {
FILE: extract/testdata/7/src/guthib.com/variadic/variadic.go
type Variadic (line 3) | type Variadic interface
FILE: internal/cmd/extract/extract.go
function main (line 39) | func main() {
FILE: internal/cmd/genop/genop.go
constant model (line 12) | model = `package interp
type Op (line 1140) | type Op struct
function main (line 1150) | func main() {
FILE: internal/unsafe2/go1_20_unsafe.go
type dummy (line 12) | type dummy struct
type rtype (line 19) | type rtype struct
type emptyInterface (line 30) | type emptyInterface struct
type structField (line 35) | type structField struct
type structType (line 41) | type structType struct
function SetFieldType (line 50) | func SetFieldType(s reflect.Type, idx int, t reflect.Type) {
function unpackType (line 62) | func unpackType(t reflect.Type) *rtype {
FILE: internal/unsafe2/go1_21_unsafe.go
type dummy (line 12) | type dummy struct
type abiType (line 18) | type abiType struct
type abiName (line 32) | type abiName struct
type abiStructField (line 36) | type abiStructField struct
type abiStructType (line 42) | type abiStructType struct
type emptyInterface (line 48) | type emptyInterface struct
function SetFieldType (line 56) | func SetFieldType(s reflect.Type, idx int, t reflect.Type) {
function unpackType (line 68) | func unpackType(t reflect.Type) *abiType {
FILE: internal/unsafe2/unsafe_test.go
function TestSwapFieldType (line 10) | func TestSwapFieldType(t *testing.T) {
FILE: interp/ast.go
type nkind (line 17) | type nkind
method String (line 188) | func (k nkind) String() string {
constant undefNode (line 21) | undefNode nkind = iota
constant addressExpr (line 22) | addressExpr
constant arrayType (line 23) | arrayType
constant assignStmt (line 24) | assignStmt
constant assignXStmt (line 25) | assignXStmt
constant basicLit (line 26) | basicLit
constant binaryExpr (line 27) | binaryExpr
constant blockStmt (line 28) | blockStmt
constant branchStmt (line 29) | branchStmt
constant breakStmt (line 30) | breakStmt
constant callExpr (line 31) | callExpr
constant caseBody (line 32) | caseBody
constant caseClause (line 33) | caseClause
constant chanType (line 34) | chanType
constant chanTypeSend (line 35) | chanTypeSend
constant chanTypeRecv (line 36) | chanTypeRecv
constant commClause (line 37) | commClause
constant commClauseDefault (line 38) | commClauseDefault
constant compositeLitExpr (line 39) | compositeLitExpr
constant constDecl (line 40) | constDecl
constant continueStmt (line 41) | continueStmt
constant declStmt (line 42) | declStmt
constant deferStmt (line 43) | deferStmt
constant defineStmt (line 44) | defineStmt
constant defineXStmt (line 45) | defineXStmt
constant ellipsisExpr (line 46) | ellipsisExpr
constant exprStmt (line 47) | exprStmt
constant fallthroughtStmt (line 48) | fallthroughtStmt
constant fieldExpr (line 49) | fieldExpr
constant fieldList (line 50) | fieldList
constant fileStmt (line 51) | fileStmt
constant forStmt0 (line 52) | forStmt0
constant forStmt1 (line 53) | forStmt1
constant forStmt2 (line 54) | forStmt2
constant forStmt3 (line 55) | forStmt3
constant forStmt4 (line 56) | forStmt4
constant forStmt5 (line 57) | forStmt5
constant forStmt6 (line 58) | forStmt6
constant forStmt7 (line 59) | forStmt7
constant forRangeStmt (line 60) | forRangeStmt
constant funcDecl (line 61) | funcDecl
constant funcLit (line 62) | funcLit
constant funcType (line 63) | funcType
constant goStmt (line 64) | goStmt
constant gotoStmt (line 65) | gotoStmt
constant identExpr (line 66) | identExpr
constant ifStmt0 (line 67) | ifStmt0
constant ifStmt1 (line 68) | ifStmt1
constant ifStmt2 (line 69) | ifStmt2
constant ifStmt3 (line 70) | ifStmt3
constant importDecl (line 71) | importDecl
constant importSpec (line 72) | importSpec
constant incDecStmt (line 73) | incDecStmt
constant indexExpr (line 74) | indexExpr
constant indexListExpr (line 75) | indexListExpr
constant interfaceType (line 76) | interfaceType
constant keyValueExpr (line 77) | keyValueExpr
constant labeledStmt (line 78) | labeledStmt
constant landExpr (line 79) | landExpr
constant lorExpr (line 80) | lorExpr
constant mapType (line 81) | mapType
constant parenExpr (line 82) | parenExpr
constant rangeStmt (line 83) | rangeStmt
constant returnStmt (line 84) | returnStmt
constant selectStmt (line 85) | selectStmt
constant selectorExpr (line 86) | selectorExpr
constant selectorImport (line 87) | selectorImport
constant sendStmt (line 88) | sendStmt
constant sliceExpr (line 89) | sliceExpr
constant starExpr (line 90) | starExpr
constant structType (line 91) | structType
constant switchStmt (line 92) | switchStmt
constant switchIfStmt (line 93) | switchIfStmt
constant typeAssertExpr (line 94) | typeAssertExpr
constant typeDecl (line 95) | typeDecl
constant typeSpec (line 96) | typeSpec
constant typeSpecAssign (line 97) | typeSpecAssign
constant typeSwitch (line 98) | typeSwitch
constant unaryExpr (line 99) | unaryExpr
constant valueSpec (line 100) | valueSpec
constant varDecl (line 101) | varDecl
type astError (line 196) | type astError
type action (line 199) | type action
method String (line 328) | func (a action) String() string {
constant aNop (line 205) | aNop action = iota
constant aAddr (line 206) | aAddr
constant aAssign (line 207) | aAssign
constant aAssignX (line 208) | aAssignX
constant aAdd (line 209) | aAdd
constant aAddAssign (line 210) | aAddAssign
constant aAnd (line 211) | aAnd
constant aAndAssign (line 212) | aAndAssign
constant aAndNot (line 213) | aAndNot
constant aAndNotAssign (line 214) | aAndNotAssign
constant aBitNot (line 215) | aBitNot
constant aBranch (line 216) | aBranch
constant aCall (line 217) | aCall
constant aCallSlice (line 218) | aCallSlice
constant aCase (line 219) | aCase
constant aCompositeLit (line 220) | aCompositeLit
constant aConvert (line 221) | aConvert
constant aDec (line 222) | aDec
constant aEqual (line 223) | aEqual
constant aGreater (line 224) | aGreater
constant aGreaterEqual (line 225) | aGreaterEqual
constant aGetFunc (line 226) | aGetFunc
constant aGetIndex (line 227) | aGetIndex
constant aGetMethod (line 228) | aGetMethod
constant aGetSym (line 229) | aGetSym
constant aInc (line 230) | aInc
constant aLand (line 231) | aLand
constant aLor (line 232) | aLor
constant aLower (line 233) | aLower
constant aLowerEqual (line 234) | aLowerEqual
constant aMethod (line 235) | aMethod
constant aMul (line 236) | aMul
constant aMulAssign (line 237) | aMulAssign
constant aNeg (line 238) | aNeg
constant aNot (line 239) | aNot
constant aNotEqual (line 240) | aNotEqual
constant aOr (line 241) | aOr
constant aOrAssign (line 242) | aOrAssign
constant aPos (line 243) | aPos
constant aQuo (line 244) | aQuo
constant aQuoAssign (line 245) | aQuoAssign
constant aRange (line 246) | aRange
constant aRecv (line 247) | aRecv
constant aRem (line 248) | aRem
constant aRemAssign (line 249) | aRemAssign
constant aReturn (line 250) | aReturn
constant aSend (line 251) | aSend
constant aShl (line 252) | aShl
constant aShlAssign (line 253) | aShlAssign
constant aShr (line 254) | aShr
constant aShrAssign (line 255) | aShrAssign
constant aSlice (line 256) | aSlice
constant aSlice0 (line 257) | aSlice0
constant aStar (line 258) | aStar
constant aSub (line 259) | aSub
constant aSubAssign (line 260) | aSubAssign
constant aTypeAssert (line 261) | aTypeAssert
constant aXor (line 262) | aXor
constant aXorAssign (line 263) | aXorAssign
function isAssignAction (line 335) | func isAssignAction(a action) bool {
method firstToken (line 344) | func (interp *Interpreter) firstToken(src string) token.Token {
function ignoreError (line 353) | func ignoreError(err error, src string) bool {
function wrapInMain (line 364) | func wrapInMain(src string) string {
method parse (line 368) | func (interp *Interpreter) parse(src, name string, inc bool) (node ast.N...
method ast (line 431) | func (interp *Interpreter) ast(f ast.Node) (string, *node, error) {
type astNode (line 942) | type astNode struct
type nodestack (line 947) | type nodestack
method push (line 949) | func (s *nodestack) push(n *node, a ast.Node) {
method pop (line 953) | func (s *nodestack) pop() astNode {
method top (line 960) | func (s *nodestack) top() astNode {
method dup (line 969) | func (interp *Interpreter) dup(nod, anc *node) *node {
FILE: interp/build.go
method buildOk (line 15) | func (interp *Interpreter) buildOk(ctx *build.Context, name, src string)...
function buildLineOk (line 35) | func buildLineOk(ctx *build.Context, line string) (ok bool) {
function buildOptionOk (line 50) | func buildOptionOk(ctx *build.Context, tag string) bool {
function buildTagOk (line 62) | func buildTagOk(ctx *build.Context, s string) (r bool) {
function setYaegiTags (line 89) | func setYaegiTags(ctx *build.Context, comments []*ast.CommentGroup) {
function contains (line 106) | func contains(tags []string, tag string) bool {
function goMinorVersion (line 116) | func goMinorVersion(ctx *build.Context) int {
function skipFile (line 132) | func skipFile(ctx *build.Context, p string, skipTest bool) bool {
FILE: interp/build_test.go
type testBuild (line 8) | type testBuild struct
function TestBuildTag (line 13) | func TestBuildTag(t *testing.T) {
function TestSkipFile (line 54) | func TestSkipFile(t *testing.T) {
function Test_goMinorVersion (line 92) | func Test_goMinorVersion(t *testing.T) {
FILE: interp/cfg.go
type cfgError (line 15) | type cfgError struct
method Error (line 20) | func (c *cfgError) Error() string { return c.error.Error() }
constant nilIdent (line 46) | nilIdent = "nil"
function init (line 48) | func init() {
method cfg (line 59) | func (interp *Interpreter) cfg(root *node, sc *scope, importPath, pkgNam...
function fixUntyped (line 2309) | func fixUntyped(nod *node, sc *scope) {
function compDefineX (line 2322) | func compDefineX(sc *scope, n *node) error {
function childPos (line 2436) | func childPos(n *node) int {
method cfgErrorf (line 2445) | func (n *node) cfgErrorf(format string, a ...interface{}) *cfgError {
function genRun (line 2455) | func genRun(nod *node) error {
function genGlobalVars (line 2481) | func genGlobalVars(roots []*node, sc *scope) (*node, error) {
function getVars (line 2499) | func getVars(n *node) (vars []*node) {
function genGlobalVarDecl (line 2508) | func genGlobalVarDecl(nodes []*node, sc *scope) (*node, error) {
function getVarDependencies (line 2550) | func getVarDependencies(nod *node, sc *scope) (deps []*node) {
function setFNext (line 2574) | func setFNext(cond, next *node) {
function getDefault (line 2588) | func getDefault(n *node) int {
function isBinType (line 2602) | func isBinType(v reflect.Value) bool { return v.IsValid() && v.Kind() ==...
method isType (line 2605) | func (n *node) isType(sc *scope) bool {
function wireChild (line 2645) | func wireChild(n *node, exclude ...nkind) {
function excludeNodeKind (line 2688) | func excludeNodeKind(child []*node, kinds []nkind) []*node {
method name (line 2707) | func (n *node) name() (s string) {
method isNatural (line 2718) | func (n *node) isNatural() bool {
method isNil (line 2762) | func (n *node) isNil() bool { return n.kind == basicLit && !n.rval.IsVal...
method fieldType (line 2765) | func (n *node) fieldType(m int) *node {
method lastChild (line 2788) | func (n *node) lastChild() *node { return n.child[len(n.child)-1] }
method hasAnc (line 2790) | func (n *node) hasAnc(nod *node) bool {
function isKey (line 2799) | func isKey(n *node) bool {
function isField (line 2807) | func isField(n *node) bool {
function isInInterfaceType (line 2811) | func isInInterfaceType(n *node) bool {
function isInConstOrTypeDecl (line 2822) | func isInConstOrTypeDecl(n *node) bool {
function isNewDefine (line 2837) | func isNewDefine(n *node, sc *scope) bool {
function isMethod (line 2856) | func isMethod(n *node) bool {
function isFuncField (line 2860) | func isFuncField(n *node) bool {
function isMapEntry (line 2864) | func isMapEntry(n *node) bool {
function isCall (line 2868) | func isCall(n *node) bool {
function isBinCall (line 2872) | func isBinCall(n *node, sc *scope) bool {
function mustReturnValue (line 2887) | func mustReturnValue(n *node) bool {
function isRegularCall (line 2899) | func isRegularCall(n *node) bool {
function variadicPos (line 2903) | func variadicPos(n *node) int {
function canExport (line 2914) | func canExport(name string) bool {
function getExec (line 2921) | func getExec(n *node) bltn {
function setExec (line 2933) | func setExec(n *node) {
function typeSwichAssign (line 2967) | func typeSwichAssign(n *node) bool {
function compositeGenerator (line 2972) | func compositeGenerator(n *node, typ *itype, rtyp reflect.Type) (gen blt...
function matchSelectorMethod (line 3024) | func matchSelectorMethod(sc *scope, n *node) (err error) {
function arrayTypeLen (line 3143) | func arrayTypeLen(n *node, sc *scope) (int, error) {
function isValueUntyped (line 3194) | func isValueUntyped(v reflect.Value) bool {
function isArithmeticAction (line 3203) | func isArithmeticAction(n *node) bool {
function isBoolAction (line 3211) | func isBoolAction(n *node) bool {
function isBlank (line 3219) | func isBlank(n *node) bool {
function alignof (line 3226) | func alignof(n *node) {
function offsetof (line 3232) | func offsetof(n *node) {
function sizeof (line 3241) | func sizeof(n *node) {
FILE: interp/compile_test.go
function TestCompileAST (line 12) | func TestCompileAST(t *testing.T) {
FILE: interp/debugger.go
type Debugger (line 28) | type Debugger struct
method Wait (line 223) | func (dbg *Debugger) Wait() (reflect.Value, error) {
method enterGoRoutine (line 229) | func (dbg *Debugger) enterGoRoutine() *debugRoutine {
method exitGoRoutine (line 245) | func (dbg *Debugger) exitGoRoutine(g *debugRoutine) {
method getGoRoutine (line 254) | func (dbg *Debugger) getGoRoutine(id int) (*debugRoutine, bool) {
method enterCall (line 262) | func (dbg *Debugger) enterCall(nFunc, nCall *node, f *frame) {
method exitCall (line 290) | func (dbg *Debugger) exitCall(nFunc, nCall *node, f *frame) {
method exec (line 302) | func (dbg *Debugger) exec(n *node, f *frame) (stop bool) {
method Continue (line 348) | func (dbg *Debugger) Continue(id int) error {
method Step (line 380) | func (dbg *Debugger) Step(id int, reason DebugEventReason) error {
method Interrupt (line 399) | func (dbg *Debugger) Interrupt(id int, reason DebugEventReason) bool {
method Terminate (line 410) | func (dbg *Debugger) Terminate() {
method SetBreakpoints (line 484) | func (dbg *Debugger) SetBreakpoints(target BreakpointTarget, requests ...
method GoRoutines (line 537) | func (dbg *Debugger) GoRoutines() []*DebugGoRoutine {
type debugRoutine (line 44) | type debugRoutine struct
method setMode (line 360) | func (g *debugRoutine) setMode(reason DebugEventReason) {
type nodeDebugData (line 56) | type nodeDebugData struct
type frameDebugData (line 63) | type frameDebugData struct
type frameKind (line 72) | type frameKind
constant frameRoot (line 76) | frameRoot frameKind = iota + 1
constant frameCall (line 79) | frameCall
constant frameClosure (line 82) | frameClosure
type DebugOptions (line 86) | type DebugOptions struct
type DebugEvent (line 92) | type DebugEvent struct
method GoRoutine (line 555) | func (evt *DebugEvent) GoRoutine() int {
method Reason (line 563) | func (evt *DebugEvent) Reason() DebugEventReason {
method walkFrames (line 569) | func (evt *DebugEvent) walkFrames(fn func([]*frame) bool) {
method FrameDepth (line 603) | func (evt *DebugEvent) FrameDepth() int {
method Frames (line 614) | func (evt *DebugEvent) Frames(start, end int) []*DebugFrame {
type DebugFrame (line 100) | type DebugFrame struct
method Name (line 632) | func (f *DebugFrame) Name() string {
method Position (line 654) | func (f *DebugFrame) Position() token.Position {
method Program (line 664) | func (f *DebugFrame) Program() *Program {
method Scopes (line 674) | func (f *DebugFrame) Scopes() []*DebugFrameScope {
type DebugFrameScope (line 107) | type DebugFrameScope struct
method IsClosure (line 683) | func (f *DebugFrameScope) IsClosure() bool {
method Variables (line 688) | func (f *DebugFrameScope) Variables() []*DebugVariable {
type DebugVariable (line 112) | type DebugVariable struct
type DebugGoRoutine (line 119) | type DebugGoRoutine struct
method ID (line 549) | func (r *DebugGoRoutine) ID() int { return r.id }
method Name (line 552) | func (r *DebugGoRoutine) Name() string { return fmt.Sprintf("Goroutine...
type Breakpoint (line 124) | type Breakpoint struct
type DebugEventReason (line 133) | type DebugEventReason
constant debugRun (line 137) | debugRun DebugEventReason = iota
constant DebugPause (line 141) | DebugPause
constant DebugBreak (line 144) | DebugBreak
constant DebugEntry (line 148) | DebugEntry
constant DebugStepInto (line 152) | DebugStepInto
constant DebugStepOver (line 156) | DebugStepOver
constant DebugStepOut (line 160) | DebugStepOut
constant DebugTerminate (line 164) | DebugTerminate
constant DebugEnterGoRoutine (line 167) | DebugEnterGoRoutine
constant DebugExitGoRoutine (line 170) | DebugExitGoRoutine
method Debug (line 178) | func (interp *Interpreter) Debug(ctx context.Context, prog *Program, eve...
type BreakpointTarget (line 423) | type BreakpointTarget
function PathBreakpointTarget (line 428) | func PathBreakpointTarget(path string) BreakpointTarget {
function ProgramBreakpointTarget (line 441) | func ProgramBreakpointTarget(prog *Program) BreakpointTarget {
function AllBreakpointTarget (line 449) | func AllBreakpointTarget() BreakpointTarget {
type breakpointSetup (line 457) | type breakpointSetup struct
type BreakpointRequest (line 464) | type BreakpointRequest
function LineBreakpoint (line 467) | func LineBreakpoint(line int) BreakpointRequest {
function FunctionBreakpoint (line 474) | func FunctionBreakpoint(name string) BreakpointRequest {
function scanScope (line 712) | func scanScope(sc *scope, index map[int]string) {
FILE: interp/dot.go
method astDot (line 13) | func (n *node) astDot(out io.Writer, name string) {
method cfgDot (line 39) | func (n *node) cfgDot(out io.Writer) {
type nopCloser (line 62) | type nopCloser struct
method Close (line 66) | func (nopCloser) Close() error { return nil }
function dotWriter (line 69) | func dotWriter(dotCmd string) io.WriteCloser {
function defaultDotCmd (line 85) | func defaultDotCmd(filePath, prefix string) string {
FILE: interp/example_eval_test.go
function Example_eval (line 11) | func Example_eval() {
FILE: interp/export_test.go
method Scopes (line 3) | func (interp *Interpreter) Scopes() map[string]map[string]struct{} {
method Packages (line 15) | func (interp *Interpreter) Packages() map[string]string {
FILE: interp/generic.go
function genAST (line 12) | func genAST(sc *scope, root *node, types []*itype) (*node, bool, error) {
function copyNode (line 182) | func copyNode(n, anc *node, recursive bool) *node {
function inferTypesFromCall (line 211) | func inferTypesFromCall(sc *scope, fun *node, args []*node) ([]*itype, e...
function checkConstraint (line 304) | func checkConstraint(it, ct *itype) error {
FILE: interp/gta.go
method gta (line 12) | func (interp *Interpreter) gta(root *node, rpath, importPath, pkgName st...
function baseType (line 378) | func baseType(t *itype) *itype {
method gtaRetry (line 390) | func (interp *Interpreter) gtaRetry(nodes []*node, importPath, pkgName s...
function definedType (line 426) | func definedType(typ *itype) error {
function equalNodes (line 464) | func equalNodes(a, b []*node) bool {
FILE: interp/hooks.go
type convertFn (line 6) | type convertFn
type hooks (line 9) | type hooks struct
method Parse (line 13) | func (h *hooks) Parse(m map[string]reflect.Value) {
function getConvertFn (line 19) | func getConvertFn(v reflect.Value) (convertFn, bool) {
FILE: interp/interp.go
type node (line 27) | type node struct
method shouldBreak (line 58) | func (n *node) shouldBreak() bool {
method setProgram (line 70) | func (n *node) setProgram(p *Program) {
method setBreakOnCall (line 77) | func (n *node) setBreakOnCall(v bool) {
method setBreakOnLine (line 87) | func (n *node) setBreakOnLine(v bool) {
method Walk (line 281) | func (n *node) Walk(in func(n *node) bool, out func(n *node)) {
type receiver (line 98) | type receiver struct
type frame (line 105) | type frame struct
method runid (line 138) | func (f *frame) runid() uint64 { return atomic.LoadUint64(&f.id) }
method setrunid (line 139) | func (f *frame) setrunid(id uint64) { atomic.StoreUint64(&f.id, id) }
method clone (line 140) | func (f *frame) clone() *frame {
function newFrame (line 123) | func newFrame(anc *frame, length int, id uint64) *frame {
type Exports (line 160) | type Exports
type imports (line 163) | type imports
type opt (line 166) | type opt struct
type Interpreter (line 186) | type Interpreter struct
method resizeFrame (line 479) | func (interp *Interpreter) resizeFrame() {
method Eval (line 495) | func (interp *Interpreter) Eval(src string) (res reflect.Value, err er...
method EvalPath (line 502) | func (interp *Interpreter) EvalPath(path string) (res reflect.Value, e...
method EvalPathWithContext (line 519) | func (interp *Interpreter) EvalPathWithContext(ctx context.Context, pa...
method EvalTest (line 544) | func (interp *Interpreter) EvalTest(path string) error {
method eval (line 554) | func (interp *Interpreter) eval(src, name string, inc bool) (res refle...
method EvalWithContext (line 569) | func (interp *Interpreter) EvalWithContext(ctx context.Context, src st...
method stop (line 603) | func (interp *Interpreter) stop() {
method runid (line 608) | func (interp *Interpreter) runid() uint64 { return atomic.LoadUint64(&...
method ImportUsed (line 632) | func (interp *Interpreter) ImportUsed() {
method REPL (line 666) | func (interp *Interpreter) REPL() (reflect.Value, error) {
constant mainID (line 223) | mainID = "main"
constant selfPrefix (line 224) | selfPrefix = "github.com/traefik/yaegi"
constant selfPath (line 225) | selfPath = selfPrefix + "/interp/interp"
constant DefaultSourceName (line 229) | DefaultSourceName = "_.go"
constant Test (line 232) | Test = false
constant NoTest (line 234) | NoTest = true
function init (line 251) | func init() { Symbols[selfPath]["Symbols"] = reflect.ValueOf(Symbols) }
type _error (line 254) | type _error struct
method Error (line 259) | func (w _error) Error() string { return w.WError() }
type Panic (line 262) | type Panic struct
method Error (line 277) | func (e Panic) Error() string { return fmt.Sprint(e.Value) }
type Options (line 294) | type Options struct
function New (line 323) | func New(options Options) *Interpreter {
constant bltnAlignof (line 403) | bltnAlignof = "unsafe.Alignof"
constant bltnAppend (line 404) | bltnAppend = "append"
constant bltnCap (line 405) | bltnCap = "cap"
constant bltnClose (line 406) | bltnClose = "close"
constant bltnComplex (line 407) | bltnComplex = "complex"
constant bltnImag (line 408) | bltnImag = "imag"
constant bltnCopy (line 409) | bltnCopy = "copy"
constant bltnDelete (line 410) | bltnDelete = "delete"
constant bltnLen (line 411) | bltnLen = "len"
constant bltnMake (line 412) | bltnMake = "make"
constant bltnNew (line 413) | bltnNew = "new"
constant bltnOffsetof (line 414) | bltnOffsetof = "unsafe.Offsetof"
constant bltnPanic (line 415) | bltnPanic = "panic"
constant bltnPrint (line 416) | bltnPrint = "print"
constant bltnPrintln (line 417) | bltnPrintln = "println"
constant bltnReal (line 418) | bltnReal = "real"
constant bltnRecover (line 419) | bltnRecover = "recover"
constant bltnSizeof (line 420) | bltnSizeof = "unsafe.Sizeof"
function initUniverse (line 423) | func initUniverse() *scope {
function isFile (line 549) | func isFile(filesystem fs.FS, path string) bool {
function ignoreScannerError (line 612) | func ignoreScannerError(e *scanner.Error, s string) bool {
function key2name (line 650) | func key2name(name string) string {
function fixKey (line 654) | func fixKey(k string) string {
function doPrompt (line 738) | func doPrompt(out io.Writer) func(v reflect.Value) {
function getPrompt (line 748) | func getPrompt(in io.Reader, out io.Writer) func(reflect.Value) {
FILE: interp/interp_chan_test.go
type IntChan (line 11) | type IntChan
function NewIntChan (line 14) | func NewIntChan() IntChan {
function TestSendToBinaryChannelTypeAlias (line 18) | func TestSendToBinaryChannelTypeAlias(t *testing.T) {
function TestSendToSourceDefinedChannel (line 50) | func TestSendToSourceDefinedChannel(t *testing.T) {
function TestSendToSourceDefinedChannelTypeAlias (line 71) | func TestSendToSourceDefinedChannelTypeAlias(t *testing.T) {
FILE: interp/interp_consistent_test.go
function TestInterpConsistencyBuild (line 23) | func TestInterpConsistencyBuild(t *testing.T) {
function TestInterpErrorConsistency (line 205) | func TestInterpErrorConsistency(t *testing.T) {
FILE: interp/interp_eval_test.go
function init (line 27) | func init() { log.SetFlags(log.Lshortfile) }
type testCase (line 34) | type testCase struct
function TestEvalArithmetic (line 40) | func TestEvalArithmetic(t *testing.T) {
function TestEvalShift (line 76) | func TestEvalShift(t *testing.T) {
function TestOpVarConst (line 87) | func TestOpVarConst(t *testing.T) {
function TestEvalStar (line 98) | func TestEvalStar(t *testing.T) {
function TestEvalAssign (line 106) | func TestEvalAssign(t *testing.T) {
function TestEvalBuiltin (line 142) | func TestEvalBuiltin(t *testing.T) {
function TestEvalDecl (line 196) | func TestEvalDecl(t *testing.T) {
function TestEvalDeclWithExpr (line 208) | func TestEvalDeclWithExpr(t *testing.T) {
function TestEvalTypeSpec (line 217) | func TestEvalTypeSpec(t *testing.T) {
function TestEvalFunc (line 227) | func TestEvalFunc(t *testing.T) {
function TestEvalImport (line 240) | func TestEvalImport(t *testing.T) {
function TestEvalStdout (line 250) | func TestEvalStdout(t *testing.T) {
function TestEvalNil (line 266) | func TestEvalNil(t *testing.T) {
function TestEvalStruct0 (line 324) | func TestEvalStruct0(t *testing.T) {
function TestEvalStruct1 (line 372) | func TestEvalStruct1(t *testing.T) {
function TestEvalComposite0 (line 396) | func TestEvalComposite0(t *testing.T) {
function TestEvalCompositeBin0 (line 416) | func TestEvalCompositeBin0(t *testing.T) {
function TestEvalComparison (line 439) | func TestEvalComparison(t *testing.T) {
function TestEvalCompositeArray (line 484) | func TestEvalCompositeArray(t *testing.T) {
function TestEvalCompositeMap (line 500) | func TestEvalCompositeMap(t *testing.T) {
function TestEvalCompositeStruct (line 511) | func TestEvalCompositeStruct(t *testing.T) {
function TestEvalSliceExpression (line 531) | func TestEvalSliceExpression(t *testing.T) {
function TestEvalConversion (line 557) | func TestEvalConversion(t *testing.T) {
function TestEvalUnary (line 568) | func TestEvalUnary(t *testing.T) {
function TestEvalMethod (line 580) | func TestEvalMethod(t *testing.T) {
function TestEvalChan (line 619) | func TestEvalChan(t *testing.T) {
function TestEvalFunctionCallWithFunctionParam (line 653) | func TestEvalFunctionCallWithFunctionParam(t *testing.T) {
function TestEvalCall (line 672) | func TestEvalCall(t *testing.T) {
function TestEvalBinCall (line 715) | func TestEvalBinCall(t *testing.T) {
function TestEvalReflect (line 732) | func TestEvalReflect(t *testing.T) {
function TestEvalMissingSymbol (line 755) | func TestEvalMissingSymbol(t *testing.T) {
function TestEvalWithContext (line 783) | func TestEvalWithContext(t *testing.T) {
function runTests (line 879) | func runTests(t *testing.T, i *interp.Interpreter, tests []testCase) {
function eval (line 897) | func eval(t *testing.T, i *interp.Interpreter, src string) reflect.Value {
function assertEval (line 910) | func assertEval(t *testing.T, i *interp.Interpreter, src, expectedError,...
function TestMultiEval (line 935) | func TestMultiEval(t *testing.T) {
function TestMultiEvalNoName (line 983) | func TestMultiEvalNoName(t *testing.T) {
constant goMinorVersionTest (line 1017) | goMinorVersionTest = 16
function TestHasIOFS (line 1019) | func TestHasIOFS(t *testing.T) {
function TestImportPathIsKey (line 1097) | func TestImportPathIsKey(t *testing.T) {
function TestConcurrentEvals (line 1175) | func TestConcurrentEvals(t *testing.T) {
function TestConcurrentEvals2 (line 1236) | func TestConcurrentEvals2(t *testing.T) {
function TestConcurrentEvals3 (line 1299) | func TestConcurrentEvals3(t *testing.T) {
function TestConcurrentComposite1 (line 1374) | func TestConcurrentComposite1(t *testing.T) {
function TestConcurrentComposite2 (line 1378) | func TestConcurrentComposite2(t *testing.T) {
function testConcurrentComposite (line 1382) | func testConcurrentComposite(t *testing.T, filePath string) {
function TestEvalREPL (line 1426) | func TestEvalREPL(t *testing.T) {
type safeBuffer (line 1565) | type safeBuffer struct
method Read (line 1570) | func (sb *safeBuffer) Read(p []byte) (int, error) {
method String (line 1574) | func (sb *safeBuffer) String() string {
method Write (line 1580) | func (sb *safeBuffer) Write(p []byte) (int, error) {
constant CITimeoutMultiplier (line 1588) | CITimeoutMultiplier = 3
function Sleep (line 1592) | func Sleep(d time.Duration) {
function applyCIMultiplier (line 1597) | func applyCIMultiplier(timeout time.Duration) time.Duration {
function TestREPLCommands (line 1609) | func TestREPLCommands(t *testing.T) {
function TestStdio (line 1704) | func TestStdio(t *testing.T) {
function TestNoGoFiles (line 1719) | func TestNoGoFiles(t *testing.T) {
function TestIssue1142 (line 1729) | func TestIssue1142(t *testing.T) {
type Issue1149Array (line 1736) | type Issue1149Array
method Foo (line 1738) | func (v Issue1149Array) Foo() string { return "foo" }
method Bar (line 1739) | func (v *Issue1149Array) Bar() string { return "foo" }
function TestIssue1149 (line 1741) | func TestIssue1149(t *testing.T) {
function TestIssue1150 (line 1765) | func TestIssue1150(t *testing.T) {
function TestIssue1151 (line 1798) | func TestIssue1151(t *testing.T) {
function TestPassArgs (line 1819) | func TestPassArgs(t *testing.T) {
function TestRestrictedEnv (line 1830) | func TestRestrictedEnv(t *testing.T) {
function TestIssue1388 (line 1854) | func TestIssue1388(t *testing.T) {
function TestIssue1383 (line 1877) | func TestIssue1383(t *testing.T) {
function TestIssue1623 (line 1910) | func TestIssue1623(t *testing.T) {
FILE: interp/interp_export_test.go
type Helloer (line 10) | type Helloer interface
function Hi (line 14) | func Hi(h Helloer) {
type Wrap (line 36) | type Wrap struct
method Hello (line 41) | func (w Wrap) Hello() { w.DoHello() }
function TestExportsSemantics (line 43) | func TestExportsSemantics(t *testing.T) {
function TestInterface (line 79) | func TestInterface(t *testing.T) {
type T (line 108) | type T struct
method Bar (line 110) | func (t T) Bar(s ...string) {}
function TestCallBinVariadicMethod (line 112) | func TestCallBinVariadicMethod(t *testing.T) {
FILE: interp/interp_file_test.go
function TestFile (line 28) | func TestFile(t *testing.T) {
function runCheck (line 55) | func runCheck(t *testing.T, p string) {
function wantedFromComment (line 102) | func wantedFromComment(p string) (res string, goPath string, err bool) {
FILE: interp/interp_issue_1634_test.go
function TestExportClosureArg (line 11) | func TestExportClosureArg(t *testing.T) {
FILE: interp/interp_test.go
function init (line 12) | func init() { log.SetFlags(log.Lshortfile) }
function TestIsNatural (line 14) | func TestIsNatural(t *testing.T) {
function TestGlobals (line 195) | func TestGlobals(t *testing.T) {
FILE: interp/op.go
function add (line 13) | func add(n *node) {
function addConst (line 197) | func addConst(n *node) {
function and (line 222) | func and(n *node) {
function andConst (line 307) | func andConst(n *node) {
function andNot (line 326) | func andNot(n *node) {
function andNotConst (line 411) | func andNotConst(n *node) {
function mul (line 430) | func mul(n *node) {
function mulConst (line 583) | func mulConst(n *node) {
function or (line 606) | func or(n *node) {
function orConst (line 691) | func orConst(n *node) {
function quo (line 710) | func quo(n *node) {
function quoConst (line 863) | func quoConst(n *node) {
function rem (line 895) | func rem(n *node) {
function remConst (line 980) | func remConst(n *node) {
function shl (line 999) | func shl(n *node) {
function shlConst (line 1084) | func shlConst(n *node) {
function shr (line 1103) | func shr(n *node) {
function shrConst (line 1188) | func shrConst(n *node) {
function sub (line 1207) | func sub(n *node) {
function subConst (line 1360) | func subConst(n *node) {
function xor (line 1383) | func xor(n *node) {
function xorConst (line 1468) | func xorConst(n *node) {
function addAssign (line 1489) | func addAssign(n *node) {
function andAssign (line 1623) | func andAssign(n *node) {
function andNotAssign (line 1690) | func andNotAssign(n *node) {
function mulAssign (line 1757) | func mulAssign(n *node) {
function orAssign (line 1869) | func orAssign(n *node) {
function quoAssign (line 1936) | func quoAssign(n *node) {
function remAssign (line 2048) | func remAssign(n *node) {
function shlAssign (line 2115) | func shlAssign(n *node) {
function shrAssign (line 2182) | func shrAssign(n *node) {
function subAssign (line 2249) | func subAssign(n *node) {
function xorAssign (line 2361) | func xorAssign(n *node) {
function dec (line 2428) | func dec(n *node) {
function inc (line 2484) | func inc(n *node) {
function bitNotConst (line 2540) | func bitNotConst(n *node) {
function negConst (line 2559) | func negConst(n *node) {
function notConst (line 2582) | func notConst(n *node) {
function posConst (line 2598) | func posConst(n *node) {
function equal (line 2621) | func equal(n *node) {
function greater (line 3221) | func greater(n *node) {
function greaterEqual (line 3549) | func greaterEqual(n *node) {
function lower (line 3877) | func lower(n *node) {
function lowerEqual (line 4205) | func lowerEqual(n *node) {
function notEqual (line 4533) | func notEqual(n *node) {
FILE: interp/program.go
type Program (line 15) | type Program struct
method PackageName (line 22) | func (p *Program) PackageName() string {
method FileSet (line 28) | func (interp *Interpreter) FileSet() *token.FileSet {
method Compile (line 33) | func (interp *Interpreter) Compile(src string) (*Program, error) {
method CompilePath (line 38) | func (interp *Interpreter) CompilePath(path string) (*Program, error) {
method compileSrc (line 52) | func (interp *Interpreter) compileSrc(src, name string, inc bool) (*Prog...
method CompileAST (line 75) | func (interp *Interpreter) CompileAST(n ast.Node) (*Program, error) {
method Execute (line 142) | func (interp *Interpreter) Execute(p *Program) (res reflect.Value, err e...
method ExecuteWithContext (line 190) | func (interp *Interpreter) ExecuteWithContext(ctx context.Context, p *Pr...
FILE: interp/realfs.go
type realFS (line 12) | type realFS struct
method Open (line 15) | func (dir realFS) Open(name string) (fs.File, error) {
FILE: interp/run.go
type bltn (line 15) | type bltn
type bltnGenerator (line 18) | type bltnGenerator
function init (line 77) | func init() {
type valueInterface (line 86) | type valueInterface struct
function init (line 93) | func init() {
method run (line 98) | func (interp *Interpreter) run(n *node, cf *frame) {
function isExecNode (line 122) | func isExecNode(n *node, exec bltn) bool {
function originalExecNode (line 134) | func originalExecNode(n *node, exec bltn) *node {
function panicFunc (line 183) | func panicFunc(s *scope) string {
function runCfg (line 205) | func runCfg(n *node, f *frame, funcNode, callNode *node) {
function stripReceiverFromArgs (line 272) | func stripReceiverFromArgs(signature string) (string, error) {
function typeAssertShort (line 283) | func typeAssertShort(n *node) {
function typeAssertLong (line 287) | func typeAssertLong(n *node) {
function typeAssertStatus (line 291) | func typeAssertStatus(n *node) {
function typeAssert (line 295) | func typeAssert(n *node, withResult, withOk bool) {
function canAssertTypes (line 556) | func canAssertTypes(src, dest reflect.Type) bool {
function firstMissingMethod (line 575) | func firstMissingMethod(src, dest reflect.Type) string {
function convert (line 585) | func convert(n *node) {
function assignFromCall (line 639) | func assignFromCall(n *node) {
function assign (line 675) | func assign(n *node) {
function not (line 795) | func not(n *node) {
function addr (line 818) | func addr(n *node) {
function deref (line 840) | func deref(n *node) {
function _print (line 864) | func _print(n *node) {
function _println (line 883) | func _println(n *node) {
function _recover (line 903) | func _recover(n *node) {
function _panic (line 927) | func _panic(n *node) {
function genBuiltinDeferWrapper (line 935) | func genBuiltinDeferWrapper(n *node, in, out []func(*frame) reflect.Valu...
function genFunctionWrapper (line 974) | func genFunctionWrapper(n *node) func(*frame) reflect.Value {
function genInterfaceWrapper (line 1062) | func genInterfaceWrapper(n *node, typ reflect.Type) func(*frame) reflect...
function methodByName (line 1145) | func methodByName(value reflect.Value, name string, index []int) (v refl...
function checkFieldIndex (line 1166) | func checkFieldIndex(typ reflect.Type, index []int) bool {
function call (line 1187) | func call(n *node) {
function getFrame (line 1431) | func getFrame(f *frame, l int) *frame {
function callBin (line 1449) | func callBin(n *node) {
function getIndexBinMethod (line 1692) | func getIndexBinMethod(n *node) {
function getIndexBinElemMethod (line 1708) | func getIndexBinElemMethod(n *node) {
function getIndexBinPtrMethod (line 1722) | func getIndexBinPtrMethod(n *node) {
function getIndexArray (line 1737) | func getIndexArray(n *node) {
function getIndexMap (line 1786) | func getIndexMap(n *node) {
function getIndexMap2 (line 1844) | func getIndexMap2(n *node) {
function getFunc (line 1902) | func getFunc(n *node) {
function getMethod (line 1956) | func getMethod(n *node) {
function getMethodByName (line 1970) | func getMethodByName(n *node) {
function lookupMethodValue (line 2046) | func lookupMethodValue(val valueInterface, name string) (r reflect.Value...
function getIndexSeq (line 2074) | func getIndexSeq(n *node) {
function getPtrIndexSeq (line 2111) | func getPtrIndexSeq(n *node) {
function getIndexSeqField (line 2136) | func getIndexSeqField(n *node) {
function getIndexSeqPtrMethod (line 2179) | func getIndexSeqPtrMethod(n *node) {
function getIndexSeqMethod (line 2215) | func getIndexSeqMethod(n *node) {
function neg (line 2251) | func neg(n *node) {
function pos (line 2310) | func pos(n *node) {
function bitNot (line 2321) | func bitNot(n *node) {
function land (line 2356) | func land(n *node) {
function lor (line 2389) | func lor(n *node) {
function nop (line 2422) | func nop(n *node) {
function branch (line 2430) | func branch(n *node) {
function _return (line 2443) | func _return(n *node) {
function arrayLit (line 2519) | func arrayLit(n *node) {
function mapLit (line 2563) | func mapLit(n *node) {
function compositeBinMap (line 2588) | func compositeBinMap(n *node) {
function compositeBinSlice (line 2620) | func compositeBinSlice(n *node) {
function doCompositeBinStruct (line 2667) | func doCompositeBinStruct(n *node, hasType bool) {
function compositeBinStruct (line 2719) | func compositeBinStruct(n *node) { doCompositeBinStruct(n, true) }
function compositeBinStructNotype (line 2720) | func compositeBinStructNotype(n *node) { doCompositeBinStruct(n, false) }
function destType (line 2722) | func destType(n *node) *itype {
function doComposite (line 2731) | func doComposite(n *node, hasType bool, keyed bool) {
function doCompositeLit (line 2796) | func doCompositeLit(n *node, hasType bool) {
function compositeLit (line 2800) | func compositeLit(n *node) { doCompositeLit(n, true) }
function compositeLitNotype (line 2801) | func compositeLitNotype(n *node) { doCompositeLit(n, false) }
function doCompositeLitKeyed (line 2804) | func doCompositeLitKeyed(n *node, hasType bool) {
function compositeLitKeyed (line 2808) | func compositeLitKeyed(n *node) { doCompositeLitKeyed(n, true) }
function compositeLitKeyedNotype (line 2809) | func compositeLitKeyedNotype(n *node) { doCompositeLitKeyed(n, false) }
function empty (line 2811) | func empty(n *node) {}
function _range (line 2815) | func _range(n *node) {
function rangeInt (line 2890) | func rangeInt(n *node) {
function loopVarKey (line 2919) | func loopVarKey(n *node) {
function loopVarVal (line 2931) | func loopVarVal(n *node) {
function loopVarFor (line 2943) | func loopVarFor(n *node) {
function rangeChan (line 2955) | func rangeChan(n *node) {
function rangeMap (line 2978) | func rangeMap(n *node) {
function _case (line 3015) | func _case(n *node) {
function implementsInterface (line 3213) | func implementsInterface(v reflect.Value, t *itype) bool {
function appendSlice (line 3229) | func appendSlice(n *node) {
function _append (line 3249) | func _append(n *node) {
function _cap (line 3315) | func _cap(n *node) {
function _copy (line 3333) | func _copy(n *node) {
function _close (line 3343) | func _close(n *node) {
function _complex (line 3352) | func _complex(n *node) {
function _imag (line 3383) | func _imag(n *node) {
function _real (line 3402) | func _real(n *node) {
function _delete (line 3421) | func _delete(n *node) {
function capConst (line 3433) | func capConst(n *node) {
function lenConst (line 3438) | func lenConst(n *node) {
function _len (line 3452) | func _len(n *node) {
function _new (line 3480) | func _new(n *node) {
function _make (line 3501) | func _make(n *node) {
function reset (line 3557) | func reset(n *node) {
function recv (line 3594) | func recv(n *node) {
function recv2 (line 3670) | func recv2(n *node) {
function convertLiteralValue (line 3710) | func convertLiteralValue(n *node, t reflect.Type) {
function convertConstantValue (line 3727) | func convertConstantValue(n *node) {
function send (line 3762) | func send(n *node) {
function clauseChanDir (line 3797) | func clauseChanDir(n *node) (*node, *node, *node, reflect.SelectDir) {
function _select (line 3826) | func _select(n *node) {
function slice (line 3907) | func slice(n *node) {
function slice0 (line 3942) | func slice0(n *node) {
function isNilChild (line 3973) | func isNilChild(child int) func(n *node) {
function isNotNil (line 4059) | func isNotNil(n *node) {
function complexConst (line 4145) | func complexConst(n *node) {
function imagConst (line 4152) | func imagConst(n *node) {
function realConst (line 4159) | func realConst(n *node) {
FILE: interp/scope.go
type sKind (line 10) | type sKind
method String (line 39) | func (k sKind) String() string {
constant undefSym (line 14) | undefSym sKind = iota
constant binSym (line 15) | binSym
constant bltnSym (line 16) | bltnSym
constant constSym (line 17) | constSym
constant funcSym (line 18) | funcSym
constant labelSym (line 19) | labelSym
constant pkgSym (line 20) | pkgSym
constant typeSym (line 21) | typeSym
constant varTypeSym (line 22) | varTypeSym
constant varSym (line 23) | varSym
type symbol (line 48) | type symbol struct
type scope (line 75) | type scope struct
method push (line 91) | func (s *scope) push(indirect bool) *scope {
method pushBloc (line 109) | func (s *scope) pushBloc() *scope { return s.push(false) }
method pushFunc (line 110) | func (s *scope) pushFunc() *scope { return s.push(true) }
method pop (line 112) | func (s *scope) pop() *scope {
method upperLevel (line 120) | func (s *scope) upperLevel() *scope {
method lookup (line 131) | func (s *scope) lookup(ident string) (*symbol, int, bool) {
method isRedeclared (line 148) | func (s *scope) isRedeclared(n *node) bool {
method rangeChanType (line 156) | func (s *scope) rangeChanType(n *node) *itype {
method fixType (line 185) | func (s *scope) fixType(t *itype) *itype {
method getType (line 202) | func (s *scope) getType(ident string) *itype {
method add (line 213) | func (s *scope) add(typ *itype) (index int) {
method initScopePkg (line 226) | func (interp *Interpreter) initScopePkg(pkgID, pkgName string) *scope {
method Globals (line 241) | func (interp *Interpreter) Globals() map[string]reflect.Value {
FILE: interp/self_example_test.go
function ExampleInterpreter_self (line 10) | func ExampleInterpreter_self() {
FILE: interp/src.go
method importSrc (line 15) | func (interp *Interpreter) importSrc(rPath, importPath string, skipTest ...
method rootFromSourceLocation (line 179) | func (interp *Interpreter) rootFromSourceLocation() (string, error) {
method pkgDir (line 205) | func (interp *Interpreter) pkgDir(goPath string, root, importPath string...
constant vendor (line 235) | vendor = "vendor"
function previousRoot (line 238) | func previousRoot(filesystem fs.FS, rootPath, root string) (string, erro...
function effectivePkg (line 303) | func effectivePkg(root, p string) string {
function isPathRelative (line 333) | func isPathRelative(s string) bool {
FILE: interp/src_test.go
function Test_effectivePkg (line 10) | func Test_effectivePkg(t *testing.T) {
function Test_pkgDir (line 51) | func Test_pkgDir(t *testing.T) {
function Test_previousRoot (line 200) | func Test_previousRoot(t *testing.T) {
FILE: interp/testdata/concurrent/composite/composite_lit.go
type foo (line 7) | type foo struct
function main (line 11) | func main() {
FILE: interp/testdata/concurrent/composite/composite_sparse.go
type foo (line 7) | type foo struct
function main (line 11) | func main() {
FILE: interp/testdata/concurrent/hello1.go
function main (line 5) | func main() {
FILE: interp/testdata/concurrent/hello2.go
function main (line 5) | func main() {
FILE: interp/testdata/multi/731/sample1.go
function PrintA (line 5) | func PrintA() {
FILE: interp/testdata/multi/731/sample2.go
function PrintB (line 5) | func PrintB() {
FILE: interp/testdata/multi/731/sample3.go
function main (line 5) | func main() {
FILE: interp/trace.go
function traceIndent (line 12) | func traceIndent(n *node) string {
function tracePrintln (line 18) | func tracePrintln(n *node, v ...any) {
function tracePrintTree (line 29) | func tracePrintTree(n *node, v ...any) {
function ptrAddr (line 41) | func ptrAddr(v any) string {
function valString (line 49) | func valString(v reflect.Value) string {
method String (line 59) | func (n *node) String() string {
method depth (line 85) | func (n *node) depth() int {
method String (line 92) | func (sy *symbol) String() string {
method String (line 109) | func (t *itype) String() string {
FILE: interp/type.go
type tcat (line 15) | type tcat
method String (line 101) | func (c tcat) String() string {
constant nilT (line 19) | nilT tcat = iota
constant arrayT (line 20) | arrayT
constant binT (line 21) | binT
constant binPkgT (line 22) | binPkgT
constant boolT (line 23) | boolT
constant builtinT (line 24) | builtinT
constant chanT (line 25) | chanT
constant chanSendT (line 26) | chanSendT
constant chanRecvT (line 27) | chanRecvT
constant comparableT (line 28) | comparableT
constant complex64T (line 29) | complex64T
constant complex128T (line 30) | complex128T
constant constraintT (line 31) | constraintT
constant errorT (line 32) | errorT
constant float32T (line 33) | float32T
constant float64T (line 34) | float64T
constant funcT (line 35) | funcT
constant genericT (line 36) | genericT
constant interfaceT (line 37) | interfaceT
constant intT (line 38) | intT
constant int8T (line 39) | int8T
constant int16T (line 40) | int16T
constant int32T (line 41) | int32T
constant int64T (line 42) | int64T
constant linkedT (line 43) | linkedT
constant mapT (line 44) | mapT
constant ptrT (line 45) | ptrT
constant sliceT (line 46) | sliceT
constant srcPkgT (line 47) | srcPkgT
constant stringT (line 48) | stringT
constant structT (line 49) | structT
constant uintT (line 50) | uintT
constant uint8T (line 51) | uint8T
constant uint16T (line 52) | uint16T
constant uint32T (line 53) | uint32T
constant uint64T (line 54) | uint64T
constant uintptrT (line 55) | uintptrT
constant valueT (line 56) | valueT
constant variadicT (line 57) | variadicT
constant maxT (line 58) | maxT
type structField (line 109) | type structField struct
type itype (line 117) | type itype struct
method finalize (line 1268) | func (t *itype) finalize() (*itype, error) {
method addMethod (line 1294) | func (t *itype) addMethod(n *node) {
method numIn (line 1303) | func (t *itype) numIn() int {
method in (line 1320) | func (t *itype) in(i int) *itype {
method numOut (line 1339) | func (t *itype) numOut() int {
method out (line 1356) | func (t *itype) out(i int) *itype {
method concrete (line 1368) | func (t *itype) concrete() *itype {
method underlying (line 1375) | func (t *itype) underlying() *itype {
method isVariadic (line 1396) | func (t *itype) isVariadic() bool {
method isComplete (line 1409) | func (t *itype) isComplete() bool { return isComplete(t, map[string]bo...
method comparable (line 1457) | func (t *itype) comparable() bool {
method assignableTo (line 1462) | func (t *itype) assignableTo(o *itype) bool {
method convertibleTo (line 1512) | func (t *itype) convertibleTo(o *itype) bool {
method ordered (line 1530) | func (t *itype) ordered() bool {
method equals (line 1536) | func (t *itype) equals(o *itype) bool {
method matchDefault (line 1550) | func (t *itype) matchDefault(o *itype) bool {
method methods (line 1576) | func (t *itype) methods() methodSet {
method id (line 1644) | func (t *itype) id() (res string) {
method zero (line 1676) | func (t *itype) zero() (v reflect.Value, err error) {
method fieldIndex (line 1697) | func (t *itype) fieldIndex(name string) int {
method fieldSeq (line 1711) | func (t *itype) fieldSeq(seq []int) *itype {
method lookupField (line 1720) | func (t *itype) lookupField(name string) []int {
method lookupBinField (line 1760) | func (t *itype) lookupBinField(name string) (s reflect.StructField, in...
method methodCallType (line 1790) | func (t *itype) methodCallType() reflect.Type {
method resolveAlias (line 1804) | func (t *itype) resolveAlias() *itype {
method getMethod (line 1812) | func (t *itype) getMethod(name string) *node {
method lookupMethod (line 1823) | func (t *itype) lookupMethod(name string) (*node, []int) {
method lookupMethod2 (line 1827) | func (t *itype) lookupMethod2(name string, seen map[*itype]bool) (*nod...
method interfaceMethod (line 1857) | func (t *itype) interfaceMethod(name string) *itype {
method interfaceMethod2 (line 1861) | func (t *itype) interfaceMethod2(name string, seen map[*itype]bool) *i...
method methodDepth (line 1890) | func (t *itype) methodDepth(name string) int {
method lookupBinMethod (line 1901) | func (t *itype) lookupBinMethod(name string) (m reflect.Method, index ...
method lookupBinMethod2 (line 1905) | func (t *itype) lookupBinMethod2(name string, seen map[*itype]bool) (m...
method fixDummy (line 2008) | func (t *itype) fixDummy(typ reflect.Type) reflect.Type {
method refType (line 2052) | func (t *itype) refType(ctx *refTypeContext) reflect.Type {
method TypeOf (line 2216) | func (t *itype) TypeOf() reflect.Type {
method frameType (line 2220) | func (t *itype) frameType() (r reflect.Type) {
method implements (line 2249) | func (t *itype) implements(it *itype) bool {
method defaultType (line 2265) | func (t *itype) defaultType(v reflect.Value, sc *scope) *itype {
method isNil (line 2311) | func (t *itype) isNil() bool { return t.cat == nilT }
method hasNil (line 2313) | func (t *itype) hasNil() bool {
method elem (line 2327) | func (t *itype) elem() *itype {
type generic (line 142) | type generic struct
function untypedBool (line 144) | func untypedBool(n *node) *itype {
function untypedString (line 148) | func untypedString(n *node) *itype {
function untypedRune (line 152) | func untypedRune(n *node) *itype {
function untypedInt (line 156) | func untypedInt(n *node) *itype {
function untypedFloat (line 160) | func untypedFloat(n *node) *itype {
function untypedComplex (line 164) | func untypedComplex(n *node) *itype {
function errorMethodType (line 168) | func errorMethodType(sc *scope) *itype {
type itypeOption (line 172) | type itypeOption
function isBinMethod (line 174) | func isBinMethod() itypeOption {
function withRecv (line 180) | func withRecv(typ *itype) itypeOption {
function withNode (line 186) | func withNode(n *node) itypeOption {
function withScope (line 192) | func withScope(sc *scope) itypeOption {
function withUntyped (line 198) | func withUntyped(b bool) itypeOption {
function valueTOf (line 205) | func valueTOf(rtype reflect.Type, opts ...itypeOption) *itype {
function wrapperValueTOf (line 217) | func wrapperValueTOf(rtype reflect.Type, val *itype, opts ...itypeOption...
function variadicOf (line 225) | func variadicOf(val *itype, opts ...itypeOption) *itype {
function ptrOf (line 234) | func ptrOf(val *itype, opts ...itypeOption) *itype {
function namedOf (line 247) | func namedOf(val *itype, path, name string, opts ...itypeOption) *itype {
function funcOf (line 260) | func funcOf(args []*itype, ret []*itype, opts ...itypeOption) *itype {
type chanDir (line 283) | type chanDir
constant chanSendRecv (line 286) | chanSendRecv chanDir = iota
constant chanSend (line 287) | chanSend
constant chanRecv (line 288) | chanRecv
function chanOf (line 292) | func chanOf(val *itype, dir chanDir, opts ...itypeOption) *itype {
function arrayOf (line 311) | func arrayOf(val *itype, l int, opts ...itypeOption) *itype {
function sliceOf (line 321) | func sliceOf(val *itype, opts ...itypeOption) *itype {
function mapOf (line 330) | func mapOf(key, val *itype, opts ...itypeOption) *itype {
function interfaceOf (line 339) | func interfaceOf(t *itype, fields []structField, constraint, ulconstrain...
function structOf (line 359) | func structOf(t *itype, fields []structField, opts ...itypeOption) *itype {
function genericOf (line 377) | func genericOf(val *itype, name, path string, opts ...itypeOption) *itype {
function seenNode (line 389) | func seenNode(ns []*node, n *node) bool {
function nodeType (line 399) | func nodeType(interp *Interpreter, sc *scope, n *node) (*itype, error) {
function nodeType2 (line 403) | func nodeType2(interp *Interpreter, sc *scope, n *node, seen []*node) (t...
function genType (line 1130) | func genType(interp *Interpreter, sc *scope, name string, lt *itype, typ...
function genMethod (line 1155) | func genMethod(interp *Interpreter, sc *scope, t *itype, nod *node, type...
function findPackageType (line 1183) | func findPackageType(interp *Interpreter, sc *scope, n *node) *itype {
function isBuiltinCall (line 1197) | func isBuiltinCall(n *node, sc *scope) bool {
function typeName (line 1211) | func typeName(n *node) string {
function structName (line 1218) | func structName(n *node) string {
function fieldName (line 1226) | func fieldName(n *node) string {
function init (line 1243) | func init() {
function typeDefined (line 1383) | func typeDefined(t1, t2 *itype) bool {
function isComplete (line 1411) | func isComplete(t *itype, visited map[string]bool) bool {
type methodSet (line 1555) | type methodSet
method contains (line 1558) | func (m methodSet) contains(n methodSet) bool {
method equals (line 1571) | func (m methodSet) equals(n methodSet) bool {
function fixPossibleConstType (line 1655) | func fixPossibleConstType(t reflect.Type) (r reflect.Type) {
function lookupFieldOrMethod (line 1932) | func lookupFieldOrMethod(t *itype, name string) *itype {
function exportName (line 1962) | func exportName(s string) string {
type refTypeContext (line 1976) | type refTypeContext struct
method Clone (line 1995) | func (c *refTypeContext) Clone() *refTypeContext {
method isComplete (line 1999) | func (c *refTypeContext) isComplete() bool {
function hasElem (line 2334) | func hasElem(t reflect.Type) bool {
function constToInt (line 2342) | func constToInt(c constant.Value) int {
function constToString (line 2350) | func constToString(v reflect.Value) string {
function wrappedType (line 2355) | func wrappedType(n *node) *itype {
function isShiftNode (line 2362) | func isShiftNode(n *node) bool {
function chanElement (line 2371) | func chanElement(t *itype) *itype {
function isBool (line 2383) | func isBool(t *itype) bool { return t.TypeOf().Kind() == reflect.Bool }
function isChan (line 2384) | func isChan(t *itype) bool { return t.TypeOf().Kind() == reflect.Chan }
function isFunc (line 2385) | func isFunc(t *itype) bool { return t.TypeOf().Kind() == reflect.Func }
function isMap (line 2386) | func isMap(t *itype) bool { return t.TypeOf().Kind() == reflect.Map }
function isPtr (line 2387) | func isPtr(t *itype) bool { return t.TypeOf().Kind() == reflect.Ptr }
function isEmptyInterface (line 2389) | func isEmptyInterface(t *itype) bool {
function isGeneric (line 2393) | func isGeneric(t *itype) bool {
function isNamedFuncSrc (line 2397) | func isNamedFuncSrc(t *itype) bool {
function isFuncSrc (line 2401) | func isFuncSrc(t *itype) bool {
function isPtrSrc (line 2405) | func isPtrSrc(t *itype) bool {
function isSendChan (line 2409) | func isSendChan(t *itype) bool {
function isArray (line 2414) | func isArray(t *itype) bool {
function isInterfaceSrc (line 2422) | func isInterfaceSrc(t *itype) bool {
function isInterfaceBin (line 2426) | func isInterfaceBin(t *itype) bool {
function isInterface (line 2430) | func isInterface(t *itype) bool {
function isBin (line 2434) | func isBin(t *itype) bool {
function isStruct (line 2445) | func isStruct(t *itype) bool {
function isConstType (line 2461) | func isConstType(t *itype) bool {
function isInt (line 2466) | func isInt(t reflect.Type) bool {
function isUint (line 2477) | func isUint(t reflect.Type) bool {
function isComplex (line 2488) | func isComplex(t reflect.Type) bool {
function isFloat (line 2499) | func isFloat(t reflect.Type) bool {
function isByteArray (line 2510) | func isByteArray(t reflect.Type) bool {
function isFloat32 (line 2518) | func isFloat32(t reflect.Type) bool { return t != nil && t.Kind() == ref...
function isFloat64 (line 2519) | func isFloat64(t reflect.Type) bool { return t != nil && t.Kind() == ref...
function isNumber (line 2520) | func isNumber(t reflect.Type) bool {
function isBoolean (line 2523) | func isBoolean(t reflect.Type) bool { return t != nil && t.Kind() ...
function isString (line 2524) | func
Copy disabled (too large)
Download .json
Condensed preview — 1654 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (20,729K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 1425,
"preview": "name: Bug Report\ndescription: Create a report to help us improve\n\nbody:\n - type: markdown\n attributes:\n value: "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 337,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Questions\n url: https://community.traefik.io/c/yaegi\n about: "
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.yml",
"chars": 878,
"preview": "name: Feature request\ndescription: Propose a change to Yaegi\n\nbody:\n - type: markdown\n attributes:\n value: |\n "
},
{
"path": ".github/workflows/go-cross.yml",
"chars": 1452,
"preview": "name: Build Cross OS\n\non:\n push:\n branches:\n - master\n pull_request:\n\njobs:\n\n cross:\n name: Go\n runs-on"
},
{
"path": ".github/workflows/main.yml",
"chars": 3126,
"preview": "name: Main\n\non:\n push:\n branches:\n - master\n pull_request:\n\nenv:\n GO_VERSION: stable\n GOLANGCI_LINT_VERSION:"
},
{
"path": ".github/workflows/release.yml",
"chars": 769,
"preview": "name: Release\n\non:\n push:\n tags:\n - v[0-9]+.[0-9]+*\n\nenv:\n GO_VERSION: stable\n\njobs:\n\n release:\n name: Cre"
},
{
"path": ".gitignore",
"chars": 114,
"preview": ".*.swo\n.*.swp\n*.dot\n*.out\n.idea/\n/yaegi\ninternal/cmd/extract/extract\nexample/inception/inception\n_test/tmp/\n/dist\n"
},
{
"path": ".golangci.yml",
"chars": 1487,
"preview": "version: \"2\"\nlinters:\n default: standard\n enable:\n - depguard\n - goconst\n - godot\n - grouper\n - misspel"
},
{
"path": ".goreleaser.yml",
"chars": 1210,
"preview": "project_name: yaegi\n\nbuilds:\n - id: yaegi\n binary: yaegi\n main: ./cmd/yaegi/\n\n goos:\n - darwin\n - li"
},
{
"path": "CONTRIBUTING.md",
"chars": 1169,
"preview": "# Contributing\n\nYaegi is an open source project, and your feedback and contributions\nare needed and always welcome.\n\n[Is"
},
{
"path": "LICENSE",
"chars": 11379,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "Makefile",
"chars": 1336,
"preview": "# Static linting of source files. See .golangci.toml for options\ncheck:\n\tgolangci-lint run\n\n# Generate stdlib/syscall/sy"
},
{
"path": "README.md",
"chars": 5399,
"preview": "<p align=\"center\">\n<img width=\"400\" src=\"doc/images/yaegi.png\" alt=\"Yaegi\" title=\"Yaegi\" />\n</p>\n\n[ {\n\ta := [6]int{1, 2, 3, 4, 5, 6}\n\tprintln(a[1]) // 2\n\tfor i, v := range a {\n\t\tprintln(v)\n\t\tif "
},
{
"path": "_test/a10.go",
"chars": 213,
"preview": "package main\n\ntype Sample struct {\n\tName string\n}\n\nvar samples = []Sample{}\n\nfunc f(i int) {\n\tprintln(samples[i].Name)\n}"
},
{
"path": "_test/a11.go",
"chars": 125,
"preview": "package main\n\nfunc main() {\n\ta := []int{1, 2, 3, 4}\n\tfor _, v := range a {\n\t\tprintln(v)\n\t}\n}\n\n// Output:\n// 1\n// 2\n// 3\n"
},
{
"path": "_test/a12.go",
"chars": 99,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tvar buf [12]int\n\tfmt.Println(buf[0])\n}\n\n// Output:\n// 0\n"
},
{
"path": "_test/a13.go",
"chars": 165,
"preview": "package main\n\ntype T1 struct {\n\tnum []int\n}\n\nfunc main() {\n\ta := T1{[]int{1, 3, 5}}\n\tfor i, v := range a.num {\n\t\tprintln"
},
{
"path": "_test/a14.go",
"chars": 139,
"preview": "package main\n\nimport \"fmt\"\n\nconst size = 12\n\nfunc main() {\n\tvar buf [size]int\n\tfmt.Println(buf)\n}\n\n// Output:\n// [0 0 0 "
},
{
"path": "_test/a15.go",
"chars": 142,
"preview": "package main\n\nimport \"fmt\"\n\nconst size = 12\n\nfunc main() {\n\tvar buf [size]int\n\tfmt.Println(buf[:])\n}\n\n// Output:\n// [0 0"
},
{
"path": "_test/a16.go",
"chars": 239,
"preview": "package main\n\nfunc main() {\n\ta := [6]int{1, 2, 3, 4, 5, 6}\n\tprintln(a[1]) // 2\n\tfor k := 0; k < 2; k++ {\n\t\tfor i, v := r"
},
{
"path": "_test/a17.go",
"chars": 125,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := make([]int, 2, 7)\n\tfmt.Println(a, len(a), cap(a))\n}\n\n// Output:\n// [0 0]"
},
{
"path": "_test/a18.go",
"chars": 127,
"preview": "package main\n\nfunc main() {\n\ta := []int64{1, 2, 3, 4}\n\tfor _, v := range a {\n\t\tprintln(v)\n\t}\n}\n\n// Output:\n// 1\n// 2\n// "
},
{
"path": "_test/a19.go",
"chars": 106,
"preview": "package main\n\nfunc main() {\n\tvar buf [bsize]byte\n\tprintln(len(buf))\n}\n\nconst bsize = 10\n\n// Output:\n// 10\n"
},
{
"path": "_test/a2.go",
"chars": 194,
"preview": "package main\n\nfunc main() {\n\ta := [6]int{1, 2, 3, 4, 5, 6}\n\ta[1] = 5\n\tprintln(a[1]) // 2\n\tfor i, v := range a {\n\t\tprintl"
},
{
"path": "_test/a20.go",
"chars": 183,
"preview": "package main\n\nimport \"fmt\"\n\ntype IntArray []int\n\nfunc (h *IntArray) Add(x int) {\n\t*h = append(*h, x)\n}\n\nfunc main() {\n\ta"
},
{
"path": "_test/a21.go",
"chars": 183,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := []byte(\"hello\")\n\tfmt.Println(a)\n\ta = append(a, '=')\n\tfmt.Println(a)\n}\n\n/"
},
{
"path": "_test/a22.go",
"chars": 107,
"preview": "package main\n\nfunc main() {\n\ta := [256]int{}\n\tvar b uint8 = 12\n\ta[b] = 1\n\tprintln(a[b])\n}\n\n// Output:\n// 1\n"
},
{
"path": "_test/a23.go",
"chars": 378,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tvar key, salt [32]byte\n\tfor i := range key {\n\t\tkey[i] = byte(i)\n\t\tsalt[i] = b"
},
{
"path": "_test/a24.go",
"chars": 307,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tfor i := 0; i < 2; i++ {\n\t\tvar buf [8]byte\n\t\tvar x int\n\t\tfmt.Println(buf, x)\n"
},
{
"path": "_test/a25.go",
"chars": 214,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tvar buf [8]byte\n\tfor i := 0; i < 2; i++ {\n\t\tfor i := range buf {\n\t\t\tbuf[i] +="
},
{
"path": "_test/a26.go",
"chars": 111,
"preview": "package main\n\nfunc main() {\n\ta := [3]int{1, 2, 3}\n\tb := [3]int{1, 2, 3}\n\tprintln(a == b)\n}\n\n// Output:\n// true\n"
},
{
"path": "_test/a27.go",
"chars": 148,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]string{\"hello\", \"world\"}\n\tfmt.Printf(\"%v %T\\n\", a, a)\n}\n\n// Output:"
},
{
"path": "_test/a28.go",
"chars": 146,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]string{9: \"hello\"}\n\tfmt.Printf(\"%v %T\\n\", a, a)\n}\n\n// Output:\n// [ "
},
{
"path": "_test/a29.go",
"chars": 269,
"preview": "package main\n\nimport \"fmt\"\n\nconst (\n\tzero = iota\n\tone\n\ttwo\n\tthree\n)\n\nfunc main() {\n\ta := [...]string{\n\t\tzero: \"zero"
},
{
"path": "_test/a3.go",
"chars": 120,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [6]int{1, 2, 3, 4, 5, 6}\n\tfmt.Println(a[2:])\n}\n\n// Output:\n// [3 4 5 6]\n"
},
{
"path": "_test/a30.go",
"chars": 92,
"preview": "package main\n\nfunc main() {\n\tfor range []struct{}{} {\n\t}\n\tprintln(\"ok\")\n}\n\n// Output:\n// ok\n"
},
{
"path": "_test/a31.go",
"chars": 125,
"preview": "package main\n\nfunc main() {\n\tfor range []int{0, 1, 2} {\n\t\tprint(\"hello \")\n\t}\n\tprintln(\"\")\n}\n\n// Output:\n// hello hello h"
},
{
"path": "_test/a32.go",
"chars": 114,
"preview": "package main\n\nimport \"fmt\"\n\ntype T struct{}\n\nvar a = []T{{}}\n\nfunc main() {\n\tfmt.Println(a)\n}\n\n// Output:\n// [{}]\n"
},
{
"path": "_test/a33.go",
"chars": 115,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]int{1, 2, 3}\n\tb := a\n\tfmt.Println(b)\n}\n\n// Output:\n// [1 2 3]\n"
},
{
"path": "_test/a34.go",
"chars": 125,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]int{1, 2, 3}\n\tvar b [3]int = a\n\tfmt.Println(b)\n}\n\n// Output:\n// [1 "
},
{
"path": "_test/a35.go",
"chars": 126,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]int{1, 2, 3}\n\tb := a\n\tb[0] = -1\n\tfmt.Println(a)\n}\n\n// Output:\n// [1"
},
{
"path": "_test/a36.go",
"chars": 136,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]int{1, 2, 3}\n\tvar b [3]int = a\n\tb[0] = -1\n\tfmt.Println(a)\n}\n\n// Out"
},
{
"path": "_test/a37.go",
"chars": 107,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]int{1, 2, 3}\n\tfmt.Println(a)\n}\n\n// Output:\n// [1 2 3]\n"
},
{
"path": "_test/a38.go",
"chars": 109,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]byte{}\n\tfmt.Printf(\"%T\\n\", a)\n}\n\n// Output:\n// [0]uint8\n"
},
{
"path": "_test/a39.go",
"chars": 132,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [...]byte{}\n\tb := a\n\tfmt.Printf(\"%T %T\\n\", a, b)\n}\n\n// Output:\n// [0]uin"
},
{
"path": "_test/a4.go",
"chars": 117,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [6]int{1, 2, 3, 4, 5, 6}\n\tfmt.Println(a[2:4])\n}\n\n// Output:\n// [3 4]\n"
},
{
"path": "_test/a40.go",
"chars": 172,
"preview": "package main\n\nimport \"fmt\"\n\ntype rule uint8\n\nconst (\n\tr0 rule = iota\n\tr1\n\tr2\n)\n\nvar a = [...]int{\n\tr0: 1,\n\tr1: 12,\n}\n\nfu"
},
{
"path": "_test/a41.go",
"chars": 104,
"preview": "package main\n\nvar a = [...]bool{true, true}\n\nfunc main() {\n\tprintln(a[0] && true)\n}\n\n// Output:\n// true\n"
},
{
"path": "_test/a42.go",
"chars": 181,
"preview": "package main\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n)\n\nfunc main() {\n\tvar b [8]byte\n\tbinary.LittleEndian.PutUint64(b[:], ui"
},
{
"path": "_test/a43.go",
"chars": 137,
"preview": "package main\n\nimport \"fmt\"\n\ntype T [l1 + l2]int\n\nconst (\n\tl1 = 2\n\tl2 = 3\n)\n\nfunc main() {\n\tfmt.Println(T{})\n}\n\n// Output"
},
{
"path": "_test/a44.go",
"chars": 101,
"preview": "package main\n\nvar a = [max]int{}\n\nconst max = 32\n\nfunc main() {\n\tprintln(len(a))\n}\n\n// Output:\n// 32\n"
},
{
"path": "_test/a5.go",
"chars": 120,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [6]int{1, 2, 3, 4, 5, 6}\n\tfmt.Println(a[:4])\n}\n\n// Output:\n// [1 2 3 4]\n"
},
{
"path": "_test/a6.go",
"chars": 123,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [6]int{1, 2, 3, 4, 5, 6}\n\tfmt.Println(a[:])\n}\n\n// Output:\n// [1 2 3 4 5 "
},
{
"path": "_test/a7.go",
"chars": 113,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := [6]int{1, 2, 3, 4, 5, 6}\n\tfmt.Println(len(a))\n}\n\n// Output:\n// 6\n"
},
{
"path": "_test/a8.go",
"chars": 146,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\t//a := []int{1, 2}\n\ta := make([]int, 2)\n\t//a[0] = 1\n\t//a[1] = 2\n\tfmt.Println("
},
{
"path": "_test/a9.go",
"chars": 187,
"preview": "package main\n\nimport \"fmt\"\n\n//var (\n//\tsamples = []int{}\n//\tb = 1\n//)\n\nfunc main() {\n\tvar samples = []int{}\n\tsampl"
},
{
"path": "_test/add0.go",
"chars": 92,
"preview": "package main\n\nfunc main() {\n\tvar a interface{} = 2 + 5\n\tprintln(a.(int))\n}\n\n// Output:\n// 7\n"
},
{
"path": "_test/add1.go",
"chars": 480,
"preview": "package main\n\nfunc main() {\n\tb := 2 // int\n\n\tvar c int = 5 + b\n\tprintln(c)\n\n\tvar d int32 = 6 + int32(b)\n\tprintln(d)\n\n\tva"
},
{
"path": "_test/add2.go",
"chars": 118,
"preview": "package main\n\ntype iface interface{}\n\nfunc main() {\n\tb := 2\n\tvar a iface = 5 + b\n\tprintln(a.(int))\n}\n\n// Output:\n// 7\n"
},
{
"path": "_test/addr0.go",
"chars": 267,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n)\n\ntype extendedRequest struct {\n\thttp.Request\n\n\tData string\n}\n\nfunc main() {\n"
},
{
"path": "_test/addr1.go",
"chars": 221,
"preview": "package main\n\nimport \"fmt\"\n\ntype T struct {\n\tA int\n\tB int\n}\n\nfunc main() {\n\ta := &[]T{\n\t\t{1, 2},\n\t\t{3, 4},\n\t}\n\tfmt.Print"
},
{
"path": "_test/addr2.go",
"chars": 1038,
"preview": "package main\n\nimport (\n\t\"encoding/xml\"\n\t\"errors\"\n\t\"fmt\"\n)\n\ntype Email struct {\n\tWhere string `xml:\"where,attr\"`\n\tAddr s"
},
{
"path": "_test/addr3.go",
"chars": 212,
"preview": "package main\n\nimport (\n\t\"fmt\"\n)\n\nfunc main() {\n\tvar a interface{}\n\ta = 2\n\tfmt.Println(a)\n\n\tvar b *interface{}\n\tb = &a\n\tf"
},
{
"path": "_test/addr4.go",
"chars": 1540,
"preview": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n)\n\nconst jsonData = `[\n \"foo\",\n \"bar\"\n]`\n\nconst jsonData2 = `[\n "
},
{
"path": "_test/addr5.go",
"chars": 1133,
"preview": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/url\"\n)\n\nfunc main() {\n\tbody := []byte(`{\n\t\t\"BODY_1\": \"VALUE_1\",\n\t\t\""
},
{
"path": "_test/and.go",
"chars": 238,
"preview": "package main\n\nfunc main() {\n\ta, b := 1, 2\n\n\tif f1() && f2() {\n\t\tprintln(a, b)\n\t}\n}\n\nfunc f1() bool {\n\tprintln(\"f1\")\n\t//r"
},
{
"path": "_test/and0.go",
"chars": 198,
"preview": "package main\n\nfunc main() {\n\ta, b := 1, 2\n\n\tif f2() && f1() {\n\t\tprintln(a, b)\n\t}\n}\n\nfunc f1() bool {\n\tprintln(\"f1\")\n\tret"
},
{
"path": "_test/and1.go",
"chars": 185,
"preview": "package main\n\nfunc main() {\n\ta := f2() && f1()\n\tprintln(a)\n}\n\nfunc f1() bool {\n\tprintln(\"f1\")\n\treturn true\n}\n\nfunc f2() "
},
{
"path": "_test/and2.go",
"chars": 234,
"preview": "package main\n\nfunc f() bool {\n\tprintln(\"in f\")\n\treturn true\n}\n\nfunc main() {\n\tvar (\n\t\tcl = 0\n\t\tct = \"some text\"\n\t\tce = \""
},
{
"path": "_test/and3.go",
"chars": 84,
"preview": "package main\n\nvar a = true && true\n\nfunc main() {\n\tprintln(a)\n}\n\n// Output:\n// true\n"
},
{
"path": "_test/append0.go",
"chars": 183,
"preview": "package main\n\nimport \"fmt\"\n\nfunc f(a []int, b int) interface{} { return append(a, b) }\n\nfunc main() {\n\ta := []int{1, 2}\n"
},
{
"path": "_test/append1.go",
"chars": 224,
"preview": "package main\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n)\n\nfunc main() {\n\ts := bufio.NewScanner(bytes.NewReader([]byte(\"Hello\\nTest\\nLi"
},
{
"path": "_test/append2.go",
"chars": 216,
"preview": "package main\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n)\n\nfunc main() {\n\ts := bufio.NewScanner(bytes.NewReader([]byte(\"Hello\\nTest\\nLi"
},
{
"path": "_test/append3.go",
"chars": 192,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := []int{1, 2}\n\tb := [2]int{3, 4}\n\tfmt.Println(append(a, b[:]...))\n\tfmt.Pri"
},
{
"path": "_test/append4.go",
"chars": 118,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := []*int{}\n\ta = append(a, nil)\n\tfmt.Println(a)\n}\n\n// Output:\n// [<nil>]\n"
},
{
"path": "_test/assert0.go",
"chars": 2506,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"time\"\n)\n\ntype MyWriter interface {\n\tWrite(p []byte) (i int, err error)\n}\n\ntype DummyWrit"
},
{
"path": "_test/assert1.go",
"chars": 1831,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n)\n\ntype TestStruct struct{}\n\nfunc (t TestStruct) String() string {\n\tret"
},
{
"path": "_test/assert2.go",
"chars": 630,
"preview": "package main\n\nimport (\n\t\"strings\"\n\t\"sync\"\n)\n\n// Define an interface of stringBuilder that is compatible with\n// strings."
},
{
"path": "_test/assert3.go",
"chars": 198,
"preview": "package main\n\nimport \"crypto/rsa\"\n\nfunc main() {\n\tvar pKey interface{} = &rsa.PublicKey{}\n\n\tif _, ok := pKey.(*rsa.Publi"
},
{
"path": "_test/assert4.go",
"chars": 102,
"preview": "package main\n\nvar cc interface{} = 2\nvar dd = cc.(int)\n\nfunc main() {\n\tprintln(dd)\n}\n\n// Output:\n// 2\n"
},
{
"path": "_test/assign.go",
"chars": 97,
"preview": "package main\n\nfunc main() {\n\ta, b := 1, 2 // Multiple assign\n\tprintln(a, b)\n}\n\n// Output:\n// 1 2\n"
},
{
"path": "_test/assign0.go",
"chars": 286,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"time\"\n)\n\nfunc main() {\n\thttp.DefaultClient.Timeout = time.Second * 10\n\tfmt.P"
},
{
"path": "_test/assign1.go",
"chars": 108,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tvar buf []byte\n\n\tbuf = nil\n\tfmt.Println(buf)\n}\n\n// Output:\n// []\n"
},
{
"path": "_test/assign10.go",
"chars": 82,
"preview": "package main\n\nfunc main() {\n\tvar a uint\n\ta = 1 + 2\n\tprintln(a)\n}\n\n// Output:\n// 3\n"
},
{
"path": "_test/assign11.go",
"chars": 160,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\t_, _, _ = fmt.Println(\"test\")\n}\n\n// Error:\n// 6:2: assignment mismatch: 3 var"
},
{
"path": "_test/assign12.go",
"chars": 179,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta, b, c := fmt.Println(\"test\")\n\tprintln(a, b, c)\n}\n\n// Error:\n// 6:2: assignm"
},
{
"path": "_test/assign13.go",
"chars": 267,
"preview": "package main\n\nimport \"fmt\"\n\nfunc getStr() string {\n\treturn \"test\"\n}\n\nfunc main() {\n\tm := make(map[string]string, 0)\n\tm[\""
},
{
"path": "_test/assign14.go",
"chars": 191,
"preview": "package main\n\nvar optionsG map[string]string = nil\n\nvar roundG = 30\n\nfunc main() {\n\tdummy := roundG\n\troundG = dummy + 1\n"
},
{
"path": "_test/assign15.go",
"chars": 220,
"preview": "package main\n\nfunc main() {\n\tvar c chan<- struct{} = make(chan struct{})\n\tvar d <-chan struct{} = c\n\n\t_ = d\n}\n\n// Error:"
},
{
"path": "_test/assign16.go",
"chars": 135,
"preview": "package main\n\ntype H struct {\n\tbits uint\n}\n\nfunc main() {\n\th := &H{8}\n\tvar x uint = (1 << h.bits) >> 6\n\n\tprintln(x)\n}\n\n/"
},
{
"path": "_test/assign17.go",
"chars": 311,
"preview": "package main\n\nfunc main() {\n\ts := make([]map[string]string, 0)\n\tm := make(map[string]string)\n\tm[\"m1\"] = \"m1\"\n\tm[\"m2\"] = "
},
{
"path": "_test/assign18.go",
"chars": 301,
"preview": "package main\n\nfunc main() {\n\ts := make([]map[string]string, 0)\n\tm := make(map[string]string)\n\tm[\"m1\"] = \"m1\"\n\tm[\"m2\"] = "
},
{
"path": "_test/assign19.go",
"chars": 141,
"preview": "package main\n\nfunc main() {\n\ta, b, c := 1, 2\n\t_, _, _ = a, b, c\n}\n\n// Error:\n// _test/assign19.go:4:2: cannot assign 2 v"
},
{
"path": "_test/assign2.go",
"chars": 153,
"preview": "package main\n\nfunc main() {\n\tr := uint32(2000000000)\n\tr = hello(r)\n\tprintln(r)\n}\n\nfunc hello(r uint32) uint32 { return r"
},
{
"path": "_test/assign3.go",
"chars": 113,
"preview": "package main\n\nfunc main() {\n\ta, b := 1, 2\n\tprintln(a, b)\n\ta, b = b, a\n\tprintln(a, b)\n}\n\n// Output:\n// 1 2\n// 2 1\n"
},
{
"path": "_test/assign4.go",
"chars": 135,
"preview": "package main\n\nfunc main() {\n\ta, b, c := 1, 2, 3\n\tprintln(a, b, c)\n\ta, b, c = c, a, b\n\tprintln(a, b, c)\n}\n\n// Output:\n// "
},
{
"path": "_test/assign5.go",
"chars": 149,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tt := []int{1, 2}\n\tfmt.Println(t)\n\tt[0], t[1] = t[1], t[0]\n\tfmt.Println(t)\n}\n\n"
},
{
"path": "_test/assign6.go",
"chars": 198,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tt := map[string]int{\"a\": 1, \"b\": 2}\n\tfmt.Println(t[\"a\"], t[\"b\"])\n\tt[\"a\"], t[\""
},
{
"path": "_test/assign7.go",
"chars": 234,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := 3\n\tt := map[string]int{\"a\": 1, \"b\": 2}\n\ts := []int{4, 5}\n\tfmt.Println(a,"
},
{
"path": "_test/assign8.go",
"chars": 66,
"preview": "package main\n\nfunc main() {\n\t_ = 1\n\tprintln(1)\n}\n\n// Output:\n// 1\n"
},
{
"path": "_test/assign9.go",
"chars": 139,
"preview": "package main\n\ntype foo func(b int)\n\nfunc boo(b int) { println(\"boo\", b) }\n\nfunc main() {\n\tvar f foo\n\n\tf = boo\n\tf(4)\n}\n\n/"
},
{
"path": "_test/b1/foo/foo.go",
"chars": 117,
"preview": "package foo\n\nimport bar \"github.com/traefik/yaegi/_test/b2/foo\"\n\nvar Desc = \"in b1/foo\"\n\nvar Desc2 = Desc + bar.Desc\n"
},
{
"path": "_test/b2/foo/foo.go",
"chars": 36,
"preview": "package foo\n\nvar Desc = \"in b2/foo\"\n"
},
{
"path": "_test/bad0.go",
"chars": 70,
"preview": "println(\"Hello\")\n\n// Error:\n// 1:1: expected 'package', found println\n"
},
{
"path": "_test/baz-bat/baz-bat.go",
"chars": 34,
"preview": "package baz\n\nvar Name = \"baz-bat\"\n"
},
{
"path": "_test/bin.go",
"chars": 95,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tf := fmt.Println\n\tf(\"Hello\")\n}\n\n// Output:\n// Hello\n"
},
{
"path": "_test/bin0.go",
"chars": 127,
"preview": "package main\n\nimport \"strings\"\n\nfunc main() {\n\ta := strings.SplitN(\"truc machin\", \" \", 2)\n\tprintln(a[0])\n}\n\n// Output:\n/"
},
{
"path": "_test/bin1.go",
"chars": 230,
"preview": "package main\n\nimport (\n\t\"crypto/sha1\"\n\t\"fmt\"\n)\n\nfunc main() {\n\td := sha1.New()\n\td.Write([]byte(\"password\"))\n\ta := d.Sum("
},
{
"path": "_test/bin2.go",
"chars": 101,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\nfunc main() {\n\tfmt.Println(math.Abs(-5))\n}\n\n// Output:\n// 5\n"
},
{
"path": "_test/bin3.go",
"chars": 139,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tstr := \"part1\"\n\tstr += fmt.Sprintf(\"%s\", \"part2\")\n\tfmt.Println(str)\n}\n\n// Out"
},
{
"path": "_test/bin4.go",
"chars": 313,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\nfunc Bar(s string) bool {\n\ta := strings.HasPrefix(\"fas\", \"f\")\n\tb := strings."
},
{
"path": "_test/bin5.go",
"chars": 192,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\nfunc main() {\n\taddr := net.TCPAddr{IP: net.IPv4(1, 1, 1, 1), Port: 80}\n\tvar s fm"
},
{
"path": "_test/binstruct_ptr_map0.go",
"chars": 198,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"image\"\n)\n\nfunc main() {\n\tv := map[string]*image.Point{\n\t\t\"foo\": {X: 3, Y: 2},\n\t\t\"bar\": {"
},
{
"path": "_test/binstruct_ptr_slice0.go",
"chars": 160,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"image\"\n)\n\nfunc main() {\n\tv := []*image.Point{\n\t\t{X: 3, Y: 2},\n\t\t{X: 4, Y: 5},\n\t}\n\tfmt.Pr"
},
{
"path": "_test/binstruct_slice0.go",
"chars": 137,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"image\"\n)\n\nfunc main() {\n\tv := []image.Point{\n\t\t{X: 3, Y: 2},\n\t}\n\tfmt.Println(v)\n}\n\n// Ou"
},
{
"path": "_test/bltn.go",
"chars": 69,
"preview": "package main\n\nfunc main() {\n\tprintln(\"Hello\")\n}\n\n// Output:\n// Hello\n"
},
{
"path": "_test/bltn0.go",
"chars": 119,
"preview": "package main\n\nfunc main() {\n\tf := println\n\tf(\"Hello\")\n}\n\n// Error:\n// 4:7: use of builtin println not in function call\n"
},
{
"path": "_test/bool.go",
"chars": 96,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tfmt.Println(false, true)\n}\n\n// Output:\n// false true\n"
},
{
"path": "_test/bool0.go",
"chars": 83,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tfmt.Println(true)\n}\n\n// Output:\n// true\n"
},
{
"path": "_test/bool1.go",
"chars": 142,
"preview": "package main\n\ntype T struct {\n\tv bool\n}\n\nfunc main() {\n\ta := T{}\n\tif a.v {\n\t\tprintln(\"ok\")\n\t} else {\n\t\tprintln(\"nok\")\n\t}"
},
{
"path": "_test/bool2.go",
"chars": 143,
"preview": "package main\n\ntype T struct {\n\tv bool\n}\n\nfunc main() {\n\ta := &T{}\n\tif a.v {\n\t\tprintln(\"ok\")\n\t} else {\n\t\tprintln(\"nok\")\n\t"
},
{
"path": "_test/bool3.go",
"chars": 135,
"preview": "package main\n\nfunc main() {\n\tm := map[int]bool{0: false, 1: true}\n\tif m[0] {\n\t\tprintln(0)\n\t} else {\n\t\tprintln(1)\n\t}\n}\n\n/"
},
{
"path": "_test/bool4.go",
"chars": 123,
"preview": "package main\n\nfunc main() {\n\tm := []bool{false, true}\n\tif m[0] {\n\t\tprintln(0)\n\t} else {\n\t\tprintln(1)\n\t}\n}\n\n// Output:\n//"
},
{
"path": "_test/bool5.go",
"chars": 117,
"preview": "package main\n\nfunc main() {\n\tvar b bool\n\tm := &b\n\n\tif *m {\n\t\tprintln(0)\n\t} else {\n\t\tprintln(1)\n\t}\n}\n\n// Output:\n// 1\n"
},
{
"path": "_test/break0.go",
"chars": 320,
"preview": "package main\n\nfunc main() {\n\tn := 2\n\tm := 2\n\tfoo := true\nOuterLoop:\n\tprintln(\"Boo\")\n\tfor i := 0; i < n; i++ {\n\t\tprintln("
},
{
"path": "_test/break1.go",
"chars": 283,
"preview": "package main\n\nfunc main() {\n\tn := 2\n\tm := 2\n\tfoo := true\nOuterLoop:\n\tfor i := 0; i < n; i++ {\n\t\tprintln(\"I: \", i)\n\t\tfor "
},
{
"path": "_test/break2.go",
"chars": 306,
"preview": "package main\n\nfunc main() {\n\tn := 2\n\tm := 2\n\tfoo := true\nOuterLoop:\n\tfor i := 0; i < n; i++ {\n\t\tprintln(\"I: \", i)\n\t\tfor "
},
{
"path": "_test/break3.go",
"chars": 334,
"preview": "package main\n\nfunc main() {\n\tn := 2\n\tm := 2\n\tfoo := true\n\tgoto OuterLoop\n\tprintln(\"Boo\")\nOuterLoop:\n\tfor i := 0; i < n; "
},
{
"path": "_test/c1/c1.go",
"chars": 77,
"preview": "package c1\n\nimport \"github.com/traefik/yaegi/_test/c2\"\n\nvar C1 = c2.C2 + \"x\"\n"
},
{
"path": "_test/c2/c2.go",
"chars": 77,
"preview": "package c2\n\nimport \"github.com/traefik/yaegi/_test/c1\"\n\nvar C2 = c1.C1 + \"Y\"\n"
},
{
"path": "_test/cap0.go",
"chars": 194,
"preview": "package main\n\nfunc f(a []int) interface{} {\n\treturn cap(a)\n}\n\nfunc g(a []int) int {\n\treturn cap(a)\n}\n\nfunc main() {\n\ta :"
},
{
"path": "_test/chan0.go",
"chars": 190,
"preview": "package main\n\ntype Channel chan string\n\nfunc send(c Channel) { c <- \"ping\" }\n\nfunc main() {\n\tchannel := make(Channel)\n\tg"
},
{
"path": "_test/chan1.go",
"chars": 174,
"preview": "package main\n\nfunc send(c chan<- string) { c <- \"ping\" }\n\nfunc main() {\n\tchannel := make(chan string)\n\tgo send(channel)\n"
},
{
"path": "_test/chan10.go",
"chars": 155,
"preview": "package main\n\nimport \"time\"\n\nfunc main() {\n\tvar tick <-chan time.Time = time.Tick(time.Millisecond)\n\t_ = tick\n\tprintln(\""
},
{
"path": "_test/chan2.go",
"chars": 170,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tmessages := make(chan string)\n\n\tgo func() { messages <- \"ping\" }()\n\n\tmsg := <"
},
{
"path": "_test/chan3.go",
"chars": 168,
"preview": "package main\n\nfunc send(c chan<- int32) { c <- 123 }\n\nfunc main() {\n\tchannel := make(chan int32)\n\tgo send(channel)\n\tmsg "
},
{
"path": "_test/chan4.go",
"chars": 198,
"preview": "package main\n\nfunc send(c chan<- bool) { c <- false }\n\nfunc main() {\n\tchannel := make(chan bool)\n\tgo send(channel)\n\tif <"
},
{
"path": "_test/chan5.go",
"chars": 493,
"preview": "package main\n\nimport \"time\"\n\nfunc main() {\n\n\t// For our example we'll select across two channels.\n\tc1 := make(chan strin"
},
{
"path": "_test/chan6.go",
"chars": 157,
"preview": "package main\n\nfunc send(c chan<- int32) { c <- 123 }\n\nfunc main() {\n\tchannel := make(chan int32)\n\tgo send(channel)\n\tmsg,"
},
{
"path": "_test/chan7.go",
"chars": 197,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tqueue := make(chan string, 2)\n\tqueue <- \"one\"\n\tqueue <- \"two\"\n\tclose(queue)\n\t"
},
{
"path": "_test/chan8.go",
"chars": 144,
"preview": "package main\n\nfunc main() {\n\tmessages := make(chan bool)\n\n\tgo func() { messages <- true }()\n\n\tprintln(<-messages && true"
},
{
"path": "_test/chan9.go",
"chars": 234,
"preview": "package main\n\ntype Channel chan string\n\ntype T struct {\n\tChannel\n}\n\nfunc send(c Channel) { c <- \"ping\" }\n\nfunc main() {\n"
},
{
"path": "_test/cli1.go",
"chars": 835,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n)\n\nfunc client(uri string) {\n\tresp, err := http.Get(uri)\n\t"
},
{
"path": "_test/cli2.go",
"chars": 943,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n)\n\ntype T struct {\n\tln net.Listener\n}\n\nfunc (t *T) Close()"
},
{
"path": "_test/cli3.go",
"chars": 547,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n)\n\nfunc client(uri string) {\n\tresp, err := h"
},
{
"path": "_test/cli4.go",
"chars": 765,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n)\n\ntype mw1 struct {\n\tnext http.Handler\n}\n\nf"
},
{
"path": "_test/cli5.go",
"chars": 771,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n)\n\ntype mw1 struct {\n\tnext http.Handler\n}\n\nf"
},
{
"path": "_test/cli6.go",
"chars": 736,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n)\n\ntype T struct {\n\thttp.ResponseWriter\n}\n\nt"
},
{
"path": "_test/cli7.go",
"chars": 800,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n)\n\ntype T struct {\n\thttp.ResponseWriter\n}\n\nt"
},
{
"path": "_test/cli8.go",
"chars": 738,
"preview": "package main\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n)\n\ntype T struct {\n\tname string\n\tnext http.Handler\n}\n\nfunc (t *T"
},
{
"path": "_test/closure0.go",
"chars": 194,
"preview": "package main\n\ntype adder func(int, int) int\n\nfunc genAdd(k int) adder {\n\treturn func(i, j int) int {\n\t\treturn i + j + k\n"
},
{
"path": "_test/closure1.go",
"chars": 234,
"preview": "package main\n\ntype adder func(int, int) int\n\nfunc genAdd(k int) adder {\n\treturn func(i, j int) int {\n\t\treturn i + j + k\n"
},
{
"path": "_test/closure10.go",
"chars": 218,
"preview": "package main\n\nfunc main() {\n\tfoos := []func(){}\n\n\tfor i := 0; i < 3; i++ {\n\t\ta, b := i, i\n\t\tfoos = append(foos, func() {"
},
{
"path": "_test/closure11.go",
"chars": 236,
"preview": "package main\n\ntype T struct {\n\tF func()\n}\n\nfunc main() {\n\tfoos := []T{}\n\n\tfor i := 0; i < 3; i++ {\n\t\ta := i\n\t\tfoos = app"
},
{
"path": "_test/closure12.go",
"chars": 295,
"preview": "package main\n\nimport \"fmt\"\n\ntype T struct {\n\tF func()\n}\n\nfunc main() {\n\tfoos := []T{}\n\n\tfor i := 0; i < 3; i++ {\n\t\ta := "
},
{
"path": "_test/closure13.go",
"chars": 478,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n)\n\ntype monkey struct {\n\ttest func() int\n}\n\nfunc main() {\n\tinput := []string{\"1"
},
{
"path": "_test/closure14.go",
"chars": 462,
"preview": "package main\n\nimport \"fmt\"\n\ntype monkey struct {\n\ttest func() int\n}\n\nfunc getk(k int) (int, error) { return k, nil }\n\nfu"
},
{
"path": "_test/closure15.go",
"chars": 197,
"preview": "package main\n\nfunc main() {\n\tfoos := []func(){}\n\n\tfor i := range 3 {\n\t\ta := i\n\t\tfoos = append(foos, func() { println(i, "
},
{
"path": "_test/closure16.go",
"chars": 212,
"preview": "package main\n\nfunc main() {\n\tfoos := []func(){}\n\n\tfor i := range 3 {\n\t\ta, b := i, i\n\t\tfoos = append(foos, func() { print"
},
{
"path": "_test/closure17.go",
"chars": 230,
"preview": "package main\n\ntype T struct {\n\tF func()\n}\n\nfunc main() {\n\tfoos := []T{}\n\n\tfor i := range 3 {\n\t\ta := i\n\t\tfoos = append(fo"
},
{
"path": "_test/closure18.go",
"chars": 289,
"preview": "package main\n\nimport \"fmt\"\n\ntype T struct {\n\tF func()\n}\n\nfunc main() {\n\tfoos := []T{}\n\n\tfor i := range 3 {\n\t\ta := i\n\t\tn "
},
{
"path": "_test/closure19.go",
"chars": 194,
"preview": "package main\n\nfunc main() {\n\tfoos := []func(){}\n\n\tfor i := 0; i < 3; i++ {\n\t\ti := i\n\t\tfoos = append(foos, func() { print"
},
{
"path": "_test/closure2.go",
"chars": 323,
"preview": "package main\n\nfunc adder() func(int) int {\n\tsum := 0\n\treturn func(x int) int {\n\t\tsum = sum + x\n\t\treturn sum\n\t}\n}\n\nfunc m"
},
{
"path": "_test/closure20.go",
"chars": 188,
"preview": "package main\n\nfunc main() {\n\tfoos := []func(){}\n\n\tfor i := range 3 {\n\t\ti := i\n\t\tfoos = append(foos, func() { println(i) "
},
{
"path": "_test/closure3.go",
"chars": 250,
"preview": "package main\n\ntype T1 struct {\n\tName string\n}\n\nfunc (t *T1) genAdd(k int) func(int) int {\n\treturn func(i int) int {\n\t\tpr"
},
{
"path": "_test/closure4.go",
"chars": 249,
"preview": "package main\n\ntype T1 struct {\n\tName string\n}\n\nfunc (t *T1) genAdd(k int) func(int) int {\n\treturn func(i int) int {\n\t\tpr"
},
{
"path": "_test/closure5.go",
"chars": 248,
"preview": "package main\n\ntype T1 struct {\n\tName string\n}\n\nfunc (t T1) genAdd(k int) func(int) int {\n\treturn func(i int) int {\n\t\tpri"
},
{
"path": "_test/closure6.go",
"chars": 250,
"preview": "package main\n\ntype T1 struct {\n\tName string\n}\n\nfunc (t *T1) genAdd(k int) func(int) int {\n\treturn func(i int) int {\n\t\tpr"
},
{
"path": "_test/closure7.go",
"chars": 265,
"preview": "package main\n\nimport (\n\t\"fmt\"\n)\n\ntype Config struct {\n\tA string\n}\n\nvar conf *Config = &Config{}\n\nfunc SetConfig() func(*"
},
{
"path": "_test/closure8.go",
"chars": 104,
"preview": "package main\n\nvar f = func(a int) int { return 2 + a }\n\nfunc main() {\n\tprintln(f(3))\n}\n\n// Output:\n// 5\n"
},
{
"path": "_test/closure9.go",
"chars": 203,
"preview": "package main\n\nfunc main() {\n\tfoos := []func(){}\n\n\tfor i := 0; i < 3; i++ {\n\t\ta := i\n\t\tfoos = append(foos, func() { print"
},
{
"path": "_test/comp0.go",
"chars": 68,
"preview": "package main\n\nfunc main() {\n\tprintln(2 < 2.4)\n}\n\n// Output:\n// true\n"
},
{
"path": "_test/comp1.go",
"chars": 96,
"preview": "package main\n\nfunc main() {\n\tvar a interface{} = 1 < 2\n\tprintln(a.(bool))\n}\n\n// Output:\n// true\n"
},
{
"path": "_test/comp2.go",
"chars": 130,
"preview": "package main\n\ntype delta int32\n\nfunc main() {\n\ta := delta(-1)\n\n\tprintln(a != -1)\n\tprintln(a == -1)\n}\n\n// Output:\n// fals"
},
{
"path": "_test/complex0.go",
"chars": 124,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := complex(3, 2)\n\tfmt.Println(a, real(a), imag(a))\n}\n\n// Output:\n// (3+2i) "
},
{
"path": "_test/complex1.go",
"chars": 131,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tvar c complex128\n\tc = 1\n\tfmt.Printf(\"%T %v\\n\", c, c)\n}\n\n// Output:\n// complex"
},
{
"path": "_test/complex2.go",
"chars": 134,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tc := complex(1, 0)\n\tc += 1\n\tfmt.Printf(\"%T %v\\n\", c, c)\n}\n\n// Output:\n// comp"
},
{
"path": "_test/complex3.go",
"chars": 125,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tvar s int = 1 + complex(1, 0)\n\tfmt.Printf(\"%T %v\\n\", s, s)\n}\n\n// Output:\n// i"
},
{
"path": "_test/complex4.go",
"chars": 168,
"preview": "package main\n\nimport \"fmt\"\n\nfunc f(a, b float64) interface{} { return complex(a, b) }\n\nfunc main() {\n\ta := f(3, 2)\n\tfmt."
},
{
"path": "_test/composite0.go",
"chars": 126,
"preview": "package main\n\nimport \"fmt\"\n\nvar a = &[]*T{}\n\ntype T struct{ name string }\n\nfunc main() {\n\tfmt.Println(a)\n}\n\n// Output:\n/"
},
{
"path": "_test/composite1.go",
"chars": 134,
"preview": "package main\n\nimport \"fmt\"\n\nvar a = &[]*T{{}}\n\ntype T struct{ name string }\n\nfunc main() {\n\tfmt.Println((*a)[0])\n}\n\n// O"
},
{
"path": "_test/composite10.go",
"chars": 148,
"preview": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\ta := []map[int]int{make(map[int]int)}\n\n\tfor _, b := range a {\n\t\tfmt.Println(b"
},
{
"path": "_test/composite11.go",
"chars": 138,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"image/color\"\n)\n\nfunc main() {\n\tc := color.NRGBA64{1, 1, 1, 1}\n\n\tfmt.Println(c)\n}\n\n// Out"
},
{
"path": "_test/composite12.go",
"chars": 143,
"preview": "package main\n\ntype A struct {\n\tC D\n}\n\ntype D struct {\n\tE string\n}\n\nfunc main() {\n\ta := A{}\n\ta.C = D{\"bb\"}\n\n\tprintln(a.C."
},
{
"path": "_test/composite13.go",
"chars": 146,
"preview": "package main\n\ntype A struct {\n\tC D\n}\n\ntype D struct {\n\tE string\n}\n\nfunc main() {\n\ta := A{}\n\ta.C = D{E: \"bb\"}\n\n\tprintln(a"
},
{
"path": "_test/composite14.go",
"chars": 122,
"preview": "package main\n\nimport \"fmt\"\n\ntype T struct {\n\tb []byte\n}\n\nfunc main() {\n\tt := T{nil}\n\tfmt.Println(t)\n}\n\n// Output:\n// {[]"
},
{
"path": "_test/composite15.go",
"chars": 546,
"preview": "package main\n\nimport (\n\t\"fmt\"\n)\n\nfunc interfaceAsInts() {\n\tvar a interface{}\n\tb := 2\n\tc := 3\n\ta = []int{b, c}\n\n\td, ok :="
},
{
"path": "_test/composite16.go",
"chars": 159,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n)\n\nfunc main() {\n\tbody := url.Values{\n\t\t\"Action\": {\"none\"},\n\t}\n\tfmt.Println(bod"
},
{
"path": "_test/composite17.go",
"chars": 379,
"preview": "package main\n\nimport (\n\t\"html/template\"\n)\n\nvar str = `{{ stringOr .Data \"test\" }}`\n\nfunc main() {\n\t_, err := template.Ne"
},
{
"path": "_test/composite18.go",
"chars": 372,
"preview": "package main\n\nimport \"fmt\"\n\ntype fn func(string, string) bool\n\nvar funcs = []fn{\n\tcmpLessFn,\n\tcmpGreaterFn,\n\tnil,\n}\n\nfun"
},
{
"path": "_test/composite19.go",
"chars": 461,
"preview": "package main\n\nimport \"fmt\"\n\ntype fn func(string, string) bool\n\nvar funcs = map[string]fn{\n\t\"less\": cmpLessFn,\n\t\"great"
},
{
"path": "_test/composite2.go",
"chars": 146,
"preview": "package main\n\nimport \"fmt\"\n\nvar a = &[]*T{{\"hello\"}}\n\ntype T struct{ name string }\n\nfunc main() {\n\tfmt.Println((*a)[0])\n"
},
{
"path": "_test/composite3.go",
"chars": 134,
"preview": "package main\n\nfunc main() {\n\tvar err error\n\tvar ok bool\n\n\t_, ok = err.(interface{ IsSet() bool })\n\tprintln(ok)\n}\n\n// Out"
},
{
"path": "_test/composite4.go",
"chars": 122,
"preview": "package main\n\nfunc main() {\n\tvar err error\n\n\t_, ok := err.(interface{ IsSet() bool })\n\tprintln(ok)\n}\n\n// Output:\n// fals"
},
{
"path": "_test/composite5.go",
"chars": 133,
"preview": "package main\n\nimport \"fmt\"\n\ntype T struct {\n\tm uint16\n}\n\nvar t = T{1<<2 | 1<<3}\n\nfunc main() {\n\tfmt.Println(t)\n}\n\n// Out"
},
{
"path": "_test/composite6.go",
"chars": 175,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/traefik/yaegi/_test/ct1\"\n)\n\ntype T struct {\n\tm uint16\n}\n\nvar t = T{1 << ct1."
},
{
"path": "_test/composite7.go",
"chars": 181,
"preview": "package main\n\ntype T struct {\n\tname string\n}\n\nvar tab = []*T{{\n\tname: \"foo\",\n}, {\n\tname: \"bar\",\n}}\n\nfunc main() {\n\tprint"
},
{
"path": "_test/composite8.go",
"chars": 187,
"preview": "package main\n\ntype T struct{ I int }\n\nfunc main() {\n\tt := []*T{}\n\ts := []int{1, 2}\n\tfor _, e := range s {\n\t\tx := &T{e}\n\t"
},
{
"path": "_test/composite8bis.go",
"chars": 190,
"preview": "package main\n\ntype T struct{ I int }\n\nfunc main() {\n\tt := []*T{}\n\ts := []int{1, 2}\n\tfor _, e := range s {\n\t\tx := &T{I: e"
}
]
// ... and 1454 more files (download for full content)
About this extraction
This page contains the full source code of the traefik/yaegi GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1654 files (18.4 MB), approximately 4.9M tokens, and a symbol index with 5736 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.