ref: 9661fb64092acfcf370688c5e56934e400965822
parent: 4ee2765c5a3ab2087cbdba63f117b7e1f591bf12
author: joe9 <joe9mail@gmail.com>
date: Sat Apr 3 03:28:49 EDT 2021
added tests
--- /dev/null
+++ b/tests/.gitignore
@@ -1,0 +1,4 @@
+*.dis
+*.out
+6.*
+*.s
--- /dev/null
+++ b/tests/1.b
@@ -1,0 +1,22 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ sys->print("init 1\n");
+ a := 1;
+ b := 3;
+ c : int;
+ d : string;
+
+ d = "string init";
+ c = a*b + b*b*b*b + a;
+ sys->print("Completed running 1.b: c=%d\n", c);
+}
--- /dev/null
+++ b/tests/2.b
@@ -1,0 +1,15 @@
+implement Sample;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ a := 1;
+ b := 3;
+ c : int;
+
+ c = a*b + b*b*b*b + a;
+}
--- /dev/null
+++ b/tests/3.b
@@ -1,0 +1,24 @@
+implement Sample;
+
+Person : adt
+{
+ age : int;
+ name : string;
+};
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ a := 1;
+ b := 3;
+ c : int;
+ d : Person;
+
+ d.age = 10;
+ d.name = "person name";
+ c = a*b + b*b*b*b + a;
+}
--- /dev/null
+++ b/tests/4.b
@@ -1,0 +1,25 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a := 1;
+ b := 3;
+ c : int;
+
+ case a {
+ 0 => sys->print("begins with a vowel\n");
+ 1 => sys->print("begins with a consonant\n");
+ 2 => sys->print("begins with a consonant\n");
+ 3 => sys->print("begins with a consonant\n");
+ 4 => sys->print("begins with a consonant\n");
+ * => sys->print("sorry don't understand\n");
+ }
+}
--- /dev/null
+++ b/tests/5.b
@@ -1,0 +1,60 @@
+implement Sample;
+
+Person : adt
+{
+ age : int;
+ next : cyclic ref Person;
+ age1 : int;
+ age2 : int;
+};
+
+Sample: module
+{
+ init: fn();
+ fn1: fn();
+ fn2: fn();
+ fn3: fn();
+};
+
+init()
+{
+ a := 1;
+ b := 3;
+ c : int;
+ d : Person;
+
+ d.age = 10;
+ d.next = nil;
+ d.age1 = 20;
+ d.age2 = 30;
+ c = a*b + b*b*b*b + a;
+ fn3();
+ fn1();
+ fn2();
+}
+
+fn1()
+{
+ d: Person;
+
+ d.age=40;
+ d.next = nil;
+ d.age1 = 50;
+ d.age2 = 60;
+}
+
+fn2()
+{
+ s: string;
+
+ s = "testing the string";
+}
+
+fn3()
+{
+ s: string;
+ s1: string;
+
+ s = "testing the string";
+ s1 = "testing again";
+}
--- /dev/null
+++ b/tests/adt.b
@@ -1,0 +1,34 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Person: adt
+{
+ name: string;
+ age: int;
+};
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ d : Person;
+
+ d.name = "Jane";
+ d.age = 20;
+ sys->print("should print Jane result %s\n", d.name);
+ sys->print("should print 20 result %d\n", d.age);
+
+ a := ("Doe", 21);
+ a = d;
+ sys->print("should print Jane result %s\n", d.name);
+
+ p, np : ref Person;
+ p = np = ref Person("Jane", 20);
+ d.name = "Doe";
+ sys->print("should print Jane result %s\n", p.name);
+}
--- /dev/null
+++ b/tests/alt.b
@@ -1,0 +1,42 @@
+implement Fibonacci;
+
+include "sys.m";
+
+sys : Sys;
+MAX : con 50;
+x : chan of int;
+
+Fibonacci : module
+{
+ init : fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+
+ x = chan of int;
+ sys->print("0 .\n ..\n");
+ spawn f(0,1);
+
+ <-x;
+ sys->print("main thread completed.\n");
+}
+
+f(a, b : int)
+{
+ sys->print("%-3d", a + b);
+ for (i := 0; i <= a+b; i++)
+ {
+ sys->print(".");
+ }
+ sys->print("\n");
+
+ if (a+b < MAX)
+ {
+ f(b, a+b);
+ }
+
+ x <-= 0;
+ sys->print("Spawned thread completed.\n");
+}
--- /dev/null
+++ b/tests/alt1.b
@@ -1,0 +1,125 @@
+implement Fibonacci;
+
+include "sys.m";
+
+sys : Sys;
+MAX : con 50;
+chan1, chan2, chan4 : chan of int;
+chan3 : chan of string;
+
+Fibonacci : module
+{
+ init : fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+
+ chan1 = chan of int;
+ chan2 = chan of int;
+ chan4 = chan of int;
+ chan3 = chan of string;
+
+ str := "string test";
+ sys->print("string test: %s %d\n", str, len str);
+ sys->print("0 .\n ..\n");
+ spawn f(0,1);
+ spawn f1(0,1);
+ spawn f3(0,1);
+ spawn f2();
+ for (i := 0; i<10; i++){
+ sys->print("loop counter %d\n", i);
+ alt
+ {
+ a := <- chan1 =>
+ {
+ sys->print("%d: Read from chan1 %d\n", i, a);
+ }
+
+ b := <- chan2 =>
+ {
+ sys->print("%d: Read from chan2 %d\n", i, b);
+ }
+ c := <- chan4 =>
+ {
+ sys->print("%d: Read from chan4 %d\n", i, c);
+ }
+
+ chan3 <- = "Orange" =>
+ {
+ sys->print("Send on chan3\n");
+ }
+
+ * =>
+ {
+ sys->print("Default action\n");
+ }
+ }
+ }
+ sys->print("Spawned threads completed.\n");
+}
+
+f(a, b : int)
+{
+ sys->print("%-3d", a + b);
+ chan1 <-= a+b;
+ for (i := 0; i <= a+b; i++)
+ {
+ sys->print(".");
+ }
+ sys->print("\n");
+
+ if (a+b < MAX)
+ {
+ f(b, a+b);
+ }
+
+ chan1 <-= 0;
+ sys->print("exiting f\n");
+}
+
+f1(a, b : int)
+{
+ sys->print("%-3d", a + b);
+ chan2 <-= a+b;
+ for (i := 0; i <= a+b; i++)
+ {
+ sys->print(".");
+ }
+ sys->print("\n");
+
+ if (a+b < MAX)
+ {
+ f(b, a+b);
+ }
+
+ chan2 <-= 1;
+ sys->print("exiting f1\n");
+}
+
+f3(a, b : int)
+{
+ sys->print("%-3d", a + b);
+ chan4 <-= a+b;
+ for (i := 0; i <= a+b; i++)
+ {
+ sys->print(".");
+ }
+ sys->print("\n");
+
+ if (a+b < MAX)
+ {
+ f(b, a+b);
+ }
+
+ chan4 <-= 1;
+ sys->print("exiting f3\n");
+}
+
+f2()
+{
+ x : string;
+ x = <- chan3;
+ sys->print("exiting f2, received\n");
+}
--- /dev/null
+++ b/tests/array.b
@@ -1,0 +1,17 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ c := array [] of {"jimbox", "pip", "squek"};
+
+ sys->print("should print jimbox result %s\n", c[0]);
+ sys->print("should print squek result %s\n", c[2]);
+}
--- /dev/null
+++ b/tests/array1.b
@@ -1,0 +1,21 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ d := array [4] of {* => 3.14};
+ z := array[20] of {0 or 2 or 4 or 6 or 8 => 1,
+ 1 or 3 or 5 or 7 or 9 => 0,
+ * => -1
+ };
+
+ sys->print("should print 3.14 result %g %f\n", d[0], d[0]);
+ sys->print("should print -1 result %d\n", z[11]);
+}
--- /dev/null
+++ b/tests/array2.b
@@ -1,0 +1,19 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ z := array[20] of {0 or 2 or 4 or 6 or 8 => 1,
+ 1 or 3 or 5 or 7 or 9 => 0,
+ * => -1
+ };
+
+ sys->print("should print -1 result %d\n", z[11]);
+}
--- /dev/null
+++ b/tests/array3.b
@@ -1,0 +1,18 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ z := array[2] of {* => -1};
+ d := array [3] of {* => 3.14};
+
+ sys->print("should print -1 result %d\n", z[1]);
+ sys->print("should print 3.14 result %g %f\n", d[0], d[0]);
+}
--- /dev/null
+++ b/tests/arraybig.b
@@ -1,0 +1,35 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a : array of int;
+ b := array[64] of int;
+ c := array [] of {"jimbox", "pip", "squek"};
+ e := array [4] of {* => 3};
+ d := array [4] of {* => 3.14};
+ w := array [] of {0 or 2 or 4 or 6 or 8 => 1,
+ 1 or 3 or 5 or 7 or 9 => 0};
+ z := array[20] of {0 or 2 or 4 or 6 or 8 => 1,
+ 1 or 3 or 5 or 7 or 9 => 0,
+ * => -1
+ };
+ y : array of array of big;
+ story := array [] of {"I", "should", "get", "a", "life"};
+ task := story[2:];
+ dream := task[0][:1] + "0" + task[0][2:] + " " +task[1] + " " + task[2];
+
+ sys->print("should print jimbox result %s\n", c[0]);
+ sys->print("should print 3 result %d\n", e[0]);
+ sys->print("should print 3.14 result %g %f\n", d[0], d[0]);
+ sys->print("should print 1 result %d\n", w[0]);
+ sys->print("should print -1 result %-d\n", z[11]);
+ sys->print("should print gOt a life result %s\n", dream);
+}
--- /dev/null
+++ b/tests/arraysimple.b
@@ -1,0 +1,15 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ c := array [1] of {1};
+ sys->print("print the 1st element %d\n", c[0]);
+}
--- /dev/null
+++ b/tests/arraysimpleint.b
@@ -1,0 +1,11 @@
+implement Sample;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ c := array [1] of {1};
+}
--- /dev/null
+++ b/tests/byte.b
@@ -1,0 +1,19 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a := byte 1;
+ b := byte 255;
+
+ a = a + (byte 10);
+ b = b + (byte 10);
+ sys->print("a expected 11 calculated %d, b expected 9 calculated %d\n", (int a), (int b));
+}
--- /dev/null
+++ b/tests/case.b
@@ -1,0 +1,23 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a := 1;
+ b := 3;
+ c : int;
+
+ case a {
+ 0 => sys->print("is zero\n");
+ 1 => sys->print("is 1\n");
+ 2 => sys->print("is 2\n");
+ * => sys->print("is default\n");
+ }
+}
--- /dev/null
+++ b/tests/case1.b
@@ -1,0 +1,23 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a := 15;
+ b := 3;
+ c : int;
+
+ case a {
+ 0 => sys->print("is zero\n");
+ 1 to 10 => sys->print("is between 1 and 10\n");
+ 11 to 20 => sys->print("is between 11 and 20\n");
+ * => sys->print("is default\n");
+ }
+}
--- /dev/null
+++ b/tests/casec.b
@@ -1,0 +1,20 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a : string = "Jane";
+
+ case a {
+ "jane" or "JANE" => sys->print("is jane or JANE\n");
+ "Jane" => sys->print("is Jane\n");
+ * => sys->print("is default\n");
+ }
+}
--- /dev/null
+++ b/tests/drawcontext.b
@@ -1,0 +1,33 @@
+# File: drawcontext.b
+
+implement DrawContext;
+
+include "sys.m";
+include "draw.m";
+
+sys : Sys;
+draw : Draw;
+Screen, Display : import draw;
+
+DrawContext : module
+{
+ init : fn(ctxt : ref Draw->Context, args : list of string);
+};
+
+init (ctxt : ref Draw->Context, nil : list of string)
+{
+ sys = load Sys Sys->PATH;
+ draw = load Draw Draw->PATH;
+ if(draw == nil){
+ sys->fprint(sys->filedes(2), "cannot load Draw module\n");
+ raise "fail: bad module";
+ }
+
+ if (ctxt == nil)
+ {
+ sys->print("No valid graphics contetx, allocating a new one...\n");
+ display := Display.allocate(nil);
+ screen := Screen.allocate(display.image, display.rgb(99,99,99), 1);
+ ctxt = ref (screen, display, nil, nil, nil, nil, nil);
+ }
+}
--- /dev/null
+++ b/tests/drawexample.b
@@ -1,0 +1,50 @@
+# File: draw-example(2)
+
+implement Test;
+
+include "sys.m";
+include "draw.m";
+
+Test: module
+{
+ init: fn(ctxt: ref Draw->Context, argv: list of string);
+};
+
+init(nil: ref Draw->Context, nil: list of string)
+{
+ sys := load Sys Sys->PATH;
+ draw := load Draw Draw->PATH;
+ Display, Font, Rect, Point, Image, Screen: import draw;
+
+ display := draw->Display.allocate(nil);
+ disp := display.image;
+ red := display.color(Draw->Red);
+ blue := display.color(Draw->Blue);
+ white := display.color(Draw->White);
+ yellow := display.color(Draw->Yellow);
+
+ red.r.max.x = 640;
+ red.r.max.y = 480;
+ red.clipr.min.x = 0;
+ red.clipr.min.y = 0;
+ red.clipr.max.x = 600;
+ red.clipr.max.y = 400;
+ white.r.max.x = 640;
+ white.r.max.y = 480;
+ white.clipr.min.x = 200;
+ white.clipr.min.y = 400;
+ white.clipr.max.x = 640;
+ white.clipr.max.y = 480;
+ sys->print("red r .min.x %d .min.y %d .max.x %d .max.y %d\n",
+ red.r.min.x, red.r.min.y, red.r.max.x, red.r.max.y);
+ #sys->print("red clipr .min.x %d .min.y %d .max.x %d .max.y %d\n",
+ # red.clipr.min.x, red.clipr.min.y,
+ # red.clipr.max.x, red.clipr.max.y);
+ sys->print("disp r .min.x %d .min.y %d .max.x %d .max.y %d\n",
+ disp.r.min.x, disp.r.min.y, disp.r.max.x, disp.r.max.y);
+ sys->sleep(5000);
+ disp.draw(disp.r, red, red, disp.r.min);
+ sys->sleep(5000);
+ disp.draw(disp.r, white, white, disp.r.min);
+ sys->sleep(50000);
+}
--- /dev/null
+++ b/tests/drawexample1.b
@@ -1,0 +1,73 @@
+# File: draw-example(2)
+
+implement Test;
+
+include "sys.m";
+include "draw.m";
+
+Test: module
+{
+ init: fn(ctxt: ref Draw->Context, argv: list of string);
+};
+
+init(nil: ref Draw->Context, nil: list of string)
+{
+ sys := load Sys Sys->PATH;
+ draw := load Draw Draw->PATH;
+ Display, Font, Rect, Point, Image, Screen: import draw;
+
+ display := draw->Display.allocate(nil);
+ disp := display.image;
+ red := display.color(Draw->Red);
+ blue := display.color(Draw->Blue);
+ white := display.color(Draw->White);
+ yellow := display.color(Draw->Yellow);
+
+# red.r.max.x = 640;
+# red.r.max.y = 480;
+# red.clipr.min.x = 0;
+# red.clipr.min.y = 0;
+# red.clipr.max.x = 600;
+# red.clipr.max.y = 400;
+ sys->print("red.clipr.min.x %d\n", red.clipr.min.x);
+ disp.draw(disp.r, red, red, disp.r.min);
+ sys->sleep(5000);
+
+# texture := display.newimage(((0,0),(2,3)),
+# disp.chans, 1, Draw->Black);
+# texture.clipr = ((-10000,-10000),(10000,10000));
+# texture.draw(((0,0),(1,3)), white, nil, (0,0));
+# texture.draw(((0,0),(2,1)), white, nil, (0,0));
+# disp.draw(((100,100),(200,300)), texture, texture, (0,0));
+# sys->sleep(5000);
+#
+# stipple := display.newimage(((0,0),(2,2)),
+# disp.chans, 1, Draw->Transparent);
+# stipple.draw(((0,0),(1,1)), display.opaque, nil, (0,0));
+# disp.draw(((100,100),(300,250)), white, stipple, (0,0));
+# sys->sleep(5000);
+#
+# font := Font.open(display, "*default*");
+# disp.text((100,310), texture, (0,0), font, "Hello World");
+# sys->sleep(5000);
+#
+# delight := display.open("/icons/delight.bit");
+# piccenter := delight.r.min.add(delight.r.max).div(2);
+# disp.fillellipse((250,250), 150, 50, delight, piccenter);
+# disp.ellipse((250,250), 150, 50, 3, yellow, (0,0));
+# sys->sleep(5000);
+#
+# dx : con 15;
+# dy : con 3;
+# brush := display.newimage(((0,0),(2*dx+1,2*dy+1)), disp.chans,
+# 0, Draw->Black);
+# brush.fillellipse((dx,dy), dx, dy, display.white, (0,0));
+# for(x:=delight.r.min.x; x<delight.r.max.x; x++){
+# y := (x-piccenter.x)*(x-piccenter.x)/80;
+# y += 2*dy+1;
+# xx := x+(250-piccenter.x)-dx;
+# yy := y+(250-piccenter.y)-dy;
+# disp.gendraw(((xx,yy),(xx+2*dx+1,yy+2*dy+1)),
+# delight, (x-dx, y-dy), brush, (0,0));
+# }
+}
--- /dev/null
+++ b/tests/filepat.debug
@@ -1,0 +1,2679 @@
+declare module Sys
+declare module Readdir
+declare module Filepat
+variable 'SELF' val '"$self"'
+variable 'Sys->PATH' val '"$Sys"'
+variable 'Sys->Maxint' val '2147483647'
+variable 'Sys->QTDIR' val '128'
+variable 'Sys->QTAPPEND' val '64'
+variable 'Sys->QTEXCL' val '32'
+variable 'Sys->QTAUTH' val '8'
+variable 'Sys->QTTMP' val '4'
+variable 'Sys->QTFILE' val '0'
+variable 'Sys->nulldir' val 'Dir(nil, nil, nil, nil, (-1, -1, -1), -1, -1, -1, -1, -1, -1)'
+variable 'Sys->zerodir' val 'Dir(nil, nil, nil, nil, (0, 0, 0), 0, 0, 0, 0, 0, 0)'
+variable 'Sys->ATOMICIO' val '8192'
+variable 'Sys->SEEKSTART' val '0'
+variable 'Sys->SEEKRELA' val '1'
+variable 'Sys->SEEKEND' val '2'
+variable 'Sys->NAMEMAX' val '256'
+variable 'Sys->ERRMAX' val '128'
+variable 'Sys->WAITLEN' val '192'
+variable 'Sys->OREAD' val '0'
+variable 'Sys->OWRITE' val '1'
+variable 'Sys->ORDWR' val '2'
+variable 'Sys->OTRUNC' val '16'
+variable 'Sys->ORCLOSE' val '64'
+variable 'Sys->OEXCL' val '4096'
+variable 'Sys->DMDIR' val '-2147483648'
+variable 'Sys->DMAPPEND' val '1073741824'
+variable 'Sys->DMEXCL' val '536870912'
+variable 'Sys->DMAUTH' val '134217728'
+variable 'Sys->DMTMP' val '67108864'
+variable 'Sys->MREPL' val '0'
+variable 'Sys->MBEFORE' val '1'
+variable 'Sys->MAFTER' val '2'
+variable 'Sys->MCREATE' val '4'
+variable 'Sys->MCACHE' val '16'
+variable 'Sys->NEWFD' val '(1)'
+variable 'Sys->FORKFD' val '(2)'
+variable 'Sys->NEWNS' val '(4)'
+variable 'Sys->FORKNS' val '(8)'
+variable 'Sys->NEWPGRP' val '(16)'
+variable 'Sys->NODEVS' val '(32)'
+variable 'Sys->NEWENV' val '(64)'
+variable 'Sys->FORKENV' val '(128)'
+variable 'Sys->EXPWAIT' val '0'
+variable 'Sys->EXPASYNC' val '1'
+variable 'Sys->UTFmax' val '4'
+variable 'Sys->UTFerror' val '65533'
+variable 'Sys->Runemax' val '1114111'
+variable 'Sys->Runemask' val '2097151'
+variable 'Readdir->PATH' val '"/dis/lib/r..."'
+variable 'Readdir->NAME' val 'iota'
+variable 'Readdir->ATIME' val 'iota'
+variable 'Readdir->MTIME' val 'iota'
+variable 'Readdir->SIZE' val 'iota'
+variable 'Readdir->NONE' val 'iota'
+variable 'Readdir->DESCENDING' val '(32)'
+variable 'Readdir->COMPACT' val '(16)'
+variable 'PATH' val '"/dis/lib/f..."'
+typecheck tree:
+fn(){} fn(pat: string): list of string 0 0
+ name expand fn(pat: string): list of string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name sys nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name sys nothing 0 0
+ load Sys 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name rdir nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name rdir nothing 0 0
+ load Readdir 0 0
+ -> nothing 0 0
+ name Readdir nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name elem nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name tokenize nothing 0 0
+ seq nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ const / string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name elem nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name filepat1 nothing 0 0
+ seq nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ vardecl list of string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name pat nothing 0 0
+ const (0) int 0 0
+ const (47) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ :: nothing 0 0
+ const / string 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name elem nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ call nothing 0 0
+ name filepat1 nothing 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name elem nothing 0 0
+ seq nothing 0 0
+ name files nothing 0 0
+ seq nothing 0 0
+ != nothing 0 0
+ tl nothing 0 0
+ name elem nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name files nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ break nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name elem nothing 0 0
+ tl nothing 0 0
+ name elem nothing 0 0
+ seq nothing 0
+typecheck tree:
+fn(){} fn(pat: string, files: list of string, mustbedir: int): list of string 0 0
+ name filepat1 fn(pat: string, files: list of string, mustbedir: int): list of string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name files nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name filepatdir nothing 0 0
+ seq nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name mustbedir nothing 0 0
+ seq nothing 0 0
+ vardecl list of string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name files nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name r nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name files nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ tl nothing 0 0
+ name files nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ vardecli nothing 0 0
+ vardecl list of string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name nfiles nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name files nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name nfiles nothing 0 0
+ call nothing 0 0
+ name filepatdir nothing 0 0
+ seq nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name files nothing 0 0
+ seq nothing 0 0
+ name nfiles nothing 0 0
+ seq nothing 0 0
+ name mustbedir nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ tl nothing 0 0
+ name files nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nfiles nothing 0 0
+typecheck tree:
+fn(){} fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 0 0
+ name filepatdir fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name pat nothing 0 0
+ const . string 0 0
+ == nothing 0 0
+ name pat nothing 0 0
+ const .. string 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name dir nothing 0 0
+ const / string 0 0
+ == nothing 0 0
+ name dir nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ :: nothing 0 0
+ + nothing 0 0
+ name dir nothing 0 0
+ name pat nothing 0 0
+ name files nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ :: nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ name dir nothing 0 0
+ const / string 0 0
+ name pat nothing 0 0
+ name files nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name files nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name dirname nothing 0 0
+ name dir nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name dir nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name dirname nothing 0 0
+ const . string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name d nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name rdir nothing 0 0
+ name init nothing 0 0
+ seq nothing 0 0
+ name dirname nothing 0 0
+ seq nothing 0 0
+ | nothing 0 0
+ | nothing 0 0
+ -> nothing 0 0
+ name rdir nothing 0 0
+ name NAME nothing 0 0
+ -> nothing 0 0
+ name rdir nothing 0 0
+ name DESCENDING nothing 0 0
+ -> nothing 0 0
+ name rdir nothing 0 0
+ name COMPACT nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name d nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name files nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ index nothing 0 0
+ name d nothing 0 0
+ - nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ name name nothing 0 0
+ . nothing 0 0
+ index nothing 0 0
+ name d nothing 0 0
+ name i nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+
+typecheck tree:
+fn(){} fn(pat: string, name: string): int 0 0
+ name match fn(pat: string, name: string): int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name n nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name p nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name p nothing 0 0
+ len nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name r nothing 0 0
+ index nothing 0 0
+ name pat nothing 0 0
+ ++ nothing 0 0
+ name p nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (42) int 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name pat nothing 0 0
+ slice nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ name p nothing 0 0
+ nothing nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ len nothing 0 0
+ name pat nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (1) int 0 0
+ for nothing 0 0
+ <= nothing 0 0
+ name n nothing 0 0
+ len nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ call nothing 0 0
+ name match nothing 0 0
+ seq nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ slice nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (1) int 0 0
+ ++ nothing 0 0
+ name n nothing 0 0
+ return nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (91) int 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+
+typecheck tree:
+fn(){} fn(pat: string, p: int): (int, int, int) 0 0
+ name range fn(pat: string, p: int): (int, int, int) 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name q nothing 0 0
+ seq nothing 0 0
+ name lo nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ call nothing 0 0
+ name char nothing 0 0
+ seq nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ name p nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name q1 nothing 0 0
+ seq nothing 0 0
+ name hi nothing 0 0
+ seq nothing 0 0
+ name esc nothing 0 0
+ call nothing 0 0
+ name char nothing 0 0
+ seq nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ name q nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ ! nothing 0 0
+ name esc nothing 0 0
+ == nothing 0 0
+ name hi nothing 0 0
+ const (45) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name q1 nothing 0 0
+ seq nothing 0 0
+ name hi nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ call nothing 0 0
+ name char nothing 0 0
+ seq nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ name q1 nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name q1 nothing 0 0
+ seq nothing 0 0
+ name lo nothing 0 0
+ seq nothing 0 0
+ name hi nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name q nothing 0 0
+ seq nothing 0 0
+ name lo nothing 0 0
+ seq nothing 0 0
+ name lo nothing 0 0
+typecheck tree:
+fn(){} fn(pat: string, p: int): (int, int, int) 0 0
+ name char fn(pat: string, p: int): (int, int, int) 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name p nothing 0 0
+ len nothing 0 0
+ name pat nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name p nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name r nothing 0 0
+ index nothing 0 0
+ name pat nothing 0 0
+ ++ nothing 0 0
+ name p nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name p nothing 0 0
+ len nothing 0 0
+ name pat nothing 0 0
+ != nothing 0 0
+ name r nothing 0 0
+ const (92) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name p nothing 0 0
+ seq nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ name p nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ index nothing 0 0
+ name pat nothing 0 0
+ name p nothing 0 0
+ seq nothing 0 0
+ const (1) int 0 0
+fncom: expand 2 44aeb8
+ecom:
+= Sys 10 1
+ name sys Sys 1 0
+ load Sys 10 1
+ const $Sys string 1 0
+ name .m.Sys Sys 17 1
+ecom:
+load Sys 10 1
+ const $Sys string 1 0
+ name .m.Sys Sys 17 1
+ecom to:
+name sys Sys 1 0
+ecom:
+= Readdir 10 1
+ name rdir Readdir 1 0
+ load Readdir 10 1
+ const /dis/lib/readdir.dis string 1 0
+ name .m.Readdir Readdir 17 1
+ecom:
+load Readdir 10 1
+ const /dis/lib/readdir.dis string 1 0
+ name .m.Readdir Readdir 17 1
+ecom to:
+name rdir Readdir 1 0
+ecom:
+= (int, list of string) 10 2
+ tuple (int, list of string) 10 1
+ seq nothing 10 1
+ name nil polymorphic type 1 0
+ seq nothing 10 1
+ name elem list of string 0 0
+ call (int, list of string) 10 2
+ -> fn(s: string, delim: string): (int, list of string) 12 1
+ name sys Sys 1 0
+ name tokenize nothing 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ const / string 1 0
+generate desc for (int, list of string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type list of string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, list of string)
+ desc $-1,16,"40"
+ecom:
+call (int, list of string) 10 2
+ -> fn(s: string, delim: string): (int, list of string) 12 1
+ name sys Sys 1 0
+ name tokenize nothing 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ const / string 1 0
+ecom to:
+name .b1 (int, list of string) 0 0
+generate desc for big
+generate desc for big
+ desc $-1,8,""
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b2 big 0 0
+ const (64) int 6 0
+ecom:
+const / string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b2 big 0 0
+ const (72) int 6 0
+ecom:
+= list of string 10 1
+ * list of string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b1 (int, list of string) 0 0
+ const t1 (8) int 6 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+* list of string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b1 (int, list of string) 0 0
+ const t1 (8) int 6 0
+ecom:
+call list of string 10 2
+ name filepat1 fn(pat: string, files: list of string, mustbedir: int): list of string 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name nil list of string 1 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+* list of string 8 0
+ name .ret int 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b2 big 0 0
+ const (64) int 6 0
+ecom:
+name nil list of string 1 0
+ecom to:
+* list of string 8 0
+ + int 15 0
+ name .b2 big 0 0
+ const (72) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b2 big 0 0
+ const (80) int 6 0
+eacom:
+inds int 10 1
+ name pat string 0 0
+ const (0) int 6 0
+ecom:
+inds int 10 1
+ name pat string 0 0
+ const (0) int 6 0
+ecom to:
+name .t0 int 0 0
+ecom:
+= list of string 10 1
+ name files list of string 0 0
+ :: list of string 10 1
+ const / string 1 0
+ name nil polymorphic type 1 0
+ecom:
+:: list of string 10 1
+ const / string 1 0
+ name nil polymorphic type 1 0
+ecom to:
+name files list of string 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t3 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t3 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t3 list of string 0 0
+ecom:
+= list of string 10 2
+ name files list of string 0 0
+ call list of string 10 2
+ name filepat1 fn(pat: string, files: list of string, mustbedir: int): list of string 11 1
+ seq no type 10 2
+ hd string 10 1
+ name elem list of string 0 0
+ seq no type 10 1
+ name files list of string 0 0
+ seq no type 10 1
+ != int 10 1
+ tl list of string 10 1
+ name elem list of string 0 0
+ name nil list of string 1 0
+ecom:
+call list of string 10 2
+ name filepat1 fn(pat: string, files: list of string, mustbedir: int): list of string 11 1
+ seq no type 10 2
+ hd string 10 1
+ name elem list of string 0 0
+ seq no type 10 1
+ name files list of string 0 0
+ seq no type 10 1
+ != int 10 1
+ tl list of string 10 1
+ name elem list of string 0 0
+ name nil list of string 1 0
+ecom to:
+name files list of string 0 0
+generate desc for big
+ecom:
+hd string 10 1
+ name elem list of string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b2 big 0 0
+ const (64) int 6 0
+ecom:
+name files list of string 0 0
+ecom to:
+* list of string 8 0
+ + int 15 0
+ name .b2 big 0 0
+ const (72) int 6 0
+ecom:
+!= int 10 1
+ tl list of string 10 1
+ name elem list of string 0 0
+ name nil list of string 1 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b2 big 0 0
+ const (80) int 6 0
+eacom:
+tl list of string 10 1
+ name elem list of string 0 0
+ecom:
+tl list of string 10 1
+ name elem list of string 0 0
+ecom to:
+name .t3 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t3 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t3 list of string 0 0
+ecom:
+= list of string 10 1
+ name elem list of string 0 0
+ tl list of string 10 1
+ name elem list of string 0 0
+ecom:
+tl list of string 10 1
+ name elem list of string 0 0
+ecom to:
+name elem list of string 0 0
+ecom:
+name files list of string 0 0
+ecom to:
+* list of string 8 0
+ name .ret int 0 0
+fn: expand
+64: argument pat string ref 3
+72: local .t0 int ref 1
+80: local elem list of string ref 7
+88: local files list of string ref 5
+96: local .b2 big ref 3
+104: local .t3 list of string ref 1
+112: local .b1 (int, list of string) ref 1
+generate desc for expand
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t0 type int offset 72 (d->offset=72 start=0) returns -1
+descmap elem type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap files type list of string offset 88 (d->offset=88 start=0) returns 88
+descmap .b2 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t3 type list of string offset 104 (d->offset=104 start=0) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap t0 type int offset 112 (d->offset=0 start=112) returns -1
+descmap t1 type list of string offset 120 (d->offset=8 start=112) returns 120
+descmap .b1 type (int, list of string) offset 112 (d->offset=112 start=0) returns 120
+fncom: filepat1 3 464258
+ecom:
+call list of string 10 2
+ name filepatdir fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ const string 1 0
+ seq no type 10 1
+ name nil list of string 1 0
+ seq no type 10 1
+ name mustbedir int 0 0
+ecom to:
+* list of string 8 0
+ name .ret int 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b4 big 0 0
+ const (64) int 6 0
+ecom:
+const string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b4 big 0 0
+ const (72) int 6 0
+ecom:
+name nil list of string 1 0
+ecom to:
+* list of string 8 0
+ + int 15 0
+ name .b4 big 0 0
+ const (80) int 6 0
+ecom:
+name mustbedir int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b4 big 0 0
+ const (88) int 6 0
+ecom:
+= list of string 10 1
+ name r list of string 0 0
+ :: list of string 10 1
+ hd string 10 1
+ name files list of string 0 0
+ name r list of string 0 0
+ecom:
+:: list of string 10 1
+ hd string 10 1
+ name files list of string 0 0
+ name r list of string 0 0
+ecom to:
+name r list of string 0 0
+eacom:
+hd string 10 1
+ name files list of string 0 0
+ecom:
+hd string 10 1
+ name files list of string 0 0
+ecom to:
+name .t5 string 0 0
+ecom:
+= string 10 1
+ name .t5 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t5 string 0 0
+ecom:
+= list of string 10 1
+ name files list of string 0 0
+ tl list of string 10 1
+ name files list of string 0 0
+ecom:
+tl list of string 10 1
+ name files list of string 0 0
+ecom to:
+name files list of string 0 0
+ecom:
+= list of string 10 1
+ name files list of string 0 0
+ name r list of string 0 0
+ecom:
+name r list of string 0 0
+ecom to:
+name files list of string 0 0
+ecom:
+= list of string 10 1
+ name nfiles list of string 0 0
+ name nil polymorphic type 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name nfiles list of string 0 0
+ecom:
+= list of string 10 2
+ name nfiles list of string 0 0
+ call list of string 10 2
+ name filepatdir fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 11 1
+ seq no type 10 2
+ name pat string 0 0
+ seq no type 10 2
+ hd string 10 1
+ name files list of string 0 0
+ seq no type 10 1
+ name nfiles list of string 0 0
+ seq no type 10 1
+ name mustbedir int 0 0
+ecom:
+call list of string 10 2
+ name filepatdir fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 11 1
+ seq no type 10 2
+ name pat string 0 0
+ seq no type 10 2
+ hd string 10 1
+ name files list of string 0 0
+ seq no type 10 1
+ name nfiles list of string 0 0
+ seq no type 10 1
+ name mustbedir int 0 0
+ecom to:
+name nfiles list of string 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b4 big 0 0
+ const (64) int 6 0
+ecom:
+hd string 10 1
+ name files list of string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b4 big 0 0
+ const (72) int 6 0
+ecom:
+name nfiles list of string 0 0
+ecom to:
+* list of string 8 0
+ + int 15 0
+ name .b4 big 0 0
+ const (80) int 6 0
+ecom:
+name mustbedir int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b4 big 0 0
+ const (88) int 6 0
+ecom:
+= list of string 10 1
+ name files list of string 0 0
+ tl list of string 10 1
+ name files list of string 0 0
+ecom:
+tl list of string 10 1
+ name files list of string 0 0
+ecom to:
+name files list of string 0 0
+ecom:
+name nfiles list of string 0 0
+ecom to:
+* list of string 8 0
+ name .ret int 0 0
+fn: filepat1
+64: argument pat string ref 2
+72: argument files list of string ref 10
+80: argument mustbedir int ref 2
+88: local nfiles list of string ref 4
+96: local r list of string ref 3
+104: local .b4 big ref 2
+112: local .t5 string ref 1
+generate desc for filepat1
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap files type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap mustbedir type int offset 80 (d->offset=80 start=0) returns -1
+descmap nfiles type list of string offset 88 (d->offset=88 start=0) returns 88
+descmap r type list of string offset 96 (d->offset=96 start=0) returns 96
+descmap .b4 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t5 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: filepatdir 3 464318
+ecom:
+= list of string 10 1
+ name files list of string 0 0
+ :: list of string 10 1
+ + string 10 1
+ name dir string 0 0
+ name pat string 0 0
+ name files list of string 0 0
+ecom:
+:: list of string 10 1
+ + string 10 1
+ name dir string 0 0
+ name pat string 0 0
+ name files list of string 0 0
+ecom to:
+name files list of string 0 0
+eacom:
++ string 10 1
+ name dir string 0 0
+ name pat string 0 0
+ecom:
++ string 10 1
+ name dir string 0 0
+ name pat string 0 0
+ecom to:
+name .t6 string 0 0
+ecom:
+= string 10 1
+ name .t6 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t6 string 0 0
+ecom:
+= list of string 10 1
+ name files list of string 0 0
+ :: list of string 10 1
+ + string 10 1
+ + string 10 1
+ name dir string 0 0
+ const / string 1 0
+ name pat string 0 0
+ name files list of string 0 0
+ecom:
+:: list of string 10 1
+ + string 10 1
+ + string 10 1
+ name dir string 0 0
+ const / string 1 0
+ name pat string 0 0
+ name files list of string 0 0
+ecom to:
+name files list of string 0 0
+eacom:
++ string 10 1
+ + string 10 1
+ name dir string 0 0
+ const / string 1 0
+ name pat string 0 0
+ecom:
++ string 10 1
+ + string 10 1
+ name dir string 0 0
+ const / string 1 0
+ name pat string 0 0
+ecom to:
+name .t6 string 0 0
+ecom:
++ string 10 1
+ name dir string 0 0
+ const / string 1 0
+ecom to:
+name .t6 string 0 0
+ecom:
+= string 10 1
+ name .t6 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t6 string 0 0
+ecom:
+name files list of string 0 0
+ecom to:
+* list of string 8 0
+ name .ret int 0 0
+ecom:
+= string 10 1
+ name dirname string 0 0
+ name dir string 0 0
+ecom:
+name dir string 0 0
+ecom to:
+name dirname string 0 0
+ecom:
+= string 10 1
+ name dirname string 0 0
+ const . string 1 0
+ecom:
+const . string 1 0
+ecom to:
+name dirname string 0 0
+ecom:
+= (array of ref Sys->Dir, int) 10 2
+ tuple (array of ref Sys->Dir, int) 10 1
+ seq nothing 10 1
+ name d array of ref Sys->Dir 0 0
+ seq nothing 10 1
+ name n int 0 0
+ call (array of ref Sys->Dir, int) 10 2
+ -> fn(path: string, sortkey: int): (array of ref Sys->Dir, int) 12 1
+ name rdir Readdir 1 0
+ name init nothing 11 1
+ seq no type 10 1
+ name dirname string 0 0
+ seq no type 10 1
+ const (48) int 6 0
+ecom:
+call (array of ref Sys->Dir, int) 10 2
+ -> fn(path: string, sortkey: int): (array of ref Sys->Dir, int) 12 1
+ name rdir Readdir 1 0
+ name init nothing 11 1
+ seq no type 10 1
+ name dirname string 0 0
+ seq no type 10 1
+ const (48) int 6 0
+ecom to:
+name d (array of ref Sys->Dir, int) 0 0
+generate desc for big
+ecom:
+name dirname string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b7 big 0 0
+ const (64) int 6 0
+ecom:
+const (48) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b7 big 0 0
+ const (72) int 6 0
+ecom:
+name files list of string 0 0
+ecom to:
+* list of string 8 0
+ name .ret int 0 0
+ecom:
+= int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+name i int 0 0
+ecom:
+* string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t6 string 0 0
+eacom:
+* string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t6 ref Sys->Dir 0 0
+eacom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+generate desc for big
+ecom:
+indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .b7 big 0 0
+eacom:
+* string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ - int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ - int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom to:
+name .t8 ref Sys->Dir 0 0
+eacom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ - int 10 1
+ name i int 0 0
+ const (1) int 6 0
+generate desc for big
+ecom:
+indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ - int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom to:
+name .b7 big 0 0
+eacom:
+- int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+- int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom to:
+name .t9 int 0 0
+ecom:
+= ref Sys->Dir 10 1
+ name .t8 ref Sys->Dir 0 0
+ name nil ref Sys->Dir 1 0
+ecom:
+name nil ref Sys->Dir 1 0
+ecom to:
+name .t8 ref Sys->Dir 0 0
+ecom:
+= string 10 1
+ name .t6 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t6 string 0 0
+ecom:
+= array of ref Sys->Dir 10 2
+ slice array of ref Sys->Dir 10 2
+ name d array of ref Sys->Dir 0 0
+ seq no type 10 2
+ - int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ nothing no type 10 1
+ slice array of ref Sys->Dir 10 1
+ name d array of ref Sys->Dir 0 0
+ seq no type 10 1
+ name i int 0 0
+ nothing no type 10 1
+ecom:
+- int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom to:
+name .t9 int 0 0
+eacom:
+slice array of ref Sys->Dir 10 1
+ name d array of ref Sys->Dir 0 0
+ seq no type 10 1
+ name i int 0 0
+ nothing no type 10 1
+ecom:
+slice array of ref Sys->Dir 10 1
+ name d array of ref Sys->Dir 0 0
+ seq no type 10 1
+ name i int 0 0
+ nothing no type 10 1
+ecom to:
+name .t8 array of ref Sys->Dir 0 0
+ecom:
+len int 10 1
+ name d array of ref Sys->Dir 0 0
+ecom to:
+name .t10 int 0 0
+ecom:
+name d array of ref Sys->Dir 0 0
+ecom to:
+name .t8 array of ref Sys->Dir 0 0
+ecom:
+= array of ref Sys->Dir 10 1
+ name .t8 array of ref Sys->Dir 0 0
+ name nil array of ref Sys->Dir 1 0
+ecom:
+name nil array of ref Sys->Dir 1 0
+ecom to:
+name .t8 array of ref Sys->Dir 0 0
+ecom:
+-- int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom:
+-- int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+++ int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+= int 10 1
+ name i int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name i int 0 0
+eacom:
+call int 10 2
+ name match fn(pat: string, name: string): int 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom:
+call int 10 2
+ name match fn(pat: string, name: string): int 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t10 int 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b7 big 0 0
+ const (64) int 6 0
+ecom:
+* string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b7 big 0 0
+ const (72) int 6 0
+eacom:
+* string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t8 ref Sys->Dir 0 0
+eacom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+generate desc for big
+ecom:
+indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .b11 big 0 0
+ecom:
+= ref Sys->Dir 10 1
+ name .t8 ref Sys->Dir 0 0
+ name nil ref Sys->Dir 1 0
+ecom:
+name nil ref Sys->Dir 1 0
+ecom to:
+name .t8 ref Sys->Dir 0 0
+eacom:
+& int 10 1
+ * int 10 1
+ + int 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ const mode (48) int 6 0
+ const .i.80000000 (-2147483648) int 1 0
+ecom:
+& int 10 1
+ * int 10 1
+ + int 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ const mode (48) int 6 0
+ const .i.80000000 (-2147483648) int 1 0
+ecom to:
+name .t10 int 0 0
+eacom:
+* int 10 1
+ + int 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ const mode (48) int 6 0
+ecom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t8 ref Sys->Dir 0 0
+eacom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+generate desc for big
+ecom:
+indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .b11 big 0 0
+ecom:
+= ref Sys->Dir 10 1
+ name .t8 ref Sys->Dir 0 0
+ name nil ref Sys->Dir 1 0
+ecom:
+name nil ref Sys->Dir 1 0
+ecom to:
+name .t8 ref Sys->Dir 0 0
+ecom:
+= list of string 10 1
+ name files list of string 0 0
+ :: list of string 10 1
+ + string 10 1
+ name dir string 0 0
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ name files list of string 0 0
+ecom:
+:: list of string 10 1
+ + string 10 1
+ name dir string 0 0
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ name files list of string 0 0
+ecom to:
+name files list of string 0 0
+eacom:
++ string 10 1
+ name dir string 0 0
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom:
++ string 10 1
+ name dir string 0 0
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t8 string 0 0
+eacom:
+* string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t8 ref Sys->Dir 0 0
+eacom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+generate desc for big
+ecom:
+indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .b11 big 0 0
+ecom:
+= string 10 1
+ name .t8 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t8 string 0 0
+ecom:
+= list of string 10 2
+ name files list of string 0 0
+ :: list of string 10 2
+ + string 10 2
+ + string 10 1
+ name dir string 0 0
+ const / string 1 0
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ name files list of string 0 0
+ecom:
+:: list of string 10 2
+ + string 10 2
+ + string 10 1
+ name dir string 0 0
+ const / string 1 0
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ name files list of string 0 0
+ecom to:
+name files list of string 0 0
+eacom:
++ string 10 2
+ + string 10 1
+ name dir string 0 0
+ const / string 1 0
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom:
++ string 10 2
+ + string 10 1
+ name dir string 0 0
+ const / string 1 0
+ * string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t8 string 0 0
+ecom:
++ string 10 1
+ name dir string 0 0
+ const / string 1 0
+ecom to:
+name .t8 string 0 0
+eacom:
+* string 10 1
+ * ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .t6 ref Sys->Dir 0 0
+eacom:
+* ref Sys->Dir 10 1
+ indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+generate desc for big
+ecom:
+indx big 10 1
+ name d array of ref Sys->Dir 0 0
+ name i int 0 0
+ecom to:
+name .b11 big 0 0
+ecom:
+= ref Sys->Dir 10 1
+ name .t6 ref Sys->Dir 0 0
+ name nil ref Sys->Dir 1 0
+ecom:
+name nil ref Sys->Dir 1 0
+ecom to:
+name .t6 ref Sys->Dir 0 0
+ecom:
+= string 10 1
+ name .t8 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t8 string 0 0
+ecom:
+++ int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+name files list of string 0 0
+ecom to:
+* list of string 8 0
+ name .ret int 0 0
+fn: filepatdir
+64: argument pat string ref 5
+72: argument dir string ref 10
+80: argument files list of string ref 11
+88: argument mustbedir int ref 1
+92: local i int ref 15
+96: local .t10 int ref 1
+100: local .t9 int ref 1
+104: local d array of ref Sys->Dir ref 10
+112: local n int ref 4
+120: local .b11 big ref 4
+128: local .b7 big ref 4
+136: local dirname string ref 3
+144: local .t6 string ref 1
+152: local .t8 ref Sys->Dir ref 1
+generate desc for filepatdir
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap dir type string offset 72 (d->offset=72 start=0) returns 72
+descmap files type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap mustbedir type int offset 88 (d->offset=88 start=0) returns -1
+descmap i type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t10 type int offset 96 (d->offset=96 start=0) returns -1
+descmap .t9 type int offset 100 (d->offset=100 start=0) returns -1
+descmap d type array of ref Sys->Dir offset 104 (d->offset=104 start=0) returns 104
+descmap n type int offset 112 (d->offset=112 start=0) returns -1
+descmap .b11 type big offset 120 (d->offset=120 start=0) returns -1
+descmap .b7 type big offset 128 (d->offset=128 start=0) returns -1
+descmap dirname type string offset 136 (d->offset=136 start=0) returns 136
+descmap .t6 type string offset 144 (d->offset=144 start=0) returns 144
+descmap .t8 type ref Sys->Dir offset 152 (d->offset=152 start=0) returns 152
+fncom: match 4 44b4b8
+ecom:
+= int 10 1
+ name n int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name n int 0 0
+ecom:
+= int 10 1
+ name p int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name p int 0 0
+eacom:
+len int 10 1
+ name pat string 0 0
+ecom:
+len int 10 1
+ name pat string 0 0
+ecom to:
+name .t12 int 0 0
+ecom:
+= int 10 1
+ name r int 0 0
+ inds int 10 1
+ name pat string 0 0
+ ++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom:
+inds int 10 1
+ name pat string 0 0
+ ++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+name r int 0 0
+ecom:
+++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+name .t12 int 0 0
+ecom:
+= string 10 1
+ name pat string 0 0
+ slice string 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name p int 0 0
+ nothing no type 10 1
+ecom:
+slice string 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name p int 0 0
+ nothing no type 10 1
+ecom to:
+name pat string 0 0
+ecom:
+len int 10 1
+ name pat string 0 0
+ecom to:
+name .t12 int 0 0
+eacom:
+len int 10 1
+ name pat string 0 0
+ecom:
+len int 10 1
+ name pat string 0 0
+ecom to:
+name .t12 int 0 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+eacom:
+len int 10 1
+ name name string 0 0
+ecom:
+len int 10 1
+ name name string 0 0
+ecom to:
+name .t12 int 0 0
+eacom:
+call int 10 2
+ name match fn(pat: string, name: string): int 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ slice string 10 1
+ name name string 0 0
+ seq no type 10 1
+ name n int 0 0
+ nothing no type 10 1
+ecom:
+call int 10 2
+ name match fn(pat: string, name: string): int 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ slice string 10 1
+ name name string 0 0
+ seq no type 10 1
+ name n int 0 0
+ nothing no type 10 1
+ecom to:
+name .t12 int 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b13 big 0 0
+ const (64) int 6 0
+ecom:
+slice string 10 1
+ name name string 0 0
+ seq no type 10 1
+ name n int 0 0
+ nothing no type 10 1
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b13 big 0 0
+ const (72) int 6 0
+ecom:
+len int 10 1
+ name name string 0 0
+ecom to:
+name .t14 int 0 0
+ecom:
+name name string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b13 big 0 0
+ const (72) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+ecom:
+++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+eacom:
+len int 10 1
+ name name string 0 0
+ecom:
+len int 10 1
+ name name string 0 0
+ecom to:
+name .t14 int 0 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+ecom:
+= int 10 1
+ name s int 0 0
+ inds int 10 1
+ name name string 0 0
+ ++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom:
+inds int 10 1
+ name name string 0 0
+ ++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom to:
+name s int 0 0
+ecom:
+++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom to:
+name .t14 int 0 0
+ecom:
+= int 10 1
+ name matched int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name matched int 0 0
+ecom:
+= int 10 1
+ name invert int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name invert int 0 0
+ecom:
+= int 10 1
+ name first int 0 0
+ const (1) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+name first int 0 0
+eacom:
+len int 10 1
+ name pat string 0 0
+ecom:
+len int 10 1
+ name pat string 0 0
+ecom to:
+name .t14 int 0 0
+ecom:
+= (int, int, int) 10 2
+ tuple (int, int, int) 10 1
+ seq no type 10 1
+ name p int 0 0
+ seq no type 10 1
+ name r int 0 0
+ seq no type 10 1
+ name esc int 0 0
+ call (int, int, int) 10 2
+ name char fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name p int 0 0
+generate desc for (int, int, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type int offset 4 (d->offset=4 start=0) returns -1
+descmap t2 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for (int, int, int)
+ desc $-1,12,""
+ecom:
+call (int, int, int) 10 2
+ name char fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name p int 0 0
+ecom to:
+name .b15 (int, int, int) 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b13 big 0 0
+ const (64) int 6 0
+ecom:
+name p int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b13 big 0 0
+ const (72) int 6 0
+ecom:
+= int 10 1
+ name invert int 0 0
+ const (1) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+name invert int 0 0
+ecom:
+= int 10 1
+ name first int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name first int 0 0
+ecom:
+= int 10 1
+ name first int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name first int 0 0
+ecom:
+= (int, int, int) 10 2
+ tuple (int, int, int) 10 1
+ seq no type 10 1
+ name p int 0 0
+ seq no type 10 1
+ name lo int 0 0
+ seq no type 10 1
+ name hi int 0 0
+ call (int, int, int) 10 2
+ name range fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ - int 10 1
+ name p int 0 0
+ const (1) int 6 0
+generate desc for (int, int, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type int offset 4 (d->offset=4 start=0) returns -1
+descmap t2 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for (int, int, int)
+ desc $-1,12,""
+ecom:
+call (int, int, int) 10 2
+ name range fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ - int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+name .b15 (int, int, int) 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b13 big 0 0
+ const (64) int 6 0
+ecom:
+- int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b13 big 0 0
+ const (72) int 6 0
+ecom:
+= int 10 1
+ name matched int 0 0
+ const (1) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+name matched int 0 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+eacom:
+len int 10 1
+ name name string 0 0
+ecom:
+len int 10 1
+ name name string 0 0
+ecom to:
+name .t14 int 0 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+ecom:
+++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+eacom:
+len int 10 1
+ name name string 0 0
+ecom:
+len int 10 1
+ name name string 0 0
+ecom to:
+name .t14 int 0 0
+eacom:
+len int 10 1
+ name pat string 0 0
+ecom:
+len int 10 1
+ name pat string 0 0
+ecom to:
+name .t14 int 0 0
+ecom:
+inds int 10 1
+ name name string 0 0
+ ++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom to:
+name .t14 int 0 0
+ecom:
+++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom to:
+name .t12 int 0 0
+eacom:
+inds int 10 1
+ name pat string 0 0
+ ++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom:
+inds int 10 1
+ name pat string 0 0
+ ++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+name .t12 int 0 0
+ecom:
+++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+name .t16 int 0 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+eacom:
+len int 10 1
+ name name string 0 0
+ecom:
+len int 10 1
+ name name string 0 0
+ecom to:
+name .t16 int 0 0
+eacom:
+inds int 10 1
+ name name string 0 0
+ ++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom:
+inds int 10 1
+ name name string 0 0
+ ++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom to:
+name .t16 int 0 0
+ecom:
+++ int 10 1
+ name n int 0 0
+ const (1) int 6 0
+ecom to:
+name .t14 int 0 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+ecom:
+== int 10 1
+ name n int 0 0
+ len int 10 1
+ name name string 0 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+eacom:
+len int 10 1
+ name name string 0 0
+ecom:
+len int 10 1
+ name name string 0 0
+ecom to:
+name .t16 int 0 0
+fn: match
+64: argument pat string ref 11
+72: argument name string ref 10
+80: local n int ref 13
+84: local p int ref 11
+88: local r int ref 7
+92: local esc int ref 4
+96: local first int ref 4
+100: local invert int ref 3
+104: local matched int ref 3
+108: local s int ref 3
+112: local hi int ref 2
+116: local lo int ref 2
+120: local .t12 int ref 1
+124: local .t14 int ref 1
+128: local .t16 int ref 1
+136: local .b13 big ref 3
+144: local .b15 (int, int, int) ref 2
+generate desc for match
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap n type int offset 80 (d->offset=80 start=0) returns -1
+descmap p type int offset 84 (d->offset=84 start=0) returns -1
+descmap r type int offset 88 (d->offset=88 start=0) returns -1
+descmap esc type int offset 92 (d->offset=92 start=0) returns -1
+descmap first type int offset 96 (d->offset=96 start=0) returns -1
+descmap invert type int offset 100 (d->offset=100 start=0) returns -1
+descmap matched type int offset 104 (d->offset=104 start=0) returns -1
+descmap s type int offset 108 (d->offset=108 start=0) returns -1
+descmap hi type int offset 112 (d->offset=112 start=0) returns -1
+descmap lo type int offset 116 (d->offset=116 start=0) returns -1
+descmap .t12 type int offset 120 (d->offset=120 start=0) returns -1
+descmap .t14 type int offset 124 (d->offset=124 start=0) returns -1
+descmap .t16 type int offset 128 (d->offset=128 start=0) returns -1
+descmap .b13 type big offset 136 (d->offset=136 start=0) returns -1
+descmap adt offset 144
+descmap offset 144
+descmap t0 type int offset 144 (d->offset=0 start=144) returns -1
+descmap t1 type int offset 148 (d->offset=4 start=144) returns -1
+descmap t2 type int offset 152 (d->offset=8 start=144) returns -1
+descmap .b15 type (int, int, int) offset 144 (d->offset=144 start=0) returns -1
+fncom: range 2 4643d8
+ecom:
+= (int, int, int) 10 2
+ tuple (int, int, int) 10 1
+ seq nothing 10 1
+ name q int 0 0
+ seq nothing 10 1
+ name lo int 0 0
+ seq nothing 10 1
+ name nil polymorphic type 1 0
+ call (int, int, int) 10 2
+ name char fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name p int 0 0
+generate desc for (int, int, int)
+ecom:
+call (int, int, int) 10 2
+ name char fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name p int 0 0
+ecom to:
+name .b17 (int, int, int) 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (64) int 6 0
+ecom:
+name p int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (72) int 6 0
+ecom:
+= (int, int, int) 10 2
+ tuple (int, int, int) 10 1
+ seq nothing 10 1
+ name q1 int 0 0
+ seq nothing 10 1
+ name hi int 0 0
+ seq nothing 10 1
+ name esc int 0 0
+ call (int, int, int) 10 2
+ name char fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name q int 0 0
+ecom:
+call (int, int, int) 10 2
+ name char fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name q int 0 0
+ecom to:
+name q1 (int, int, int) 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (64) int 6 0
+ecom:
+name q int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (72) int 6 0
+ecom:
+= (int, int, int) 10 2
+ tuple (int, int, int) 10 1
+ seq no type 10 1
+ name q1 int 0 0
+ seq no type 10 1
+ name hi int 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ call (int, int, int) 10 2
+ name char fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name q1 int 0 0
+generate desc for (int, int, int)
+ecom:
+call (int, int, int) 10 2
+ name char fn(pat: string, p: int): (int, int, int) 11 1
+ seq no type 10 1
+ name pat string 0 0
+ seq no type 10 1
+ name q1 int 0 0
+ecom to:
+name .b17 (int, int, int) 0 0
+generate desc for big
+ecom:
+name pat string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (64) int 6 0
+ecom:
+name q1 int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (72) int 6 0
+ecom:
+tuple (int, int, int) 10 1
+ seq no type 10 1
+ name q1 int 0 0
+ seq no type 10 1
+ name lo int 0 0
+ seq no type 10 1
+ name hi int 0 0
+ecom to:
+* (int, int, int) 8 0
+ name .ret int 0 0
+ecom:
+name q1 int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (0) int 6 0
+ecom:
+name lo int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (4) int 6 0
+ecom:
+name hi int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (8) int 6 0
+ecom:
+tuple (int, int, int) 10 1
+ seq no type 10 1
+ name q int 0 0
+ seq no type 10 1
+ name lo int 0 0
+ seq no type 10 1
+ name lo int 0 0
+ecom to:
+* (int, int, int) 8 0
+ name .ret int 0 0
+ecom:
+name q int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (0) int 6 0
+ecom:
+name lo int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (4) int 6 0
+ecom:
+name lo int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (8) int 6 0
+fn: range
+64: argument pat string ref 3
+72: argument p int ref 1
+76: local lo int ref 4
+80: local q1 int ref 4
+84: local hi int ref 4
+88: local esc int ref 2
+92: local q int ref 3
+96: local .b18 big ref 3
+104: local .b17 (int, int, int) ref 2
+generate desc for range
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap p type int offset 72 (d->offset=72 start=0) returns -1
+descmap lo type int offset 76 (d->offset=76 start=0) returns -1
+descmap q1 type int offset 80 (d->offset=80 start=0) returns -1
+descmap hi type int offset 84 (d->offset=84 start=0) returns -1
+descmap esc type int offset 88 (d->offset=88 start=0) returns -1
+descmap q type int offset 92 (d->offset=92 start=0) returns -1
+descmap .b18 type big offset 96 (d->offset=96 start=0) returns -1
+descmap adt offset 104
+descmap offset 104
+descmap t0 type int offset 104 (d->offset=0 start=104) returns -1
+descmap t1 type int offset 108 (d->offset=4 start=104) returns -1
+descmap t2 type int offset 112 (d->offset=8 start=104) returns -1
+descmap .b17 type (int, int, int) offset 104 (d->offset=104 start=0) returns -1
+fncom: char 5 464498
+eacom:
+len int 10 1
+ name pat string 0 0
+ecom:
+len int 10 1
+ name pat string 0 0
+ecom to:
+name .t19 int 0 0
+ecom:
+tuple (int, int, int) 10 1
+ seq no type 10 1
+ name p int 0 0
+ seq no type 10 1
+ const (0) int 6 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+* (int, int, int) 8 0
+ name .ret int 0 0
+ecom:
+name p int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (4) int 6 0
+ecom:
+const (-1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (8) int 6 0
+ecom:
+= int 10 1
+ name r int 0 0
+ inds int 10 1
+ name pat string 0 0
+ ++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom:
+inds int 10 1
+ name pat string 0 0
+ ++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+name r int 0 0
+ecom:
+++ int 10 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+name .t19 int 0 0
+eacom:
+len int 10 1
+ name pat string 0 0
+ecom:
+len int 10 1
+ name pat string 0 0
+ecom to:
+name .t19 int 0 0
+ecom:
+tuple (int, int, int) 10 1
+ seq no type 10 1
+ name p int 0 0
+ seq no type 10 1
+ name r int 0 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+* (int, int, int) 8 0
+ name .ret int 0 0
+ecom:
+name p int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (0) int 6 0
+ecom:
+name r int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (4) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (8) int 6 0
+ecom:
+tuple (int, int, int) 10 2
+ seq no type 10 2
+ + int 15 1
+ name p int 0 0
+ const (1) int 6 0
+ seq no type 10 2
+ inds int 10 1
+ name pat string 0 0
+ name p int 0 0
+ seq no type 10 1
+ const (1) int 6 0
+ecom to:
+* (int, int, int) 8 0
+ name .ret int 0 0
+ecom:
++ int 15 1
+ name p int 0 0
+ const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (0) int 6 0
+ecom:
+inds int 10 1
+ name pat string 0 0
+ name p int 0 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (4) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * (int, int, int) 8 0
+ name .ret int 0 0
+ const (8) int 6 0
+fn: char
+64: argument pat string ref 4
+72: argument p int ref 7
+76: local r int ref 3
+80: local .t19 int ref 1
+generate desc for char
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap p type int offset 72 (d->offset=72 start=0) returns -1
+descmap r type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t19 type int offset 80 (d->offset=80 start=0) returns -1
+nil 'nil' ref 39
+nil '' ref 4
+variable '$Sys' val '"$Sys"'
+variable '.' val '"."'
+variable '..' val '".."'
+variable '.c0' val '.c0'
+variable '.i.80000000' val '.i.80000000'
+variable '.m.Readdir' val ''
+variable '.m.Sys' val ''
+variable '/' val '"/"'
+variable '/dis/lib/readdir.dis' val '"/dis/lib/r..."'
+variable 'nil' val ''
+variable 'rdir' val ''
+variable 'sys' val ''
+nil 'nil' ref 39
+nil '' ref 4
+generate desc for Filepat
+descmap offset 0
+descmap $Sys type string offset 0 (d->offset=0 start=0) returns 0
+descmap . type string offset 8 (d->offset=8 start=0) returns 8
+descmap .. type string offset 16 (d->offset=16 start=0) returns 16
+descmap .c0 type case int labels offset 24 (d->offset=24 start=0) returns -1
+descmap .i.80000000 type int offset 80 (d->offset=80 start=0) returns -1
+descmap / type string offset 88 (d->offset=88 start=0) returns 88
+descmap /dis/lib/readdir.dis type string offset 96 (d->offset=96 start=0) returns 96
+descmap nil type polymorphic type offset 104 (d->offset=104 start=0) returns 104
+descmap rdir type Readdir offset 112 (d->offset=112 start=0) returns 112
+descmap sys type Sys offset 120 (d->offset=120 start=0) returns 120
+R1: expand 44aeb8 46e488 46e928
+R1: match 44b4b8 46e548 471948
+R3: expand 46e488 44aeb8 46e928
+R3: match 46e548 44b4b8 471948
+313 instructions
+10 data elements
+7 type descriptors
+2 functions exported
+1600 stack size
+signed expand type fn(pat: string): list of string len 6 sig 0xaf4c19dd
+signed match type fn(pat: string, name: string): int len 7 sig 0x21e337e3
+signed Readdir->init type fn(path: string, sortkey: int): (array of ref Sys->Dir, int) len 116 sig 0x156cb1b
+signed Sys->tokenize type fn(s: string, delim: string): (int, list of string) len 13 sig 0x57338f20
--- /dev/null
+++ b/tests/fmttest.c
@@ -1,0 +1,31 @@
+#include "lib9.h"
+
+/*
+ lib9 does not install e, f, and g - so no float or double format
+ inferno-os/lib9/fmt.c
+ knownfmt
+ */
+
+void
+main(int argc, char *argv[])
+{
+ print("fmttest --\n");
+ print("hello world inferno-os\n");
+ print("x: %x\n", 0x87654321);
+ print("d: %d\n", 0x87654321);
+ print("s: %s\n", "hi there");
+ print("c: %c\n", '!');
+ print("smiley: %C\n", (Rune)0x263a);
+
+ print("%020.10d\n", 100);
+ print("%d %d %d\n", 1, 2222, 33333333);
+ print("%019d\n", 0);
+ print("%08d %08d %08d\n", 1, 2222, 33333333);
+ print("%08d %08d %08d\n", 1, 2222, 33333333);
+ print("%x %X %b\n", 0x11111111, 0xabcd1234, 12345);
+ print("%lld %lld %lld\n", 1LL, 222222222LL, 3333333333333LL);
+ print("%019lld %019lld %019lld\n", 1LL, 222222222LL, 3333333333333LL);
+ print("%020lld %020lld %020lld\n", 1LL, 222222222LL, 3333333333333LL);
+ print("%llx %llX %llb\n", 0x111111111111LL, 0xabcd12345678LL, 112342345LL);
+ exits(nil);
+}
--- /dev/null
+++ b/tests/fmttest3.c
@@ -1,0 +1,59 @@
+#include "lib9.h"
+#include "interp.h"
+
+void
+test(char *fmt, ...)
+{
+ va_list arg;
+ char fmtbuf[100], stdbuf[100];
+
+ va_start(arg, fmt);
+ vsnprint(fmtbuf, sizeof fmtbuf, fmt, arg);
+ va_end(arg);
+
+ va_start(arg, fmt);
+ vsnprint(stdbuf, sizeof stdbuf, fmt, arg);
+ va_end(arg);
+
+ if(strcmp(fmtbuf, stdbuf) != 0)
+ print("fmt %s: fmt=\"%s\" std=\"%s\"\n", fmt, fmtbuf, stdbuf);
+
+ print("fmt %s: %s\n", fmt, fmtbuf);
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ fmtinstall('g', gfltconv);
+ fmtinstall('G', gfltconv);
+ fmtinstall('e', gfltconv);
+ /* fmtinstall('E', gfltconv); */ /* avoid clash with ether address */
+ fmtinstall(0x00c9, gfltconv); /* L'É' */
+ fmtinstall('f', gfltconv);
+
+ print("fmttest3 --\n");
+ test("%f", 3.14159);
+ test("%f", 3.14159e10);
+ test("%f", 3.14159e-10);
+
+ test("%e", 3.14159);
+ test("%e", 3.14159e10);
+ test("%e", 3.14159e-10);
+
+ test("%g", 3.14159);
+ test("%g", 3.14159e10);
+ test("%g", 3.14159e-10);
+
+ test("%g", 2e25);
+ test("%.18g", 2e25);
+
+ test("%2.18g", 1.0);
+ test("%2.18f", 1.0);
+ test("%f", 3.1415927/4);
+
+ test("%20.10d", 12345);
+ test("%0.10d", 12345);
+
+ return 0;
+}
--- /dev/null
+++ b/tests/gfmttest.c
@@ -1,0 +1,33 @@
+#include "lib9.h"
+#include "interp.h"
+
+void
+main(int argc, char *argv[])
+{
+ char *str = "1e400";
+
+ fmtinstall('g', gfltconv);
+ fmtinstall('G', gfltconv);
+ fmtinstall('e', gfltconv);
+ /* fmtinstall('E', gfltconv); */ /* avoid clash with ether address */
+ fmtinstall(0x00c9, gfltconv); /* L'É' */
+ fmtinstall('f', gfltconv);
+
+ print("gfmttest --\n");
+ print("g: %g %g %g\n", 3.14159, 3.14159e10, 3.14159e-10);
+ print("e: %e %e %e\n", 3.14159, 3.14159e10, 3.14159e-10);
+ print("f: %f %f %f\n", 3.14159, 3.14159e10, 3.14159e-10);
+ print("3.14: %f %g %e\n", 3.14000, 3.14000, 3.14000);
+ print("%g %.18g\n", 2e25, 2e25);
+ print("%2.18g\n", 1.0);
+ print("%2.18f\n", 1.0);
+ print("%f\n", 3.1415927/4);
+ print("%d\n", 23);
+ print("%0.10d\n", 12345);
+
+ print("infinity %g\n", strtod(str,nil)); // infinity
+ print("NaN %g\n", 0./0.); // NaN
+ print("Eps %g\n", 2.2204460492503131e-16); // Eps
+ print("pi %g\n", 3.14159265358979323846); // pi
+ exits(nil);
+}
--- /dev/null
+++ b/tests/list.b
@@ -1,0 +1,21 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a : list of string;
+ b := list of {"yes", "no"};
+
+ a = "soy" :: a;
+ a = "test" :: a;
+ sys->print("should print yes result %s\n", hd b);
+ c := tl a;
+ sys->print("should print 2 no result %d\n", len a);
+}
--- /dev/null
+++ b/tests/mkfile
@@ -1,0 +1,19 @@
+<../mkconfig
+
+TARG=fmttest gfmttest strtodtest fmttest3 sizes # testintptr
+
+# limbo test programs
+DISTARG=1 2 3 4 5 adt array array1 array2 array3 arraybig arraysimple arraysimpleint byte case case1 casec excpt if list parent print print1 printsimple printvarargs real return retval sample string tuple unquote drawexample drawexample1 # alt alt1 drawcontext exceptions
+
+
+LIBS= bio\
+ math\
+ sec\
+ mp\
+ 9\
+ interp\
+
+
+BIN=$ROOT/$OBJDIR/bin
+
+<$ROOT/mkfiles/mkmany-$SHELLTYPE
--- /dev/null
+++ b/tests/print.b
@@ -1,0 +1,65 @@
+implement Sample;
+
+include "sys.m";
+ sys: Sys;
+
+Person : adt
+{
+ age : int;
+ next : cyclic ref Person;
+ age1 : int;
+ age2 : int;
+};
+
+Sample: module
+{
+ init: fn();
+ fn1: fn();
+ fn2: fn();
+ fn3: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a := 1;
+ b := 3;
+ c : int;
+ d : Person;
+
+ d.age = 10;
+ d.next = nil;
+ d.age1 = 20;
+ d.age2 = 30;
+ c = a*b + b*b*b*b + a;
+ fn3();
+ #fn1();
+ fn2();
+}
+
+fn1()
+{
+ d: Person;
+
+ d.age=40;
+ # d.next = nil;
+ d.age1 = 50;
+ d.age2 = 60;
+}
+
+fn2()
+{
+ s: string;
+
+ s = "testing the string";
+ sys->print("%s\n", s);
+}
+
+fn3()
+{
+ s: string;
+ s1: string;
+
+ s = "testing the string";
+ s1 = "testing again";
+}
--- /dev/null
+++ b/tests/print1.b
@@ -1,0 +1,15 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ sys->print("init %g %f\n", 3.14, 1.48);
+ sys->print("init %d\n", -1);
+}
--- /dev/null
+++ b/tests/printsimple.b
@@ -1,0 +1,14 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ sys->print("init 1\n");
+}
--- /dev/null
+++ b/tests/printvarargs.b
@@ -1,0 +1,14 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ sys->print("init 1 %s\n", "string");
+}
--- /dev/null
+++ b/tests/real.b
@@ -1,0 +1,18 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ r : real;
+
+ r = 3.14;
+ sys->print("should print 3.14 result %g\n", r);
+ sys->print("should print 3.14 result %f\n", r);
+}
--- /dev/null
+++ b/tests/return.b
@@ -1,0 +1,25 @@
+implement Emuinit;
+include "sys.m";
+ sys: Sys;
+
+Emuinit: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a : int;
+
+ a = calc(100);
+ sys->print("returned %d\n", a);
+}
+
+calc(n: int): int
+{
+ a : int;
+
+ a = n * n + 100;
+ return a;
+}
--- /dev/null
+++ b/tests/retval.b
@@ -1,0 +1,20 @@
+implement Sample;
+
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ a: int;
+
+ a = sys->print("testinng the return value\n");
+ sys->print("print returned %d\n", a);
+ a = sys->print("\n");
+ sys->print("print returned %d, should have been 1\n", a);
+}
--- /dev/null
+++ b/tests/sample.b
@@ -1,0 +1,30 @@
+implement Sample;
+include "sys.m";
+ sys: Sys;
+
+Sample: module
+{
+ init: fn();
+};
+
+init()
+{
+ sys = load Sys Sys->PATH;
+ sys->print("init 1\n");
+# sys->bind("#e", "/env", sys->MREPL|sys->MCREATE); # if #e not configured, that's fine
+# fd := sys->open("#e/", Sys->OREAD);
+# if(fd != nil)
+# sys->print("init 2 %q\n", sys->fd2path(fd));
+ i : int = 4;
+ i = i+100;
+ i = i-101;
+ case i {
+ 0 => sys->print("begins with a vowel\n");
+ 1 => sys->print("begins with a consonant\n");
+ 2 => sys->print("begins with a consonant\n");
+ 3 => sys->print("begins with a consonant\n");
+ 4 => sys->print("begins with a consonant\n");
+ * => sys->print("sorry don't understand\n");
+ }
+ sys->print("ending the program\n");
+}
--- /dev/null
+++ b/tests/sh.1.debug
@@ -1,0 +1,59067 @@
+declare module Sys
+declare module Draw
+declare module Bufio
+declare module BufioFill
+declare module ChanFill
+declare module String
+declare module Filepat
+declare module Env
+declare module Command
+declare module Sh
+declare module Shellbuiltin
+declare module YYSys
+variable 'SELF' val '"$self"'
+variable 'Sys->PATH' val '"$Sys"'
+variable 'Sys->Maxint' val '2147483647'
+variable 'Sys->QTDIR' val '128'
+variable 'Sys->QTAPPEND' val '64'
+variable 'Sys->QTEXCL' val '32'
+variable 'Sys->QTAUTH' val '8'
+variable 'Sys->QTTMP' val '4'
+variable 'Sys->QTFILE' val '0'
+variable 'Sys->nulldir' val 'Dir(nil, nil, nil, nil, (-1, -1, -1), -1, -1, -1, -1, -1, -1)'
+variable 'Sys->zerodir' val 'Dir(nil, nil, nil, nil, (0, 0, 0), 0, 0, 0, 0, 0, 0)'
+variable 'Sys->ATOMICIO' val '8192'
+variable 'Sys->SEEKSTART' val '0'
+variable 'Sys->SEEKRELA' val '1'
+variable 'Sys->SEEKEND' val '2'
+variable 'Sys->NAMEMAX' val '256'
+variable 'Sys->ERRMAX' val '128'
+variable 'Sys->WAITLEN' val '192'
+variable 'Sys->OREAD' val '0'
+variable 'Sys->OWRITE' val '1'
+variable 'Sys->ORDWR' val '2'
+variable 'Sys->OTRUNC' val '16'
+variable 'Sys->ORCLOSE' val '64'
+variable 'Sys->OEXCL' val '4096'
+variable 'Sys->DMDIR' val '-2147483648'
+variable 'Sys->DMAPPEND' val '1073741824'
+variable 'Sys->DMEXCL' val '536870912'
+variable 'Sys->DMAUTH' val '134217728'
+variable 'Sys->DMTMP' val '67108864'
+variable 'Sys->MREPL' val '0'
+variable 'Sys->MBEFORE' val '1'
+variable 'Sys->MAFTER' val '2'
+variable 'Sys->MCREATE' val '4'
+variable 'Sys->MCACHE' val '16'
+variable 'Sys->NEWFD' val '(1)'
+variable 'Sys->FORKFD' val '(2)'
+variable 'Sys->NEWNS' val '(4)'
+variable 'Sys->FORKNS' val '(8)'
+variable 'Sys->NEWPGRP' val '(16)'
+variable 'Sys->NODEVS' val '(32)'
+variable 'Sys->NEWENV' val '(64)'
+variable 'Sys->FORKENV' val '(128)'
+variable 'Sys->EXPWAIT' val '0'
+variable 'Sys->EXPASYNC' val '1'
+variable 'Sys->UTFmax' val '4'
+variable 'Sys->UTFerror' val '65533'
+variable 'Sys->Runemax' val '1114111'
+variable 'Sys->Runemask' val '2097151'
+variable 'Draw->PATH' val '"$Draw"'
+variable 'Draw->Opaque' val '-1'
+variable 'Draw->Transparent' val '0'
+variable 'Draw->Black' val '255'
+variable 'Draw->White' val '-1'
+variable 'Draw->Red' val '-16776961'
+variable 'Draw->Green' val '16711935'
+variable 'Draw->Blue' val '65535'
+variable 'Draw->Cyan' val '16777215'
+variable 'Draw->Magenta' val '-16711681'
+variable 'Draw->Yellow' val '-65281'
+variable 'Draw->Grey' val '-286331137'
+variable 'Draw->Paleyellow' val '-21761'
+variable 'Draw->Darkyellow' val '-286351617'
+variable 'Draw->Darkgreen' val '1149781247'
+variable 'Draw->Palegreen' val '-1426085121'
+variable 'Draw->Medgreen' val '-1999861505'
+variable 'Draw->Darkblue' val '22015'
+variable 'Draw->Palebluegreen' val '-1426063361'
+variable 'Draw->Paleblue' val '48127'
+variable 'Draw->Bluegreen' val '8947967'
+variable 'Draw->Greygreen' val '1437248255'
+variable 'Draw->Palegreygreen' val '-1628508417'
+variable 'Draw->Yellowgreen' val '-1718006529'
+variable 'Draw->Medblue' val '39423'
+variable 'Draw->Greyblue' val '6142975'
+variable 'Draw->Palegreyblue' val '1234427391'
+variable 'Draw->Purpleblue' val '-2004300545'
+variable 'Draw->Notacolor' val '-256'
+variable 'Draw->Nofill' val 'Notacolor'
+variable 'Draw->Endsquare' val '0'
+variable 'Draw->Enddisc' val '1'
+variable 'Draw->Endarrow' val '2'
+variable 'Draw->Flushoff' val '0'
+variable 'Draw->Flushon' val '1'
+variable 'Draw->Flushnow' val '2'
+variable 'Draw->Refbackup' val '0'
+variable 'Draw->Refnone' val '1'
+variable 'Draw->SinD' val '8'
+variable 'Draw->DinS' val '4'
+variable 'Draw->SoutD' val '2'
+variable 'Draw->DoutS' val '1'
+variable 'Draw->S' val '10'
+variable 'Draw->SoverD' val '11'
+variable 'Draw->SatopD' val '9'
+variable 'Draw->SxorD' val '3'
+variable 'Draw->D' val '5'
+variable 'Draw->DoverS' val '7'
+variable 'Draw->DatopS' val '6'
+variable 'Draw->DxorS' val '3'
+variable 'Draw->Clear' val '0'
+variable 'Draw->CRed' val 'iota'
+variable 'Draw->CGreen' val 'iota'
+variable 'Draw->CBlue' val 'iota'
+variable 'Draw->CGrey' val 'iota'
+variable 'Draw->CAlpha' val 'iota'
+variable 'Draw->CMap' val 'iota'
+variable 'Draw->CIgnore' val 'iota'
+variable 'Draw->GREY1' val 'Chans(49)'
+variable 'Draw->GREY2' val 'Chans(50)'
+variable 'Draw->GREY4' val 'Chans(52)'
+variable 'Draw->GREY8' val 'Chans(56)'
+variable 'Draw->CMAP8' val 'Chans(88)'
+variable 'Draw->RGB15' val 'Chans(1627723045)'
+variable 'Draw->RGB16' val 'Chans(333349)'
+variable 'Draw->RGB24' val 'Chans(530472)'
+variable 'Draw->RGBA32' val 'Chans(402663496)'
+variable 'Draw->ARGB32' val 'Chans(1208490024)'
+variable 'Draw->XRGB32' val 'Chans(1745360936)'
+variable 'Bufio->PATH' val '"/dis/lib/b..."'
+variable 'Bufio->SEEKSTART' val 'SEEKSTART'
+variable 'Bufio->SEEKRELA' val 'SEEKRELA'
+variable 'Bufio->SEEKEND' val 'SEEKEND'
+variable 'Bufio->OREAD' val 'OREAD'
+variable 'Bufio->OWRITE' val 'OWRITE'
+variable 'Bufio->ORDWR' val 'ORDWR'
+variable 'Bufio->EOF' val '-1'
+variable 'Bufio->ERROR' val '-2'
+variable 'ChanFill->PATH' val '"/dis/lib/c..."'
+variable 'String->PATH' val '"/dis/lib/s..."'
+variable 'Filepat->PATH' val '"/dis/lib/f..."'
+variable 'Env->PATH' val '"/dis/lib/e..."'
+variable 'Command->PATH' val '"/dis/sh.di..."'
+variable 'PATH' val '"/dis/sh.di..."'
+variable 'Context.INTERACTIVE' val '1'
+variable 'Context.VERBOSE' val '2'
+variable 'Context.EXECPRINT' val '4'
+variable 'Context.ERROREXIT' val '8'
+variable 'Var.CHANGED' val '(1)'
+variable 'Var.NOEXPORT' val '(2)'
+variable 'n_BLOCK' val 'iota'
+variable 'n_VAR' val 'iota'
+variable 'n_BQ' val 'iota'
+variable 'n_BQ2' val 'iota'
+variable 'n_REDIR' val 'iota'
+variable 'n_DUP' val 'iota'
+variable 'n_LIST' val 'iota'
+variable 'n_SEQ' val 'iota'
+variable 'n_CONCAT' val 'iota'
+variable 'n_PIPE' val 'iota'
+variable 'n_ADJ' val 'iota'
+variable 'n_WORD' val 'iota'
+variable 'n_NOWAIT' val 'iota'
+variable 'n_SQUASH' val 'iota'
+variable 'n_COUNT' val 'iota'
+variable 'n_ASSIGN' val 'iota'
+variable 'n_LOCAL' val 'iota'
+variable 'GLOB' val '1'
+variable 'Shellbuiltin->BUILTIN' val 'iota'
+variable 'Shellbuiltin->SBUILTIN' val 'iota'
+variable 'Shellbuiltin->OTHER' val 'iota'
+variable 'YYLEX.EOF' val '-1'
+variable 'DUP' val '57346'
+variable 'REDIR' val '57347'
+variable 'WORD' val '57348'
+variable 'OP' val '57349'
+variable 'END' val '57350'
+variable 'ERROR' val '57351'
+variable 'ANDAND' val '57352'
+variable 'OROR' val '57353'
+variable 'YYEOFCODE' val '1'
+variable 'YYERRCODE' val '2'
+variable 'YYMAXDEPTH' val '200'
+variable 'EPERM' val '"permission..."'
+variable 'EPIPE' val '"write on c..."'
+variable 'LIBSHELLRC' val '"/lib/sh/pr..."'
+variable 'BUILTINPATH' val '"/dis/sh"'
+variable 'DEBUG' val '0'
+variable 'ENVSEP' val '0'
+variable 'ENVHASHSIZE' val '7'
+variable 'OAPPEND' val '524288'
+variable 'OMASK' val '7'
+variable 'NOTOKEN' val '-1'
+generate desc for int
+generate desc for int
+ desc $-1,4,""
+variable 'YYNPROD' val '45'
+variable 'YYPRIVATE' val '57344'
+variable 'yydebug' val '0'
+variable 'YYLAST' val '93'
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+variable 'YYFLAG' val '-1000'
+typecheck tree:
+fn(){} fn() 0 0
+ name usage fn() 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stderr nothing 0 0
+ seq nothing 0 0
+ const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 0 0
+ seq nothing 0 0
+ raise nothing 0 0
+ const fail:usage string 0 0
+typecheck tree:
+fn(){} fn(path: string) 0 0
+ name badmodule fn(path: string) 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fildes nothing 0 0
+ seq nothing 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ const sh: cannot load %s: %r
+ string 0 0
+ seq nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ raise nothing 0 0
+ const fail:bad module string 0 0
+typecheck tree:
+fn(){} fn() 0 0
+ name initialise fn() 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name sys nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name sys nothing 0 0
+ load Sys 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name filepat nothing 0 0
+ load Filepat 0 0
+ -> nothing 0 0
+ name Filepat nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name filepat nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name badmodule nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Filepat nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name str nothing 0 0
+ load String 0 0
+ -> nothing 0 0
+ name String nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name str nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name badmodule nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name String nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name bufio nothing 0 0
+ load Bufio 0 0
+ -> nothing 0 0
+ name Bufio nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name bufio nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name badmodule nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Bufio nothing 0 0
+ name PATH nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name myself nothing 0 0
+ load Sh 0 0
+ const $self string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name myself nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name badmodule nothing 0 0
+ seq nothing 0 0
+ const $self(Sh) string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name myselfbuiltin nothing 0 0
+ load Shellbuiltin 0 0
+ const $self string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name myselfbuiltin nothing 0 0
+
+typecheck tree:
+fn(){} fn(drawcontext: ref Draw->Context, argv: list of string) 0 0
+ name init fn(ctxt: ref Draw->Context, argv: list of string) 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name initialise nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name opts nothing 0 0
+ name blankopts nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name argv nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ const (0) int 0 0
+ const (45) int 0 0
+ seq nothing 0 0
+ ++ nothing 0 0
+ . nothing 0 0
+ name opts nothing 0 0
+ name lflag nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name argv nothing 0 0
+ tl nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name interactive nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ && nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ name argv nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ index nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ const (0) int 0 0
+ const (45) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name c nothing 0 0
+ index nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ name c nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (105) int 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name interactive nothing 0 0
+ . nothing 0 0
+ name Context nothing 0 0
+ name INTERACTIVE nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (108) int 0 0
+ scope nothing 0 0
+ ++ nothing 0 0
+ . nothing 0 0
+ name opts nothing 0 0
+
+typecheck tree:
+fn(){} fn(s: string): (ref Node, string) 0 0
+ name parse fn(s: string): (ref Node, string) 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name initialise nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name lex nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name YYLEX nothing 0 0
+ name initstring nothing 0 0
+ seq nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name doparse nothing 0 0
+ seq nothing 0 0
+ name lex nothing 0 0
+ seq nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+typecheck tree:
+fn(){} fn(drawctxt: ref Draw->Context, cmd: string): string 0 0
+ name system fn(drawctxt: ref Draw->Context, cmd: string): string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name initialise nothing 0 0
+ seq nothing 0 0
+ exstat nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ name err nothing 0 0
+ call nothing 0 0
+ name parse nothing 0 0
+ seq nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name err nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name err nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name Context nothing 0 0
+ name new nothing 0 0
+ seq nothing 0 0
+ name drawctxt nothing 0 0
+ name run nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ except nothing 0 0
+ name e nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const fail:* string 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name failurestatus nothing 0 0
+ seq nothing 0 0
+ name e nothing 0 0
+typecheck tree:
+fn(){} fn(drawctxt: ref Draw->Context, argv: list of string): string 0 0
+ name run fn(drawctxt: ref Draw->Context, argv: list of string): string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name initialise nothing 0 0
+ seq nothing 0 0
+ exstat nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name Context nothing 0 0
+ name new nothing 0 0
+ seq nothing 0 0
+ name drawctxt nothing 0 0
+ name run nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stringlist2list nothing 0 0
+ seq nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ except nothing 0 0
+ name e nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const fail:* string 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name failurestatus nothing 0 0
+ seq nothing 0 0
+ name e nothing 0 0
+typecheck tree:
+fn(){} fn(fd: ref Sys->FD): int 0 0
+ name isconsole fn(fd: ref Sys->FD): int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name ok1 nothing 0 0
+ seq nothing 0 0
+ name d1 nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fstat nothing 0 0
+ seq nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name ok2 nothing 0 0
+ seq nothing 0 0
+ name d2 nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name stat nothing 0 0
+ seq nothing 0 0
+ const /dev/cons string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ < nothing 0 0
+ name ok1 nothing 0 0
+ const (0) int 0 0
+ < nothing 0 0
+ name ok2 nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name d1 nothing 0 0
+ name dtype nothing 0 0
+ . nothing 0 0
+ name d2 nothing 0 0
+ name dtype nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name d1 nothing 0 0
+ name qid nothing 0 0
+ name path nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name d2 nothing 0 0
+ name qid nothing 0 0
+ name path nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 0 0
+ name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 0 0
+ seq nothing 0 0
+ exstat nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name fd nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name open nothing 0 0
+ seq nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OREAD nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name fd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name runfile nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ if nothing 0 0
+ name reporterr nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad script path string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const sh: cannot open %s: %r string 0 0
+ seq nothing 0 0
+ name path nothing 0 0
+ except nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const fail:* string 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ ! nothing 0 0
+ name reporterr nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ raise nothing 0 0
+ nothing nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 0 0
+ name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name push nothing 0 0
+ seq nothing 0 0
+ exstat nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name setlocal nothing 0 0
+ seq nothing 0 0
+ const 0 string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stringlist2list nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ name path nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name setlocal nothing 0 0
+ seq nothing 0 0
+ const * string 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name lex nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name YYLEX nothing 0 0
+ name initfile nothing 0 0
+ seq nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name DEBUG nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name debug nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const parse(interactive == %d) string 0 0
+ seq nothing 0 0
+ != nothing 0 0
+ & nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name options nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name INTERACTIVE nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name prompt nothing 0 0
+ :: nothing 0 0
+ const string 0 0
+ :: nothing 0 0
+ const string 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ ! nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name eof nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name interactive nothing 0 0
+ & nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name options nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+
+typecheck tree:
+fn(){} fn(e: string): int 0 0
+ name nonexistent fn(e: string): int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name errs nothing 0 0
+ array nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const does not exist string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const directory entry not found string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name errs nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name j nothing 0 0
+ len nothing 0 0
+ index nothing 0 0
+ name errs nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ <= nothing 0 0
+ name j nothing 0 0
+ len nothing 0 0
+ name e nothing 0 0
+ == nothing 0 0
+ slice nothing 0 0
+ name e nothing 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ name e nothing 0 0
+ name j nothing 0 0
+ nothing nothing 0 0
+ index nothing 0 0
+ name errs nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (1) int 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (0) int 0 0
+typecheck tree:
+fn(){} fn(n: ref Node): ref Node 0 0
+ name pipe2cmd fn(n: ref Node): ref Node 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ name n_PIPE nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name mk nothing 0 0
+ seq nothing 0 0
+ name n_ADJ nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name mk nothing 0 0
+ seq nothing 0 0
+ name n_BLOCK nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name mk nothing 0 0
+ seq nothing 0 0
+ name n_VAR nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Node nothing 0 0
+ seq nothing 0 0
+ name n_WORD nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ const * string 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, n: ref Node, last: int): string 0 0
+ name walk fn(ctxt: ref Context, n: ref Node, last: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name DEBUG nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name debug nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const walking: %s string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ name n_SEQ nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name walk nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ & nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name options nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name ERROREXIT nothing 0 0
+ != nothing 0 0
+ name status nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ raise nothing 0 0
+ + nothing 0 0
+ const fail: string 0 0
+ name status nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name setstatus nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name status nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name n nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name n_PIPE nothing 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name waitfor nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name walkpipeline nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ - nothing 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+ name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name redirs nothing 0 0
+ ref nothing 0 0
+ name Redirlist nothing 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ name nil polymorphic type 0 0
+ || nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ name ntype nothing 0 0
+ name n_ASSIGN nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ name ntype nothing 0 0
+ name n_LOCAL nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name val nothing 0 0
+ call nothing 0 0
+ name assign nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ = nothing 0 0
+ name val nothing 0 0
+ call nothing 0 0
+ name glob nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name glom nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name vars nothing 0 0
+ call nothing 0 0
+ name glom nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name vars nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad assign string 0 0
+ seq nothing 0 0
+ const sh: nil variable name string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name redirs nothing 0 0
+ name r nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad assign string 0 0
+ seq nothing 0 0
+ const sh: redirections not allowed in assignment string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name tval nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ for nothing
+typecheck tree:
+fn(){} fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 0 0
+ name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name fds nothing 0 0
+ array array of ref Sys->FD 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ vardecl list of int 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name rfdno nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ name n_PIPE nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pipe nothing 0 0
+ seq nothing 0 0
+ name fds nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const no pipe string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const sh: cannot make pipe: %r string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name nwfdno nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name redir nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name fd1 nothing 0 0
+ seq nothing 0 0
+ name fd2 nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name redir nothing 0 0
+ name fd2 nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name redir nothing 0 0
+ name fd1 nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+typecheck tree:
+fn(){} fn(f: string, mode: int, fd: int): Redirword 0 0
+ name makeredir fn(f: string, mode: int, fd: int): Redirword 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name Redirword nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name f nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name Redir nothing 0 0
+ seq nothing 0 0
+ name mode nothing 0 0
+ seq nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 0 0
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ name n_ADJ nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name listjoin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name glomoperation nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+ name onto nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name nlist nothing 0 0
+ call nothing 0 0
+ name glom nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+ name onto nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ name ntype nothing 0 0
+ name n_ADJ nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name nlist nothing 0 0
+ call nothing 0 0
+ name listjoin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name glomoperation nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+ name nlist nothing 0 0
+ = nothing 0 0
+ name nlist nothing 0 0
+ call nothing 0 0
+ name glom nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+ name nlist nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nlist nothing 0 0
+typecheck tree:
+fn(){} fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 0 0
+ name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name left nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name left nothing 0 0
+ name l nothing 0 0
+ = nothing 0 0
+ name left nothing 0 0
+ tl nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name l nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name right nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name l nothing 0 0
+ name right nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ tl nothing 0 0
+ name l nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name right nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 0 0
+ name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name redir nothing 0 0
+ name fd2 nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ & nothing 0 0
+ . nothing 0 0
+ name redir nothing 0 0
+ name rtype nothing 0 0
+ name OAPPEND nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad redir string 0 0
+ seq nothing 0 0
+ const sh: bad redirection string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name r nothing 0 0
+ * nothing 0 0
+ name redir nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ . nothing 0 0
+ name redir nothing 0 0
+ name rtype nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OREAD nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name r nothing 0 0
+ name rtype nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OWRITE nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OWRITE nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name r nothing 0 0
+ name rtype nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OREAD nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name p nothing 0 0
+ array array of ref Sys->FD 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pipe nothing 0 0
+ seq nothing 0 0
+ name p nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const no pipe string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const sh: cannot make pipe: %r string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name startchan nothing 0 0
+ chan chan of (int, ref Expropagate) 0 0
+ seq nothing 0 0
+ spawn nothing 0 0
+ call nothing 0 0
+ name runasync nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Redirlist nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 0 0
+ name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name n_WORD nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name nlist nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name n_REDIR nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name wlist nothing 0 0
+ call nothing 0 0
+ name glob nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name glom nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Redirlist nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ if nothing 0 0
+ != nothing 0 0
+ len nothing 0 0
+ name wlist nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad redir string 0 0
+ seq nothing 0 0
+ const sh: single redirection operand required string 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name wlist nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name fd nothing 0 0
+ call nothing 0 0
+ name pipecmd nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+ name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ || nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ name n_SEQ nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ name n_PIPE nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ name n_NOWAIT nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad $ arg string 0 0
+ seq nothing 0 0
+ const sh: invalid argument to ${} operator string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name r nothing 0 0
+ ref nothing 0 0
+ name Redirlist nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name cmd nothing 0 0
+ call nothing 0 0
+ name glob nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name glom nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name r nothing 0 0
+ name r nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad $ arg string 0 0
+ seq nothing 0 0
+ const sh: redirection not allowed in substitution string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name r nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name cmd nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name cmd nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad $ arg string 0 0
+ seq nothing 0 0
+ const sh: bad builtin name string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name bmods nothing 0 0
+ call nothing 0 0
+ name findbuiltin nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothi
+typecheck tree:
+fn(){} fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 0 0
+ name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name buf nothing 0 0
+ array array of byte 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name ATOMICIO nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name buflen nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ > nothing 0 0
+ := nothing 0 0
+ name n nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name read nothing 0 0
+ seq nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ slice nothing 0 0
+ name buf nothing 0 0
+ seq nothing 0 0
+ name buflen nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ name buf nothing 0 0
+ name buflen nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name buflen nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name buflen nothing 0 0
+ len nothing 0 0
+ name buf nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name nbuf nothing 0 0
+ array array of byte 0 0
+ * nothing 0 0
+ name buflen nothing 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ slice nothing 0 0
+ name nbuf nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ nothing nothing 0 0
+ slice nothing 0 0
+ name buf nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name buf nothing 0 0
+ name nbuf nothing 0 0
+ seq nothing 0 0
+ vardecl list of string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name seps nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name l nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name tokenize nothing 0 0
+ seq nothing 0 0
+ cast string 0 0
+ slice nothing 0 0
+ name buf nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ name buflen nothing 0 0
+ seq nothing 0 0
+ name seps nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ :: nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 0 0
+ name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name fds nothing 0 0
+ array array of ref Sys->FD 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pipe nothing 0 0
+ seq nothing 0 0
+ name fds nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const no pipe string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const sh: cannot make pipe: %r string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name r nothing 0 0
+ call nothing 0 0
+ name rdir nothing 0 0
+ seq nothing 0 0
+ index nothing 0 0
+ name fds nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ name fds nothing 0 0
+ const (1) int 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name startchan nothing 0 0
+ chan chan of (int, ref Expropagate) 0 0
+ seq nothing 0 0
+ spawn nothing 0 0
+ call nothing 0 0
+ name runasync nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ name startchan nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name exepid nothing 0 0
+ seq nothing 0 0
+ name exprop nothing 0 0
+ <- nothing 0 0
+ name startchan nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name r nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name bqlist nothing 0 0
+ call nothing 0 0
+ name getbq nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ index nothing 0 0
+ name fds nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ name seps nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name waitfor nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ name exepid nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name exprop nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic ty
+typecheck tree:
+fn(){} fn(fd: ref Sys->FD): ref Redirlist 0 0
+ name rdir fn(fd: ref Sys->FD): ref Redirlist 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Redirlist nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ call nothing 0 0
+ name Redirword nothing 0 0
+ seq nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name Redir nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OWRITE nothing 0 0
+ seq nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 0 0
+ name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name p1 nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name p1 nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name p1 nothing 0 0
+ name word nothing 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name p1 nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name p2 nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name p2 nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name p2 nothing 0 0
+ name word nothing 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name p2 nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ . nothing 0 0
+ name p1 nothing 0 0
+ name word nothing 0 0
+ . nothing 0 0
+ name p2 nothing 0 0
+ name word nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 0 0
+ name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name nl1 nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ name nl2 nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ name nl1 nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ name nl2 nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad concatenation string 0 0
+ seq nothing 0 0
+ const sh: null list in concatenation string 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ tl nothing 0 0
+ name nl1 nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ tl nothing 0 0
+ name nl2 nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name p1 nothing 0 0
+ name nl1 nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name p1 nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name p2 nothing 0 0
+ name nl2 nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name p2 nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name ret nothing 0 0
+ :: nothing 0 0
+ call nothing 0 0
+ name concatwords nothing 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name p1 nothing 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name p2 nothing 0 0
+ name ret nothing 0 0
+ = nothing 0 0
+ name p2 nothing 0 0
+ tl nothing 0 0
+ name p2 nothing 0 0
+ = nothing 0 0
+ name p1 nothing 0 0
+ tl nothing 0 0
+ name p1 nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ len nothing 0 0
+ name nl1 nothing 0 0
+ len nothing 0 0
+ name nl2 nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad con
+typecheck tree:
+fn(){} fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 0 0
+ name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name pid nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pctl nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name FORKFD nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name DEBUG nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name debug nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const in async (len redirs: %d) string 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name redirs nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name ctxt nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name copy nothing 0 0
+ seq nothing 0 0
+ name copyenv nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name exprop nothing 0 0
+ ref nothing 0 0
+ name Expropagate nothing 0 0
+ seq nothing 0 0
+ exstat nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name newfdl nothing 0 0
+ call nothing 0 0
+ name doredirs nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name redirs nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name newfdl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pctl nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name NEWFD nothing 0 0
+ seq nothing 0 0
+ name newfdl nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name waitfd nothing 0 0
+ call nothing 0 0
+ name waitfd nothing 0 0
+ seq nothing 0 0
+ <-= nothing 0 0
+ name startchan nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name pid nothing 0 0
+ seq nothing 0 0
+ name exprop nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name startchan nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 0 0
+ name runsync fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name DEBUG nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name debug nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const in sync (len redirs: %d; last: %d) string 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name redirs nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ name last nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name redirs nothing 0 0
+ name r nothing 0 0
+ name nil polymorphic type 0 0
+ ! nothing 0 0
+ name last nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name startchan nothing 0 0
+ chan chan of (int, ref Expropagate) 0 0
+ seq nothing 0 0
+ spawn nothing 0 0
+ call nothing 0 0
+ name runasync nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+ name startchan nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name pid nothing 0 0
+ seq nothing 0 0
+ name exprop nothing 0 0
+ <- nothing 0 0
+ name startchan nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name redirs nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name r nothing 0 0
+ call nothing 0 0
+ name waitfor nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ name pid nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name exprop nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ raise nothing 0 0
+ . nothing 0 0
+ name exprop nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name r nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name newfdl nothing 0 0
+ call nothing 0 0
+ name doredirs nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name redirs nothing 0 0
+ seq nothing 0 0
+
+typecheck tree:
+fn(){} fn(p: string): int 0 0
+ name absolute fn(p: string): int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ < nothing 0 0
+ len nothing 0 0
+ name p nothing 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name p nothing 0 0
+ const (0) int 0 0
+ const (47) int 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name p nothing 0 0
+ const (0) int 0 0
+ const (35) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ < nothing 0 0
+ len nothing 0 0
+ name p nothing 0 0
+ const (3) int 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name p nothing 0 0
+ const (0) int 0 0
+ const (46) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name p nothing 0 0
+ const (1) int 0 0
+ const (47) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name p nothing 0 0
+ const (1) int 0 0
+ const (46) int 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name p nothing 0 0
+ const (2) int 0 0
+ const (47) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (0) int 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+ name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name progname nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name disfile nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ >= nothing 0 0
+ len nothing 0 0
+ name progname nothing 0 0
+ const (4) int 0 0
+ == nothing 0 0
+ slice nothing 0 0
+ name progname nothing 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ name progname nothing 0 0
+ const (4) int 0 0
+ nothing nothing 0 0
+ const .dis string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name disfile nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ vardecl list of string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ call nothing 0 0
+ name absolute nothing 0 0
+ seq nothing 0 0
+ name progname nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name pathlist nothing 0 0
+ :: nothing 0 0
+ const string 0 0
+ name nil polymorphic type 0 0
+ if nothing 0 0
+ != nothing 0 0
+ := nothing 0 0
+ name pl nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name get nothing 0 0
+ seq nothing 0 0
+ const path string 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name pathlist nothing 0 0
+ call nothing 0 0
+ name list2stringlist nothing 0 0
+ seq nothing 0 0
+ name pl nothing 0 0
+ = nothing 0 0
+ name pathlist nothing 0 0
+ :: nothing 0 0
+ const /dis string 0 0
+ :: nothing 0 0
+ const . string 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name err nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ do nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ name pathlist nothing 0 0
+ name nil polymorphic type 0 0
+ call nothing 0 0
+ name nonexistent nothing 0 0
+ seq nothing 0 0
+ name err nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ hd nothing 0 0
+ name pathlist nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name path nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ hd nothing 0 0
+ name pathlist nothing 0 0
+ const / string 0 0
+ name progname nothing 0 0
+
+typecheck tree:
+fn(){} fn(e: string): string 0 0
+ name failurestatus fn(e: string): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name s nothing 0 0
+ slice nothing 0 0
+ name e nothing 0 0
+ seq nothing 0 0
+ const (5) int 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ name s nothing 0 0
+ name nil polymorphic type 0 0
+ || nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ const (0) int 0 0
+ const (32) int 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ const (0) int 0 0
+ const (9) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ slice nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ const (1) int 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name s nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const failed string 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 0 0
+ name runhashpling fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name header nothing 0 0
+ array array of byte 0 0
+ const (1024) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name n nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name read nothing 0 0
+ seq nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ name header nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ name header nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name header nothing 0 0
+ name i nothing 0 0
+ cast byte 0 0
+ const (10) int 0 0
+ seq nothing 0 0
+ break nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ || nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name i nothing 0 0
+ name n nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ const (3) int 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name header nothing 0 0
+ const (0) int 0 0
+ cast byte 0 0
+ const (35) int 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name header nothing 0 0
+ const (1) int 0 0
+ cast byte 0 0
+ const (33) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name diagnostic nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ const bad script header on string 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const bad header string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name tokenize nothing 0 0
+ seq nothing 0 0
+ cast string 0 0
+ slice nothing 0 0
+ name header nothing 0 0
+ seq nothing 0 0
+ const (2) int 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name diagnostic nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ con
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+ name runblock fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name cmd nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name lex nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name YYLEX nothing 0 0
+ name initstring nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ name err nothing 0 0
+ call nothing 0 0
+ name doparse nothing 0 0
+ seq nothing 0 0
+ name lex nothing 0 0
+ seq nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const parse error string 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ const sh: string 0 0
+ name err nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name cmd nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name push nothing 0 0
+ seq nothing 0 0
+ exstat nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name setlocal nothing 0 0
+ seq nothing 0 0
+ const 0 string 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name setlocal nothing 0 0
+ seq nothing 0 0
+ const * string 0 0
+ seq nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ . no
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 0 0
+ name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name bmods nothing 0 0
+ call nothing 0 0
+ name findbuiltin nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name builtins nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name bmods nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ hd nothing 0 0
+ name bmods nothing 0 0
+ name runbuiltin nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name myself nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name lseq nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context): string 0 0
+ name keepfdstr fn(ctxt: ref Context): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name s nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name f nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name keepfds nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name f nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name s nothing 0 0
+ cast string 0 0
+ hd nothing 0 0
+ name f nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ tl nothing 0 0
+ name f nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name s nothing 0 0
+ const , string 0 0
+ = nothing 0 0
+ name f nothing 0 0
+ tl nothing 0 0
+ name f nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name s nothing 0 0
+typecheck tree:
+fn(){} fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 0 0
+ name externalexec fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name DEBUG nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name debug nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const externalexec(%s,... [%d args]) string 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pctl nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name NEWFD nothing 0 0
+ seq nothing 0 0
+ name keepfds nothing 0 0
+ seq nothing 0 0
+ <-= nothing 0 0
+ name startchan nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pctl nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ exstat nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name mod nothing 0 0
+ name init nothing 0 0
+ seq nothing 0 0
+ name drawcontext nothing 0 0
+ seq nothing 0 0
+ name argv nothing 0 0
+ except nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name EPIPE nothing 0 0
+ scope nothing 0 0
+ raise nothing 0 0
+ + nothing 0 0
+ const fail: string 0 0
+ name EPIPE nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, fd1: int, fd2: int): int 0 0
+ name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name waitfd nothing 0 0
+ name fd nothing 0 0
+ name fd2 nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name waitfd nothing 0 0
+ call nothing 0 0
+ name waitfd nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name waitfd nothing 0 0
+ name fd nothing 0 0
+ name fd2 nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name panic nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const reopen of waitfd gave same fd (%d) string 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name waitfd nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name dup nothing 0 0
+ seq nothing 0 0
+ name fd1 nothing 0 0
+ seq nothing 0 0
+ name fd2 nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, redirs: ref Redirlist): list of int 0 0
+ name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name redirs nothing 0 0
+ name r nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name keepfds nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name keepfds nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name rl nothing 0 0
+ . nothing 0 0
+ name redirs nothing 0 0
+ name r nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name redirs nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name rl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name rfd nothing 0 0
+ seq nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name mode nothing 0 0
+ seq nothing 0 0
+ name fd1 nothing 0 0
+ seq nothing 0 0
+ name fd2 nothing 0 0
+ hd nothing 0 0
+ name rl nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ name path nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ name rfd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name fd1 nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ == nothing 0 0
+ name fd2 nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad redir string 0 0
+ seq nothing 0 0
+ const sh: invalid dup string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ call nothing 0 0
+ name dup nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name fd2 nothing 0 0
+ seq nothing 0 0
+ name fd1 nothing 0 0
+
+typecheck tree:
+fn(){} fn(): ref Sys->FD 0 0
+ name waitfd fn(): ref Sys->FD 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name wf nothing 0 0
+ + nothing 0 0
+ cast string 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pctl nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ const /wait string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name waitfd nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name open nothing 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ const #p/ string 0 0
+ name wf nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OREAD nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name waitfd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name waitfd nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name open nothing 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ const /prog/ string 0 0
+ name wf nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OREAD nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name waitfd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name panic nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const cannot open wait file: %r string 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name waitfd nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, pids: list of int): string 0 0
+ name waitfor fn(ctxt: ref Context, pids: list of int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name pids nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name status nothing 0 0
+ array array of string 0 0
+ len nothing 0 0
+ name pids nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name wcount nothing 0 0
+ len nothing 0 0
+ name status nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name buf nothing 0 0
+ array array of byte 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name WAITLEN nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name onebad nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name n nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name read nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name waitfd nothing 0 0
+ seq nothing 0 0
+ name buf nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ name buf nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ < nothing 0 0
+ name n nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name panic nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const error on wait read: %r string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name who nothing 0 0
+ seq nothing 0 0
+ name line nothing 0 0
+ seq nothing 0 0
+ name s nothing 0 0
+ call nothing 0 0
+ name parsewaitstatus nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ cast string 0 0
+ slice nothing 0 0
+ name buf nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name s nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: ref Context, status: string): (int, string, string) 0 0
+ name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name status nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name status nothing 0 0
+ name i nothing 0 0
+ const (32) int 0 0
+ seq nothing 0 0
+ break nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name i nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ name status nothing 0 0
+ const (1) int 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name status nothing 0 0
+ + nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ const (34) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad wait read string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const sh: bad exit status '%s' string 0 0
+ seq nothing 0 0
+ name status nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name i nothing 0 0
+ const (2) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name status nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name status nothing 0 0
+ name i nothing 0 0
+ const (34) int 0 0
+ seq nothing 0 0
+ break nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ > nothing 0 0
+ name i nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ name status nothing 0 0
+ const (2) int 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name status nothing 0 0
+ + nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ const (58) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const bad wait read string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const sh: bad exit status '%s' string 0 0
+ seq nothing 0 0
+ name status nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ cast int 0 0
+ name status nothing 0 0
+ seq nothing 0 0
+ name status nothing 0 0
+
+typecheck tree:
+fn(){} fn(s: string) 0 0
+ name panic fn(s: string) 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stderr nothing 0 0
+ seq nothing 0 0
+ const sh panic: %s
+ string 0 0
+ seq nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ raise nothing 0 0
+ const panic string 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, s: string) 0 0
+ name diagnostic fn(ctxt: ref Context, s: string) 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ & nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name options nothing 0 0
+ . nothing 0 0
+ name Context nothing 0 0
+ name VERBOSE nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stderr nothing 0 0
+ seq nothing 0 0
+ const sh: %s
+ string 0 0
+ seq nothing 0 0
+ name s nothing 0 0
+typecheck tree:
+fn(){} fn(drawcontext: ref Draw->Context): ref Context 0 0
+ . fn(drawcontext: ref Draw->Context): ref Context 0 0
+ name Context Context 0 0
+ name new nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name initialise nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name env nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name env nothing 0 0
+ name clone nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name ctxt nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Context nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Environment nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Builtins nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Builtins nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name newlocalenv nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name waitfd nothing 0 0
+ seq nothing 0 0
+ name drawcontext nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ const (0) int 0 0
+ :: nothing 0 0
+ const (1) int 0 0
+ :: nothing 0 0
+ const (2) int 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name myselfbuiltin nothing 0 0
+ name initbuiltin nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name myself nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name VERBOSE nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name vl nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name get nothing 0 0
+ seq nothing 0 0
+ const autoload string 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name vl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: self ref Context, copyenv: int): ref Context 0 0
+ . fn(c: self ref Context, copyenv: int): ref Context 0 0
+ name Context Context 0 0
+ name copy nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name nctxt nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Context nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name waitfd nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name drawcontext nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name keepfds nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name copyenv nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name env nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name env nothing 0 0
+ name clone nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name nctxt nothing 0 0
+ name env nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Environment nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name copybuiltins nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name sbuiltins nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name copybuiltins nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name builtins nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name copylocalenv nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nctxt nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 0 0
+ . fn(c: self ref Context, name: string, val: list of ref Listnode) 0 0
+ name Context Context 0 0
+ name set nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name e nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name idx nothing 0 0
+ call nothing 0 0
+ name hashfn nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name v nothing 0 0
+ call nothing 0 0
+ name hashfind nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ name idx nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name v nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name pushed nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name Var nothing 0 0
+ name CHANGED nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ call nothing 0 0
+ name noexport nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ |= nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name Var nothing 0 0
+ name NOEXPORT nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name hashadd nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ name idx nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Var nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: self ref Context, name: string): list of ref Listnode 0 0
+ . fn(c: self ref Context, name: string): list of ref Listnode 0 0
+ name Context Context 0 0
+ name get nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name idx nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ > nothing 0 0
+ index nothing 0 0
+ name name nothing 0 0
+ const (0) int 0 0
+ const (48) int 0 0
+ <= nothing 0 0
+ index nothing 0 0
+ name name nothing 0 0
+ const (0) int 0 0
+ const (57) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ vardecl int 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ < nothing 0 0
+ index nothing 0 0
+ name name nothing 0 0
+ name i nothing 0 0
+ const (48) int 0 0
+ > nothing 0 0
+ index nothing 0 0
+ name name nothing 0 0
+ name i nothing 0 0
+ const (57) int 0 0
+ seq nothing 0 0
+ break nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ >= nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name idx nothing 0 0
+ - nothing 0 0
+ cast int 0 0
+ name name nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name name nothing 0 0
+ const * string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name v nothing 0 0
+ call nothing 0 0
+ name varfind nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name v nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name idx nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call n
+typecheck tree:
+fn(){} fn(ctxt: self ref Context): list of (string, list of ref Listnode) 0 0
+ . fn(c: self ref Context): list of (string, list of ref Listnode) 0 0
+ name Context Context 0 0
+ name envlist nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name t nothing 0 0
+ array array of list of ref Var 0 0
+ name ENVHASHSIZE nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name e nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name e nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name vl nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name vl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name v nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name idx nothing 0 0
+ call nothing 0 0
+ name hashfn nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ call nothing 0 0
+ name hashfind nothing 0 0
+ seq nothing 0 0
+ name t nothing 0 0
+ seq nothing 0 0
+ name idx nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 0 0
+ . fn(c: self ref Context, name: string, val: list of ref Listnode) 0 0
+ name Context Context 0 0
+ name setlocal nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name e nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name idx nothing 0 0
+ call nothing 0 0
+ name hashfn nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name v nothing 0 0
+ call nothing 0 0
+ name hashfind nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ name idx nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name v nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name Var nothing 0 0
+ name CHANGED nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ call nothing 0 0
+ name noexport nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ |= nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name Var nothing 0 0
+ name NOEXPORT nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name hashadd nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ name idx nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Var nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ name flags nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name val nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ |= nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name Var nothing 0 0
+ name CHANGED nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: self ref Context) 0 0
+ . fn(c: self ref Context) 0 0
+ name Context Context 0 0
+ name push nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ call nothing 0 0
+ name newlocalenv nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: self ref Context) 0 0
+ . fn(c: self ref Context) 0 0
+ name Context Context 0 0
+ name pop nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ name pushed nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name panic nothing 0 0
+ seq nothing 0 0
+ const unbalanced contexts in shell environment string 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name oldv nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ name pushed nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name oldv nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name vl nothing 0 0
+ index nothing 0 0
+ name oldv nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name vl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ := nothing 0 0
+ name v nothing 0 0
+ call nothing 0 0
+ name varfind nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ |= nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name flags nothing 0 0
+ .
+typecheck tree:
+fn(){} fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 0 0
+ . fn(c: self ref Context, args: list of ref Listnode, last: int): string 0 0
+ name Context Context 0 0
+ name run nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ && nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name cmd nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name cmd nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name cmd nothing 0 0
+ name word nothing 0 0
+ const (0) int 0 0
+ const (123) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name runblock nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name last nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ & nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name options nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name EXECPRINT nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stderr nothing 0 0
+ seq nothing 0 0
+ const %s
+ string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name quoted nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name doneit nothing 0 0
+ seq nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name trybuiltin nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name last nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ ! nothing 0 0
+ name doneit nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name runexternal nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name last nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name status nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ name Context Context 0 0
+ name addmodule nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name mod nothing 0 0
+ name initbuiltin nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name myself nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ :: nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name mod nothing 0 0
+ name getself nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+typecheck tree:
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ name Context Context 0 0
+ name addbuiltin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name addbuiltin nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name env nothing 0 0
+ name builtins nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name mod nothing 0 0
+typecheck tree:
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ name Context Context 0 0
+ name removebuiltin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name removebuiltin nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name env nothing 0 0
+ name builtins nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name mod nothing 0 0
+typecheck tree:
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ name Context Context 0 0
+ name addsbuiltin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name addbuiltin nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name env nothing 0 0
+ name sbuiltins nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name mod nothing 0 0
+typecheck tree:
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+ name Context Context 0 0
+ name removesbuiltin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name removebuiltin nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name env nothing 0 0
+ name sbuiltins nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name mod nothing 0 0
+typecheck tree:
+fn(){} fn(e: ref Localenv, name: string): ref Var 0 0
+ name varfind fn(e: ref Localenv, name: string): ref Var 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name idx nothing 0 0
+ call nothing 0 0
+ name hashfn nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name e nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name vl nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ name idx nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name vl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ name name nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ = nothing 0 0
+ name vl nothing 0 0
+ tl nothing 0 0
+ name vl nothing 0 0
+ = nothing 0 0
+ name e nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name pushed nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ctxt: self ref Context, ename: string, err: string) 0 0
+ . fn(c: self ref Context, ename: string, msg: string) 0 0
+ name Context Context 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ & nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name options nothing 0 0
+ . nothing 0 0
+ name Context nothing 0 0
+ name VERBOSE nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stderr nothing 0 0
+ seq nothing 0 0
+ const %s
+ string 0 0
+ seq nothing 0 0
+ name err nothing 0 0
+ seq nothing 0 0
+ raise nothing 0 0
+ + nothing 0 0
+ const fail: string 0 0
+ name ename nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: self ref Context, flags: int, on: int): int 0 0
+ . fn(c: self ref Context, flags: int, on: int): int 0 0
+ name Context Context 0 0
+ name setoptions nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name old nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ name flags nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name on nothing 0 0
+ seq nothing 0 0
+ |= nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ name flags nothing 0 0
+ name flags nothing 0 0
+ &= nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ name flags nothing 0 0
+ ~ nothing 0 0
+ name flags nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name old nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: self ref Context): int 0 0
+ . fn(c: self ref Context): int 0 0
+ name Context Context 0 0
+ name options nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name localenv nothing 0 0
+ name flags nothing 0 0
+typecheck tree:
+fn(){} fn(s: string, n: int): int 0 0
+ name hashfn fn(s: string, n: int): int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name h nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name m nothing 0 0
+ len nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ name m nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name h nothing 0 0
+ + nothing 0 0
+ * nothing 0 0
+ const (65599) int 0 0
+ name h nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ name i nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ % nothing 0 0
+ & nothing 0 0
+ name h nothing 0 0
+ const (2147483647) int 0 0
+ name n nothing 0 0
+typecheck tree:
+fn(){} fn(ht: array of list of ref Var, idx: int, n: string): ref Var 0 0
+ name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name ent nothing 0 0
+ index nothing 0 0
+ name ht nothing 0 0
+ name idx nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name ent nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name ent nothing 0 0
+ name name nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ hd nothing 0 0
+ name ent nothing 0 0
+ = nothing 0 0
+ name ent nothing 0 0
+ tl nothing 0 0
+ name ent nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ht: array of list of ref Var, idx: int, v: ref Var) 0 0
+ name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ name ht nothing 0 0
+ name idx nothing 0 0
+ :: nothing 0 0
+ name v nothing 0 0
+ index nothing 0 0
+ name ht nothing 0 0
+ name idx nothing 0 0
+typecheck tree:
+fn(){} fn(e: ref Localenv): ref Localenv 0 0
+ name copylocalenv fn(e: ref Localenv): ref Localenv 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name nvars nothing 0 0
+ array array of list of ref Var 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name flags nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name e nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name nvars nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name vl nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ name i nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name vl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name idx nothing 0 0
+ call nothing 0 0
+ name hashfn nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ name nvars nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ call nothing 0 0
+ name hashfind nothing 0 0
+ seq nothing 0 0
+ name nvars nothing 0 0
+ seq nothing 0 0
+ name idx nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name hashadd nothing 0 0
+ seq nothing 0 0
+ name nvars nothing 0 0
+ seq nothing 0 0
+ name idx nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ * nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ = nothing 0 0
+ name vl nothing 0 0
+ tl nothing 0 0
+ name vl nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ = nothing 0 0
+ name e nothing 0 0
+ . nothing 0 0
+
+typecheck tree:
+fn(){} fn(pushed: ref Localenv): ref Localenv 0 0
+ name newlocalenv fn(pushed: ref Localenv): ref Localenv 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name e nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Localenv nothing 0 0
+ seq nothing 0 0
+ array array of list of ref Var 0 0
+ name ENVHASHSIZE nothing 0 0
+ seq nothing 0 0
+ name pushed nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ name pushed nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ name env nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name vl nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name env nothing 0 0
+ name getall nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name vl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name val nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name hashadd nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name hashfn nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Var nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name envstringtoval nothing 0 0
+ seq nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ = nothing 0 0
+ name vl nothing 0 0
+ tl nothing 0 0
+ name vl nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name pushed nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name pushed nothing 0 0
+ name flags nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name e nothing 0 0
+typecheck tree:
+fn(){} fn(b: ref Builtins): ref Builtins 0 0
+ name copybuiltins fn(b: ref Builtins): ref Builtins 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name nb nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Builtins nothing 0 0
+ seq nothing 0 0
+ array array of (string, list of Shellbuiltin) 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ slice nothing 0 0
+ . nothing 0 0
+ name nb nothing 0 0
+ name ba nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ nothing nothing 0 0
+ slice nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nb nothing 0 0
+typecheck tree:
+fn(){} fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 0 0
+ name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name lo nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name hi nothing 0 0
+ - nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ <= nothing 0 0
+ name lo nothing 0 0
+ name hi nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name mid nothing 0 0
+ / nothing 0 0
+ + nothing 0 0
+ name lo nothing 0 0
+ name hi nothing 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name bname nothing 0 0
+ seq nothing 0 0
+ name bmod nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ name mid nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ < nothing 0 0
+ name name nothing 0 0
+ name bname nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name hi nothing 0 0
+ - nothing 0 0
+ name mid nothing 0 0
+ const (1) int 0 0
+ if nothing 0 0
+ > nothing 0 0
+ name name nothing 0 0
+ name bname nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name lo nothing 0 0
+ + nothing 0 0
+ name mid nothing 0 0
+ const (1) int 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name mid nothing 0 0
+ seq nothing 0 0
+ name bmod nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name lo nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+ name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ name bmods nothing 0 0
+ call nothing 0 0
+ name findbuiltin nothing 0 0
+ seq nothing 0 0
+ name b nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name bmods nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ hd nothing 0 0
+ name bmods nothing 0 0
+ name mod nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ tl nothing 0 0
+ name bmods nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ name n nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ tl nothing 0 0
+ name bmods nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ slice nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ nothing nothing 0 0
+ slice nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ name n nothing 0 0
+ const (1) int 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ -- nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+ name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name mod nothing 0 0
+ name nil polymorphic type 0 0
+ && nothing 0 0
+ == nothing 0 0
+ name name nothing 0 0
+ const builtin string 0 0
+ != nothing 0 0
+ name mod nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ name bmods nothing 0 0
+ call nothing 0 0
+ name findbuiltin nothing 0 0
+ seq nothing 0 0
+ name b nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name bmods nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ hd nothing 0 0
+ name bmods nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ name n nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ name mod nothing 0 0
+ name bmods nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ name n nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ name mod nothing 0 0
+ name nil polymorphic type 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name nb nothing 0 0
+ array array of (string, list of Shellbuiltin) 0 0
+ + nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ const (10) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ slice nothing 0 0
+ name nb nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ nothing nothing 0 0
+ slice nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ . nothing 0 0
+typecheck tree:
+fn(){} fn(b: ref Builtins, mod: Shellbuiltin) 0 0
+ name removebuiltinmod fn(b: ref Builtins, mod: Shellbuiltin) 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name j nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name bmods nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ hd nothing 0 0
+ name bmods nothing 0 0
+ name mod nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name bmods nothing 0 0
+ tl nothing 0 0
+ name bmods nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name bmods nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ ++ nothing 0 0
+ name j nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name bmods nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ name j nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name j nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ name j nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ ++ nothing 0 0
+ name j nothing 0 0
+typecheck tree:
+fn(){} fn(e: ref Localenv) 0 0
+ name export fn(e: ref Localenv) 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name env nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name pushed nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name export nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name pushed nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name vl nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name e nothing 0 0
+ name vars nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name vl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name v nothing 0 0
+ hd nothing 0 0
+ name vl nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ & nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name Var nothing 0 0
+ name CHANGED nothing 0 0
+ ! nothing 0 0
+ & nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name flags nothing 0 0
+ . nothing 0 0
+ name Var nothing 0 0
+ name NOEXPORT nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name setenv nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ &= nothing 0 0
+ . nothing 0 0
+ name v nothing 0 0
+ name flags nothing 0 0
+ ~ nothing 0 0
+ . nothing 0 0
+ name Var
+typecheck tree:
+fn(){} fn(name: string): int 0 0
+ name noexport fn(name: string): int 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const 0 string 0 0
+ seq nothing 0 0
+ const * string 0 0
+ seq nothing 0 0
+ const status string 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (0) int 0 0
+typecheck tree:
+fn(){} fn(val: list of ref Listnode, k: int): list of ref Listnode 0 0
+ name index fn(val: list of ref Listnode, k: int): list of ref Listnode 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ && nothing 0 0
+ > nothing 0 0
+ name k nothing 0 0
+ const (0) int 0 0
+ != nothing 0 0
+ name val nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name val nothing 0 0
+ tl nothing 0 0
+ name val nothing 0 0
+ -- nothing 0 0
+ name k nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name val nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name val nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name val nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name val nothing 0 0
+typecheck tree:
+fn(){} fn(name: string): list of ref Listnode 0 0
+ name getenv fn(name: string): list of ref Listnode 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name env nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name envstringtoval nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name env nothing 0 0
+ name getenv nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+typecheck tree:
+fn(){} fn(v: string): list of ref Listnode 0 0
+ name envstringtoval fn(v: string): list of ref Listnode 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name stringlist2list nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name str nothing 0 0
+ name unquoted nothing 0 0
+ seq nothing 0 0
+ name v nothing 0 0
+typecheck tree:
+fn(){} fn(v: string): list of ref Listnode 0 0
+ name XXXenvstringtoval fn(v: string): list of ref Listnode 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ len nothing 0 0
+ name v nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name start nothing 0 0
+ len nothing 0 0
+ name v nothing 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ - nothing 0 0
+ name start nothing 0 0
+ const (1) int 0 0
+ for nothing 0 0
+ >= nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name v nothing 0 0
+ name i nothing 0 0
+ name ENVSEP nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name val nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ slice nothing 0 0
+ name v nothing 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ name start nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name start nothing 0 0
+ name i nothing 0 0
+ -- nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ slice nothing 0 0
+ name v nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ name start nothing 0 0
+ name val nothing 0 0
+typecheck tree:
+fn(){} fn(name: string, val: list of ref Listnode) 0 0
+ name setenv fn(name: string, val: list of ref Listnode) 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name env nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name env nothing 0 0
+ name setenv nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name quoted nothing 0 0
+ seq nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ const (1) int 0 0
+typecheck tree:
+fn(){} fn(s: string): int 0 0
+ name containswildchar fn(s: string): int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ name i nothing 0 0
+ name GLOB nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ name s nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (42) int 0 0
+ seq nothing 0 0
+ const (91) int 0 0
+ seq nothing 0 0
+ const (63) int 0 0
+ seq nothing 0 0
+ name GLOB nothing 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ const (1) int 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const (0) int 0 0
+typecheck tree:
+fn(){} fn(word: string): string 0 0
+ name patquote fn(word: string): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name outword nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ index nothing 0 0
+ name word nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (91) int 0 0
+ seq nothing 0 0
+ const (42) int 0 0
+ seq nothing 0 0
+ const (63) int 0 0
+ seq nothing 0 0
+ const (92) int 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ name outword nothing 0 0
+ len nothing 0 0
+ name outword nothing 0 0
+ const (92) int 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name GLOB nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ if nothing 0 0
+ >= nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name outword nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name word nothing 0 0
+ name i nothing 0 0
+ const (91) int 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ name word nothing 0 0
+ const (1) int 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name word nothing 0 0
+ + nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ const (126) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ name word nothing 0 0
+ + nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ const (94) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ name outword nothing 0 0
+ len nothing 0 0
+ name outword nothing 0 0
+ index nothing 0 0
+ name word nothing 0 0
+ name i noth
+typecheck tree:
+fn(){} fn(s: string): string 0 0
+ name deglob fn(s: string): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name j nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ name i nothing 0 0
+ name GLOB nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name i nothing 0 0
+ name j nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ name j nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ ++ nothing 0 0
+ name j nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name i nothing 0 0
+ name j nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ slice nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ name j nothing 0 0
+typecheck tree:
+fn(){} fn(nl: list of ref Listnode): list of ref Listnode 0 0
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name nl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name n nothing 0 0
+ hd nothing 0 0
+ name nl nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ call nothing 0 0
+ name containswildchar nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name qword nothing 0 0
+ call nothing 0 0
+ name patquote nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name files nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name filepat nothing 0 0
+ name expand nothing 0 0
+ seq nothing 0 0
+ name qword nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name files nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ :: nothing 0 0
+ call nothing 0 0
+ name deglob nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name files nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name new nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name files nothing 0 0
+ name new nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name files nothing 0 0
+ tl nothing 0 0
+
+typecheck tree:
+fn(){} fn(nl: list of ref Listnode): list of string 0 0
+ name list2stringlist fn(nl: list of ref Listnode): list of string 0 0
+ seq nothing 0 0
+ vardecli nothing 0 0
+ vardecl list of string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name ret nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name nl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name el nothing 0 0
+ hd nothing 0 0
+ name nl nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name newel nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name word nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name word nothing 0 0
+ = nothing 0 0
+ name newel nothing 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name ret nothing 0 0
+ :: nothing 0 0
+ name newel nothing 0 0
+ name ret nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name nl nothing 0 0
+ tl nothing 0 0
+ name nl nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name sl nothing 0 0
+ call nothing 0 0
+ name revstringlist nothing 0 0
+ seq nothing 0 0
+ name ret nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name sl nothing 0 0
+typecheck tree:
+fn(){} fn(sl: list of string): list of ref Listnode 0 0
+ name stringlist2list fn(sl: list of string): list of ref Listnode 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name sl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name ret nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name sl nothing 0 0
+ name ret nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name sl nothing 0 0
+ tl nothing 0 0
+ name sl nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name revlist nothing 0 0
+ seq nothing 0 0
+ name ret nothing 0 0
+typecheck tree:
+fn(){} fn(l: list of string): list of string 0 0
+ name revstringlist fn(l: list of string): list of string 0 0
+ seq nothing 0 0
+ vardecl list of string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name l nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name t nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name l nothing 0 0
+ name t nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ tl nothing 0 0
+ name l nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name t nothing 0 0
+typecheck tree:
+fn(){} fn(l: list of ref Listnode): list of ref Listnode 0 0
+ name revlist fn(l: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name l nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name t nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name l nothing 0 0
+ name t nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ tl nothing 0 0
+ name l nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name t nothing 0 0
+typecheck tree:
+fn(){} fn(isassign: int, redir: ref Redir): string 0 0
+ name fdassignstr fn(isassign: int, redir: ref Redir): string 0 0
+ seq nothing 0 0
+ vardecli nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ >= nothing 0 0
+ . nothing 0 0
+ name redir nothing 0 0
+ name fd1 nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ cast string 0 0
+ . nothing 0 0
+ name redir nothing 0 0
+ name fd1 nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name isassign nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ vardecli nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name r nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ >= nothing 0 0
+ . nothing 0 0
+ name redir nothing 0 0
+ name fd2 nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name r nothing 0 0
+ cast string 0 0
+ . nothing 0 0
+ name redir nothing 0 0
+ name fd2 nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ const [ string 0 0
+ name l nothing 0 0
+ const = string 0 0
+ name r nothing 0 0
+ const ] string 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ const [ string 0 0
+ name l nothing 0 0
+ const ] string 0 0
+typecheck tree:
+fn(){} fn(rtype: int): string 0 0
+ name redirstr fn(rtype: int): string 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ name rtype nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ * nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OREAD nothing 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ const < string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OWRITE nothing 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ const > string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ | nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name OWRITE nothing 0 0
+ name OAPPEND nothing 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ const >> string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name ORDWR nothing 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ const <> string 0 0
+typecheck tree:
+fn(){} fn(n: ref Node): string 0 0
+ name cmd2string fn(c: ref Node): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name n nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name ntype nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name n_BLOCK nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ const { string 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ const } string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name n_VAR nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ const $ string 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ const ( string 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name right nothing 0 0
+ const ) string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name n_SQUASH nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ const $" string 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name n_COUNT nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ const $# string 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name n nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name n_BQ nothing 0 0
+ scope nothing 0 0
+
+typecheck tree:
+fn(){} fn(s: string, glob: int): string 0 0
+ name quote fn(s: string, glob: int): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name needquote nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name t nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (123) int 0 0
+ seq nothing 0 0
+ const (125) int 0 0
+ seq nothing 0 0
+ const (40) int 0 0
+ seq nothing 0 0
+ const (41) int 0 0
+ seq nothing 0 0
+ const (96) int 0 0
+ seq nothing 0 0
+ const (38) int 0 0
+ seq nothing 0 0
+ const (59) int 0 0
+ seq nothing 0 0
+ const (61) int 0 0
+ seq nothing 0 0
+ const (62) int 0 0
+ seq nothing 0 0
+ const (60) int 0 0
+ seq nothing 0 0
+ const (35) int 0 0
+ seq nothing 0 0
+ const (124) int 0 0
+ seq nothing 0 0
+ const (42) int 0 0
+ seq nothing 0 0
+ const (91) int 0 0
+ seq nothing 0 0
+ const (63) int 0 0
+ seq nothing 0 0
+ const (36) int 0 0
+ seq nothing 0 0
+ const (94) int 0 0
+ seq nothing 0 0
+ const (32) int 0 0
+ seq nothing 0 0
+ const (9) int 0 0
+ seq nothing 0 0
+ const (10) int 0 0
+ seq nothing 0 0
+ const (13) int 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name needquote nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (39) int 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ name t nothi
+typecheck tree:
+fn(){} fn(l: list of string, sep: string): string 0 0
+ name squash fn(l: list of string, sep: string): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name l nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name s nothing 0 0
+ hd nothing 0 0
+ name l nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ tl nothing 0 0
+ name l nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name l nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ name sep nothing 0 0
+ hd nothing 0 0
+ name l nothing 0 0
+ = nothing 0 0
+ name l nothing 0 0
+ tl nothing 0 0
+ name l nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name s nothing 0 0
+typecheck tree:
+fn(){} fn(s: string) 0 0
+ name debug fn(s: string) 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name DEBUG nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stderr nothing 0 0
+ seq nothing 0 0
+ const %s
+ string 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ cast string 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name pctl nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ const : string 0 0
+ name s nothing 0 0
+typecheck tree:
+fn(){} fn(c: ref Context, nil: Sh): string 0 0
+ name initbuiltin fn(c: ref Context, sh: Sh): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name names nothing 0 0
+ array nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const load string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const unload string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const loaded string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const builtin string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const syncenv string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const whatis string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const run string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const exit string 0 0
+ seq nothing 0 0
+ elem nothing 0 0
+ const @ string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ len nothing 0 0
+ name names nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name addbuiltin nothing 0 0
+ seq nothing 0 0
+ index nothing 0 0
+ name names nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ name myselfbuiltin nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name addsbuiltin nothing 0 0
+ seq nothing 0 0
+ const loaded string 0 0
+ seq nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name addsbuiltin nothing 0 0
+ seq nothing 0 0
+ const quote string 0 0
+ seq nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name addsbuiltin nothing 0 0
+ seq nothing 0 0
+ const bquote string 0 0
+ seq nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name addsbuiltin nothing 0 0
+ seq nothing 0 0
+ const unquote string 0 0
+ seq nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name c nothing 0 0
+ name addsbuiltin nothing 0 0
+ seq nothing 0 0
+ const builtin string 0 0
+ seq nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(nil: ref Context, nil: Sh, nil: string, nil: int): string 0 0
+ name whatis fn(nil: ref Context, nil: Sh, nil: string, nil: int): string 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, nil: Sh, argv: list of ref Listnode): list of ref Listnode 0 0
+ name runsbuiltin fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const loaded string 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name sbuiltin_loaded nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const bquote string 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name sbuiltin_quote nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const quote string 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name sbuiltin_quote nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const unquote string 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name sbuiltin_unquote nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const builtin string 0 0
+ scope nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name sbuiltin_builtin nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, nil: Sh, args: list of ref Listnode, lseq: int): string 0 0
+ name runbuiltin fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name status nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name name nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const load string 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name builtin_load nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name lseq nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const loaded string 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name builtin_loaded nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name lseq nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const unload string 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name builtin_unload nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name lseq nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const builtin string 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name builtin_builtin nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name lseq nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const whatis string 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name builtin_whatis nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name lseq nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const run string 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name builtin_run nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 0 0
+ name sbuiltin_loaded fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ vardecl list of ref Listnode 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name bl nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name bl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ hd nothing 0 0
+ name bl nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name v nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ name v nothing 0 0
+ = nothing 0 0
+ name bl nothing 0 0
+ tl nothing 0 0
+ name bl nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name v nothing 0 0
+typecheck tree:
+fn(){} fn(nil: ref Context, argv: list of ref Listnode, quoteblocks: int): list of ref Listnode 0 0
+ name sbuiltin_quote fn(nil: ref Context, argv: list of ref Listnode, quoteblocks: int): list of ref Listnode 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name quoted nothing 0 0
+ seq nothing 0 0
+ tl nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ name quoteblocks nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 0 0
+ name sbuiltin_builtin fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name builtinusage nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const builtin command [args ...] string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name name nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name mods nothing 0 0
+ call nothing 0 0
+ name findbuiltin nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name sbuiltins nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name mods nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ hd nothing 0 0
+ name mods nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ hd nothing 0 0
+ name mods nothing 0 0
+ name runsbuiltin nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name myself nothing 0 0
+ seq nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ = nothing 0 0
+ name mods nothing 0 0
+ tl nothing 0 0
+ name mods nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const builtin not found string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const sh: builtin %s not found string 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 0 0
+ name sbuiltin_unquote fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name argv nothing 0 0
+ tl nothing 0 0
+ name argv nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name argv nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ tl nothing 0 0
+ name argv nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name builtinusage nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const unquote arg string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name arg nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ == nothing 0 0
+ name arg nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name arg nothing 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name argv nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name stringlist2list nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name str nothing 0 0
+ name unquoted nothing 0 0
+ seq nothing 0 0
+ name arg nothing 0 0
+typecheck tree:
+fn(){} fn(): Shellbuiltin 0 0
+ name getself fn(): Shellbuiltin 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name myselfbuiltin nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, s: string) 0 0
+ name builtinusage fn(ctxt: ref Context, s: string) 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name fail nothing 0 0
+ seq nothing 0 0
+ const usage string 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ const sh: usage: string 0 0
+ name s nothing 0 0
+typecheck tree:
+fn(){} fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+ name builtin_exit fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+ seq nothing 0 0
+ exit nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ name builtin_subsh fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name startchan nothing 0 0
+ chan chan of (int, ref Expropagate) 0 0
+ seq nothing 0 0
+ spawn nothing 0 0
+ call nothing 0 0
+ name runasync nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ name Redirlist nothing 0 0
+ seq nothing 0 0
+ name startchan nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name exepid nothing 0 0
+ seq nothing 0 0
+ name exprop nothing 0 0
+ <- nothing 0 0
+ name startchan nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name status nothing 0 0
+ call nothing 0 0
+ name waitfor nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ name exepid nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name exprop nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ raise nothing 0 0
+ . nothing 0 0
+ name exprop nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name status nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+ name builtin_loaded fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name b nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name builtins nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name bmods nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name print nothing 0 0
+ seq nothing 0 0
+ const %s %s
+ string 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name modname nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name bmods nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name b nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name sbuiltins nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ name bmods nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name b nothing 0 0
+ name ba nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name print nothing 0 0
+ seq nothing 0 0
+ const ${%s} %s
+ string 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name modname nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name bmods nothing 0 0
+ ++ nothing 0 0
+ name i nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ name builtin_load fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name builtinusage nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const load path... string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name args nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name builtinusage nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const load path... string 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name s nothing 0 0
+ call nothing 0 0
+ name loadmodule nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name s nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ raise nothing 0 0
+ + nothing 0 0
+ const fail: string 0 0
+ name s nothing 0 0
+ = nothing 0 0
+ name args nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ name builtin_unload fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name builtinusage nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const unload path... string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name status nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name args nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ := nothing 0 0
+ name s nothing 0 0
+ call nothing 0 0
+ name unloadmodule nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name status nothing 0 0
+ name s nothing 0 0
+ = nothing 0 0
+ name args nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name status nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ name builtin_run fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name builtinusage nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const run path string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name push nothing 0 0
+ seq nothing 0 0
+ exstat nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name setoptions nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name INTERACTIVE nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name runscript nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ tl nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name pop nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ except nothing 0 0
+ name e nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const fail:* string 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name pop nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name failurestatus nothing 0 0
+ seq nothing 0 0
+ name e nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ name builtin_whatis fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ < nothing 0 0
+ len nothing 0 0
+ name args nothing 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name builtinusage nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const whatis name ... string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name err nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name args nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ := nothing 0 0
+ name e nothing 0 0
+ call nothing 0 0
+ name whatisit nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ hd nothing 0 0
+ name args nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name err nothing 0 0
+ name e nothing 0 0
+ = nothing 0 0
+ name args nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name err nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, el: ref Listnode): string 0 0
+ name whatisit fn(ctxt: ref Context, el: ref Listnode): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name print nothing 0 0
+ seq nothing 0 0
+ const %s
+ string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name found nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name name nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name name nothing 0 0
+ const (0) int 0 0
+ const (123) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name print nothing 0 0
+ seq nothing 0 0
+ const %s
+ string 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name val nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name get nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ name val nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ ++ nothing 0 0
+ name found nothing 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name w nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const %s=%s
+ string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name quote nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq not
+typecheck tree:
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+ name builtin_builtin fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ < nothing 0 0
+ len nothing 0 0
+ name args nothing 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name builtinusage nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ const builtin command [args ...] string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name name nothing 0 0
+ . nothing 0 0
+ hd nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ name name nothing 0 0
+ name nil polymorphic type 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name name nothing 0 0
+ const (0) int 0 0
+ const (123) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name diagnostic nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ + nothing 0 0
+ name name nothing 0 0
+ const not found string 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const not found string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name mods nothing 0 0
+ call nothing 0 0
+ name findbuiltin nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name builtins nothing 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name mods nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ hd nothing 0 0
+ name mods nothing 0 0
+ name myselfbuiltin nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ hd nothing 0 0
+ name mods nothing 0 0
+ name runbuiltin nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ name myself nothing 0 0
+ seq nothing 0 0
+ tl nothing 0 0
+ name args nothing 0 0
+ seq nothing 0 0
+ name last nothing 0 0
+ = nothing 0 0
+ name mods nothing 0 0
+ tl nothing 0 0
+ name mods nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ & nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name options nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name EXECPRINT nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: ref Context, mod: Shellbuiltin): string 0 0
+ name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name ml nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name ml nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name bname nothing 0 0
+ seq nothing 0 0
+ name bmod nothing 0 0
+ hd nothing 0 0
+ name ml nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name bmod nothing 0 0
+ name mod nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name bname nothing 0 0
+ = nothing 0 0
+ name ml nothing 0 0
+ tl nothing 0 0
+ name ml nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const builtin string 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, name: string): string 0 0
+ name loadmodule fn(ctxt: ref Context, name: string): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name bl nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name bl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name bname nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ hd nothing 0 0
+ name bl nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name bname nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name nil polymorphic type 0 0
+ = nothing 0 0
+ name bl nothing 0 0
+ tl nothing 0 0
+ name bl nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name path nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ < nothing 0 0
+ len nothing 0 0
+ name path nothing 0 0
+ const (4) int 0 0
+ != nothing 0 0
+ slice nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ name path nothing 0 0
+ const (4) int 0 0
+ nothing nothing 0 0
+ const .dis string 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name path nothing 0 0
+ const .dis string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name path nothing 0 0
+ const (0) int 0 0
+ const (47) int 0 0
+ != nothing 0 0
+ slice nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ const (2) int 0 0
+ const ./ string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name path nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ name BUILTINPATH nothing 0 0
+ const / string 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name mod nothing 0 0
+ load Shellbuiltin 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name mod nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name diagnostic nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const load: cannot load %s: %r string 0 0
+ seq nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+
+typecheck tree:
+fn(){} fn(ctxt: ref Context, name: string): string 0 0
+ name unloadmodule fn(ctxt: ref Context, name: string): string 0 0
+ seq nothing 0 0
+ vardecl list of (string, Shellbuiltin) 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ vardecl Shellbuiltin 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name cl nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name cl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name bname nothing 0 0
+ seq nothing 0 0
+ name bmod nothing 0 0
+ hd nothing 0 0
+ name cl nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name bname nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name mod nothing 0 0
+ name bmod nothing 0 0
+ = nothing 0 0
+ name bl nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name cl nothing 0 0
+ name bl nothing 0 0
+ = nothing 0 0
+ name cl nothing 0 0
+ tl nothing 0 0
+ name cl nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name mod nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name diagnostic nothing 0 0
+ seq nothing 0 0
+ name ctxt nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const module %s not found string 0 0
+ seq nothing 0 0
+ name name nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ const not found string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ name nil polymorphic type 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name bl nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ :: nothing 0 0
+ hd nothing 0 0
+ name bl nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name env nothing 0 0
+ name bmods nothing 0 0
+ = nothing 0 0
+ name bl nothing 0 0
+ tl nothing 0 0
+ name bl nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+
+typecheck tree:
+fn(){} fn(s: (int, Sys->Dir), mode: int): int 0 0
+ name executable fn(s: (int, Sys->Dir), mode: int): int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name ok nothing 0 0
+ seq nothing 0 0
+ name info nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ && nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ name ok nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ == nothing 0 0
+ & nothing 0 0
+ . nothing 0 0
+ name info nothing 0 0
+ name mode nothing 0 0
+ -> nothing 0 0
+ name Sys nothing 0 0
+ name DMDIR nothing 0 0
+ const (0) int 0 0
+ != nothing 0 0
+ & nothing 0 0
+ . nothing 0 0
+ name info nothing 0 0
+ name mode nothing 0 0
+ name mode nothing 0 0
+ const (0) int 0 0
+typecheck tree:
+fn(){} fn(val: list of ref Listnode, quoteblocks: int): string 0 0
+ name quoted fn(val: list of ref Listnode, quoteblocks: int): string 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name s nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ != nothing 0 0
+ name val nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name el nothing 0 0
+ hd nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ || nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name cmd nothing 0 0
+ name nil polymorphic type 0 0
+ && nothing 0 0
+ name quoteblocks nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name word nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name s nothing 0 0
+ call nothing 0 0
+ name quote nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name word nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name cmd nothing 0 0
+ call nothing 0 0
+ name cmd2string nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name el nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ name quoteblocks nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name cmd nothing 0 0
+ call nothing 0 0
+ name quote nothing 0 0
+ seq nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ += nothing 0 0
+ name s nothing 0 0
+ name cmd nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ tl nothing 0 0
+ name val nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ index nothing 0 0
+ name s nothing 0 0
+ len nothing 0 0
+ name s nothing 0 0
+ const (32) int 0 0
+ = nothing 0 0
+ name val nothing 0 0
+ tl nothing 0 0
+ name val nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name s nothing 0 0
+typecheck tree:
+fn(){} fn(ctxt: ref Context, val: string): string 0 0
+ name setstatus fn(ctxt: ref Context, val: string): string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name ctxt nothing 0 0
+ name setlocal nothing 0 0
+ seq nothing 0 0
+ const status string 0 0
+ seq nothing 0 0
+ :: nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Listnode nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name val nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name val nothing 0 0
+typecheck tree:
+fn(){} fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 0 0
+ name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name prompt nothing 0 0
+ name prompt nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name err nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name lval nothing 0 0
+ name node nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name yyparse nothing 0 0
+ seq nothing 0 0
+ name l nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name lastnl nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name err nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name err nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name err nothing 0 0
+ const unknown error string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ > nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name errline nothing 0 0
+ const (0) int 0 0
+ name showline nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const %s:%d: %s string 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name errline nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name err nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name path nothing 0 0
+ const : parse
+typecheck tree:
+fn(){} fn(s: string): ref YYLEX 0 0
+ . fn(s: string): ref YYLEX 0 0
+ name YYLEX YYLEX 0 0
+ name initstring nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name ret nothing 0 0
+ ref nothing 0 0
+ name blanklex nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name ret nothing 0 0
+ name s nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name ret nothing 0 0
+ name path nothing 0 0
+ const internal string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name ret nothing 0 0
+ name strpos nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name ret nothing 0 0
+typecheck tree:
+fn(){} fn(fd: ref Sys->FD, path: string): ref YYLEX 0 0
+ . fn(fd: ref Sys->FD, path: string): ref YYLEX 0 0
+ name YYLEX YYLEX 0 0
+ name initfile nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name lex nothing 0 0
+ ref nothing 0 0
+ name blanklex nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name f nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name bufio nothing 0 0
+ name fopen nothing 0 0
+ seq nothing 0 0
+ name fd nothing 0 0
+ seq nothing 0 0
+ -> nothing 0 0
+ name bufio nothing 0 0
+ name OREAD nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name path nothing 0 0
+ name path nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name cbuf nothing 0 0
+ array array of int 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name linenum nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name prompt nothing 0 0
+ const string 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name lex nothing 0 0
+typecheck tree:
+fn(){} fn(l: self ref YYLEX, s: string) 0 0
+ . fn(l: self ref YYLEX, err: string) 0 0
+ name YYLEX YYLEX 0 0
+ name error nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name err nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name err nothing 0 0
+ name s nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name errline nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name linenum nothing 0 0
+typecheck tree:
+fn(){} fn(l: self ref YYLEX): int 0 0
+ . fn(l: self ref YYLEX): int 0 0
+ name YYLEX YYLEX 0 0
+ name lex nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name endword nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name wasdollar nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name tok nothing 0 0
+ name NOTOKEN nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ == nothing 0 0
+ name tok nothing 0 0
+ name NOTOKEN nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ := nothing 0 0
+ name c nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name getc nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name EOF nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name tok nothing 0 0
+ name END nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (10) int 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name tok nothing 0 0
+ const (10) int 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (13) int 0 0
+ seq nothing 0 0
+ const (9) int 0 0
+ seq nothing 0 0
+ const (32) int 0 0
+ scope nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (35) int 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ = nothing 0 0
+ name c nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name getc nothing 0 0
+ const (10) int 0 0
+ != nothing 0 0
+ name c nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name EOF nothing 0 0
+ seq nothing 0 0
+ nothing nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name l nothing 0 0
+ name ungetc nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (59) int 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name tok nothing 0 0
+ const (59) int 0 0
+
+typecheck tree:
+fn(){} fn(t: int): string 0 0
+ name tokstr fn(t: int): string 0 0
+ seq nothing 0 0
+ vardecl string 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ case nothing 0 0
+ name t nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ const (10) int 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ const '\n' string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ range nothing 0 0
+ const (33) int 0 0
+ const (127) int 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ call nothing 0 0
+ name sprint nothing 0 0
+ seq nothing 0 0
+ const '%c' string 0 0
+ seq nothing 0 0
+ name t nothing 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name DUP nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ const DUP string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name REDIR nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ const REDIR string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name WORD nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ const WORD string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name OP nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ const OP string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name END nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ const END string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ name ERROR nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ const ERROR string 0 0
+ seq nothing 0 0
+ label nothing 0 0
+ seq nothing 0 0
+ * nothing 0 0
+ scope nothing 0 0
+ = nothing 0 0
+ name s nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ const <unknowntok string 0 0
+ cast string 0 0
+ name t nothing 0 0
+ const > string 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name s nothing 0 0
+typecheck tree:
+fn(){} fn(lex: self ref YYLEX) 0 0
+ . fn(l: self ref YYLEX) 0 0
+ name YYLEX YYLEX 0 0
+ name ungetc nothing 0 0
+ seq nothing 0 0
+ -- nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name strpos nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name f nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ ++ nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name ncbuf nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ < nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name strpos nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name strpos nothing 0 0
+ - nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name cbuf nothing 0 0
+ const (1) int 0 0
+typecheck tree:
+fn(){} fn(lex: self ref YYLEX): int 0 0
+ . fn(l: self ref YYLEX): int 0 0
+ name YYLEX YYLEX 0 0
+ name getc nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name eof nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name EOF nothing 0 0
+ seq nothing 0 0
+ vardecl int 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name f nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ > nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name ncbuf nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name c nothing 0 0
+ index nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name cbuf nothing 0 0
+ ++ nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name strpos nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ >= nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name strpos nothing 0 0
+ len nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name cbuf nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name strpos nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ -- nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name ncbuf nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name lastnl nothing 0 0
+ != nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name prompt nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name stderr nothing 0 0
+ seq nothing 0 0
+ const %s string 0 0
+ seq nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name prompt nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name c nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name bufio nothi
+typecheck tree:
+fn(){} fn(lex: ref YYLEX): int 0 0
+ name readnum fn(lex: ref YYLEX): int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name sum nothing 0 0
+ := nothing 0 0
+ name nc nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ && nothing 0 0
+ >= nothing 0 0
+ := nothing 0 0
+ name c nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name getc nothing 0 0
+ const (48) int 0 0
+ <= nothing 0 0
+ name c nothing 0 0
+ const (57) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name sum nothing 0 0
+ + nothing 0 0
+ * nothing 0 0
+ name sum nothing 0 0
+ const (10) int 0 0
+ - nothing 0 0
+ name c nothing 0 0
+ const (48) int 0 0
+ seq nothing 0 0
+ ++ nothing 0 0
+ name nc nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name ungetc nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name nc nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name sum nothing 0 0
+typecheck tree:
+fn(){} fn(lex: ref YYLEX): (int, ref Redir) 0 0
+ name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name n1 nothing 0 0
+ call nothing 0 0
+ name readnum nothing 0 0
+ seq nothing 0 0
+ name lex nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ := nothing 0 0
+ name c nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name getc nothing 0 0
+ const (61) int 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name c nothing 0 0
+ const (93) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name REDIR nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Redir nothing 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ name n1 nothing 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name ERROR nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name n2 nothing 0 0
+ call nothing 0 0
+ name readnum nothing 0 0
+ seq nothing 0 0
+ name lex nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ != nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name lex nothing 0 0
+ name getc nothing 0 0
+ const (93) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name ERROR nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ tuple nothing 0 0
+ seq nothing 0 0
+ name DUP nothing 0 0
+ seq nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Redir nothing 0 0
+ seq nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ name n1 nothing 0 0
+ seq nothing 0 0
+ name n2 nothing 0 0
+typecheck tree:
+fn(){} fn(left: ref Node, right: ref Node): ref Node 0 0
+ name mkseq fn(left: ref Node, right: ref Node): ref Node 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ != nothing 0 0
+ name left nothing 0 0
+ name nil polymorphic type 0 0
+ != nothing 0 0
+ name right nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ name mk nothing 0 0
+ seq nothing 0 0
+ name n_SEQ nothing 0 0
+ seq nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ name right nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ name left nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name right nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ name left nothing 0 0
+typecheck tree:
+fn(){} fn(ntype: int, left: ref Node, right: ref Node): ref Node 0 0
+ name mk fn(ntype: int, left: ref Node, right: ref Node): ref Node 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ ref nothing 0 0
+ call nothing 0 0
+ name Node nothing 0 0
+ seq nothing 0 0
+ name ntype nothing 0 0
+ seq nothing 0 0
+ name left nothing 0 0
+ seq nothing 0 0
+ name right nothing 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ name nil polymorphic type 0 0
+typecheck tree:
+fn(){} fn(): ref Sys->FD 0 0
+ name stderr fn(): ref Sys->FD 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name sys nothing 0 0
+ name fildes nothing 0 0
+ seq nothing 0 0
+ const (2) int 0 0
+typecheck tree:
+fn(){} fn(yyc: int): string 0 0
+ name yytokname fn(yyc: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ && nothing 0 0
+ > nothing 0 0
+ name yyc nothing 0 0
+ const (0) int 0 0
+ <= nothing 0 0
+ name yyc nothing 0 0
+ len nothing 0 0
+ name yytoknames nothing 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name yytoknames nothing 0 0
+ - nothing 0 0
+ name yyc nothing 0 0
+ const (1) int 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ index nothing 0 0
+ name yytoknames nothing 0 0
+ - nothing 0 0
+ name yyc nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ const < string 0 0
+ cast string 0 0
+ name yyc nothing 0 0
+ const > string 0 0
+typecheck tree:
+fn(){} fn(yys: int): string 0 0
+ name yystatname fn(yys: int): string 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ && nothing 0 0
+ >= nothing 0 0
+ name yys nothing 0 0
+ const (0) int 0 0
+ < nothing 0 0
+ name yys nothing 0 0
+ len nothing 0 0
+ name yystates nothing 0 0
+ != nothing 0 0
+ index nothing 0 0
+ name yystates nothing 0 0
+ name yys nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ index nothing 0 0
+ name yystates nothing 0 0
+ name yys nothing 0 0
+ seq nothing 0 0
+ return nothing 0 0
+ + nothing 0 0
+ + nothing 0 0
+ const < string 0 0
+ cast string 0 0
+ name yys nothing 0 0
+ const >
+ string 0 0
+typecheck tree:
+fn(){} fn(yylex: ref YYLEX): int 0 0
+ name yylex1 fn(yylex: ref YYLEX): int 0 0
+ seq nothing 0 0
+ vardecl int 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name yychar nothing 0 0
+ call nothing 0 0
+ . nothing 0 0
+ name yylex nothing 0 0
+ name lex nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ <= nothing 0 0
+ name yychar nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name c nothing 0 0
+ index nothing 0 0
+ name yytok1 nothing 0 0
+ const (0) int 0 0
+ if nothing 0 0
+ < nothing 0 0
+ name yychar nothing 0 0
+ len nothing 0 0
+ name yytok1 nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name c nothing 0 0
+ index nothing 0 0
+ name yytok1 nothing 0 0
+ name yychar nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ >= nothing 0 0
+ name yychar nothing 0 0
+ name YYPRIVATE nothing 0 0
+ < nothing 0 0
+ name yychar nothing 0 0
+ + nothing 0 0
+ name YYPRIVATE nothing 0 0
+ len nothing 0 0
+ name yytok2 nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name c nothing 0 0
+ index nothing 0 0
+ name yytok2 nothing 0 0
+ - nothing 0 0
+ name yychar nothing 0 0
+ name YYPRIVATE nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name n nothing 0 0
+ len nothing 0 0
+ name yytok3 nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name c nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ for nothing 0 0
+ < nothing 0 0
+ name i nothing 0 0
+ name n nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ == nothing 0 0
+ index nothing 0 0
+ name yytok3 nothing 0 0
+ + nothing 0 0
+ name i nothing 0 0
+ const (0) int 0 0
+ name yychar nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name c nothing 0 0
+ index nothing 0 0
+ name yytok3 nothing 0 0
+ + nothing 0 0
+ name i nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ b
+typecheck tree:
+fn(){} fn(yylex: ref YYLEX): int 0 0
+ name yyparse fn(yylex: ref YYLEX): int 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ && nothing 0 0
+ >= nothing 0 0
+ name yydebug nothing 0 0
+ const (1) int 0 0
+ == nothing 0 0
+ name yysys nothing 0 0
+ name nil polymorphic type 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name yysys nothing 0 0
+ load YYSys 0 0
+ const $Sys string 0 0
+ seq nothing 0 0
+ = nothing 0 0
+ name yystderr nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name yysys nothing 0 0
+ name fildes nothing 0 0
+ seq nothing 0 0
+ const (2) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name yys nothing 0 0
+ array array of YYS 0 0
+ name YYMAXDEPTH nothing 0 0
+ seq nothing 0 0
+ vardecl YYSTYPE 0 0
+ seq nothing 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name yystate nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name yychar nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name yynerrs nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name yyerrflag nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name yyp nothing 0 0
+ - nothing 0 0
+ const (1) int 0 0
+ seq nothing 0 0
+ := nothing 0 0
+ name yyn nothing 0 0
+ const (0) int 0 0
+ seq nothing 0 0
+ for nothing 0 0
+ nothing nothing 0 0
+ seq nothing 0 0
+ scope nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ >= nothing 0 0
+ name yydebug nothing 0 0
+ const (4) int 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ -> nothing 0 0
+ name yysys nothing 0 0
+ name fprint nothing 0 0
+ seq nothing 0 0
+ name yystderr nothing 0 0
+ seq nothing 0 0
+ const char %s in %s string 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name yytokname nothing 0 0
+ seq nothing 0 0
+ name yychar nothing 0 0
+ seq nothing 0 0
+ call nothing 0 0
+ name yystatname nothing 0 0
+ seq nothing 0 0
+ name yystate nothing 0 0
+ seq nothing 0 0
+ ++ nothing 0 0
+ name yyp nothing 0 0
+ seq nothing 0 0
+ if nothing 0 0
+ >= nothing 0 0
+ name yyp nothing 0 0
+ len nothing 0 0
+ name yys nothing 0 0
+ seq nothing 0 0
+
+fncom: usage 2 417ba8
+ecom:
+used int 10 2
+ call int 10 2
+ -> fn(fd: ref Sys->FD, s: string, *): int 12 1
+ name sys Sys 1 0
+ name fprint nothing 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ seq no type 10 1
+ const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom:
+call int 10 2
+ -> fn(fd: ref Sys->FD, s: string, *): int 12 1
+ name sys Sys 1 0
+ name fprint nothing 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ seq no type 10 1
+ const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom to:
+name .t0 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+generate desc for big
+generate desc for big
+ desc $-1,8,""
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+ desc $-1,8,"80"
+ecom:
+call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ecom to:
+name .b2 ref Sys->FD 0 0
+generate desc for big
+ecom:
+const (2) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b3 big 0 0
+ const (64) int 6 0
+ecom:
+name .b2 ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b1 big 0 0
+ const (64) int 6 0
+ecom:
+= ref Sys->FD 10 1
+ name .b2 ref Sys->FD 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+name .b2 ref Sys->FD 0 0
+ecom:
+const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b1 big 0 0
+ const (72) int 6 0
+ecom:
+raise nothing 10 1
+ const fail:usage string 1 0
+fn: usage
+64: local .t0 int ref 1
+72: local .b1 big ref 1
+80: local .b2 ref Sys->FD ref 1
+88: local .b3 big ref 1
+generate desc for usage
+descmap offset 0
+descmap .t0 type int offset 64 (d->offset=64 start=0) returns -1
+descmap .b1 type big offset 72 (d->offset=72 start=0) returns -1
+descmap .b2 type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
+descmap .b3 type big offset 88 (d->offset=88 start=0) returns -1
+fncom: badmodule 6 417c68
+ecom:
+used int 10 2
+ call int 10 2
+ -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+ name sys Sys 1 0
+ name fprint nothing 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ seq no type 10 1
+ const sh: cannot load %s: %r
+ string 1 0
+ seq no type 10 1
+ name path string 0 0
+ecom:
+call int 10 2
+ -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+ name sys Sys 1 0
+ name fprint nothing 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ seq no type 10 1
+ const sh: cannot load %s: %r
+ string 1 0
+ seq no type 10 1
+ name path string 0 0
+ecom to:
+name .t4 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom:
+call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ecom to:
+name .b6 ref Sys->FD 0 0
+generate desc for big
+ecom:
+const (2) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b7 big 0 0
+ const (64) int 6 0
+ecom:
+name .b6 ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b5 big 0 0
+ const (64) int 6 0
+ecom:
+= ref Sys->FD 10 1
+ name .b6 ref Sys->FD 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+name .b6 ref Sys->FD 0 0
+ecom:
+const sh: cannot load %s: %r
+ string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b5 big 0 0
+ const (72) int 6 0
+ecom:
+name path string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b5 big 0 0
+ const (80) int 6 0
+ecom:
+raise nothing 10 1
+ const fail:bad module string 1 0
+fn: badmodule
+64: argument path string ref 1
+72: local .t4 int ref 1
+80: local .b5 big ref 1
+88: local .b6 ref Sys->FD ref 1
+96: local .b7 big ref 1
+generate desc for badmodule
+descmap offset 0
+descmap path type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t4 type int offset 72 (d->offset=72 start=0) returns -1
+descmap .b5 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b6 type ref Sys->FD offset 88 (d->offset=88 start=0) returns 88
+descmap .b7 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: initialise 7 4b6b60
+ecom:
+= Sys 10 1
+ name sys Sys 1 0
+ load Sys 10 1
+ const $Sys string 1 0
+ name .m.Sys Sys 17 1
+ecom:
+load Sys 10 1
+ const $Sys string 1 0
+ name .m.Sys Sys 17 1
+ecom to:
+name sys Sys 1 0
+ecom:
+= Filepat 10 1
+ name filepat Filepat 1 0
+ load Filepat 10 1
+ const /dis/lib/filepat.dis string 1 0
+ name .m.Filepat Filepat 17 1
+ecom:
+load Filepat 10 1
+ const /dis/lib/filepat.dis string 1 0
+ name .m.Filepat Filepat 17 1
+ecom to:
+name filepat Filepat 1 0
+ecom:
+call no type 10 2
+ name badmodule fn(path: string) 11 1
+ seq no type 10 1
+ const /dis/lib/filepat.dis string 1 0
+generate desc for big
+ecom:
+const /dis/lib/filepat.dis string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b9 big 0 0
+ const (64) int 6 0
+ecom:
+= String 10 1
+ name str String 1 0
+ load String 10 1
+ const /dis/lib/string.dis string 1 0
+ name .m.String String 17 1
+ecom:
+load String 10 1
+ const /dis/lib/string.dis string 1 0
+ name .m.String String 17 1
+ecom to:
+name str String 1 0
+ecom:
+call no type 10 2
+ name badmodule fn(path: string) 11 1
+ seq no type 10 1
+ const /dis/lib/string.dis string 1 0
+generate desc for big
+ecom:
+const /dis/lib/string.dis string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b9 big 0 0
+ const (64) int 6 0
+ecom:
+= Bufio 10 1
+ name bufio Bufio 1 0
+ load Bufio 10 1
+ const /dis/lib/bufio.dis string 1 0
+ name .m.Bufio Bufio 17 1
+ecom:
+load Bufio 10 1
+ const /dis/lib/bufio.dis string 1 0
+ name .m.Bufio Bufio 17 1
+ecom to:
+name bufio Bufio 1 0
+ecom:
+call no type 10 2
+ name badmodule fn(path: string) 11 1
+ seq no type 10 1
+ const /dis/lib/bufio.dis string 1 0
+generate desc for big
+ecom:
+const /dis/lib/bufio.dis string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b9 big 0 0
+ const (64) int 6 0
+ecom:
+= Sh 10 1
+ name myself Sh 1 0
+ load Sh 10 1
+ const $self string 1 0
+ name .m.Sh Sh 17 1
+ecom:
+load Sh 10 1
+ const $self string 1 0
+ name .m.Sh Sh 17 1
+ecom to:
+name myself Sh 1 0
+ecom:
+call no type 10 2
+ name badmodule fn(path: string) 11 1
+ seq no type 10 1
+ const $self(Sh) string 1 0
+generate desc for big
+ecom:
+const $self(Sh) string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b9 big 0 0
+ const (64) int 6 0
+ecom:
+= Shellbuiltin 10 1
+ name myselfbuiltin Shellbuiltin 1 0
+ load Shellbuiltin 10 1
+ const $self string 1 0
+ name .m.Shellbuiltin Shellbuiltin 17 1
+ecom:
+load Shellbuiltin 10 1
+ const $self string 1 0
+ name .m.Shellbuiltin Shellbuiltin 17 1
+ecom to:
+name myselfbuiltin Shellbuiltin 1 0
+ecom:
+call no type 10 2
+ name badmodule fn(path: string) 11 1
+ seq no type 10 1
+ const $self(Shellbuiltin) string 1 0
+generate desc for big
+ecom:
+const $self(Shellbuiltin) string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b9 big 0 0
+ const (64) int 6 0
+ecom:
+= Env 10 1
+ name env Env 1 0
+ load Env 10 1
+ const /dis/lib/env.dis string 1 0
+ name .m.Env Env 17 1
+ecom:
+load Env 10 1
+ const /dis/lib/env.dis string 1 0
+ name .m.Env Env 17 1
+ecom to:
+name env Env 1 0
+fn: initialise
+64: local .t8 int ref 1
+72: local .b9 big ref 5
+generate desc for initialise
+descmap offset 0
+descmap .t8 type int offset 64 (d->offset=64 start=0) returns -1
+descmap .b9 type big offset 72 (d->offset=72 start=0) returns -1
+fncom: init 2 4b6d80
+ecom:
+call no type 10 1
+ name initialise fn() 11 1
+generate desc for big
+ecom:
+= Options 10 1
+ name opts Options 0 0
+ name blankopts Options 1 0
+ecom:
+name blankopts Options 1 0
+ecom to:
+name opts Options 0 0
+generate desc for Options
+descmap adt offset 0
+descmap offset 0
+descmap lflag type int offset 0 (d->offset=0 start=0) returns -1
+descmap nflag type int offset 4 (d->offset=4 start=0) returns -1
+descmap ctxtflags type int offset 8 (d->offset=8 start=0) returns -1
+descmap carg type string offset 16 (d->offset=16 start=0) returns 16
+generate desc for Options
+ desc $-1,24,"20"
+eacom:
+inds int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ const (0) int 6 0
+ecom:
+inds int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ const (0) int 6 0
+ecom to:
+name .t11 int 0 0
+eacom:
+hd string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= string 10 1
+ name .t12 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t12 string 0 0
+ecom:
+++ int 10 1
+ * int 0 0
+ adr int 13 1
+ name opts Options 0 0
+ const (1) int 6 0
+ecom:
+= list of string 10 1
+ name argv list of string 0 0
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name argv list of string 0 0
+ecom:
+= int 10 1
+ name interactive int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name interactive int 0 0
+eacom:
+hd string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= string 10 1
+ name .t12 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t12 string 0 0
+eacom:
+inds int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ const (0) int 6 0
+ecom:
+inds int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ const (0) int 6 0
+ecom to:
+name .t11 int 0 0
+eacom:
+hd string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= string 10 1
+ name .t12 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+name i int 0 0
+eacom:
+len int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ecom:
+len int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t11 int 0 0
+eacom:
+hd string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= string 10 1
+ name .t12 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= int 10 1
+ name c int 0 0
+ inds int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ name i int 0 0
+ecom:
+inds int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ name i int 0 0
+ecom to:
+name c int 0 0
+eacom:
+hd string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= string 10 1
+ name .t12 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= int 10 1
+ name interactive int 0 0
+ const INTERACTIVE (1) int 6 0
+ecom:
+const INTERACTIVE (1) int 6 0
+ecom to:
+name interactive int 0 0
+ecom:
+++ int 10 1
+ * int 0 0
+ adr int 13 1
+ name opts Options 0 0
+ const (1) int 6 0
+ecom:
+++ int 10 1
+ * int 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const nflag (4) int 6 0
+ const (1) int 6 0
+ecom:
+|= int 10 1
+ * int 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const ctxtflags (8) int 6 0
+ const ERROREXIT (8) int 6 0
+ecom:
+|= int 10 1
+ * int 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const ctxtflags (8) int 6 0
+ const EXECPRINT (4) int 6 0
+eacom:
+- int 10 1
+ len int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ const (1) int 6 0
+ecom:
+- int 10 1
+ len int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ const (1) int 6 0
+ecom to:
+name .t11 int 0 0
+ecom:
+len int 10 1
+ hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t11 int 0 0
+eacom:
+hd string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= string 10 1
+ name .t12 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t12 string 0 0
+ecom:
+= string 10 2
+ name arg string 0 0
+ slice string 10 2
+ hd string 10 1
+ name argv list of string 0 0
+ seq no type 10 2
+ + int 15 1
+ name i int 0 0
+ const (1) int 6 0
+ nothing no type 10 1
+ecom:
+slice string 10 2
+ hd string 10 1
+ name argv list of string 0 0
+ seq no type 10 2
+ + int 15 1
+ name i int 0 0
+ const (1) int 6 0
+ nothing no type 10 1
+ecom to:
+name arg string 0 0
+eacom:
+hd string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 string 0 0
+ecom:
+len int 10 1
+ name .t12 string 0 0
+ecom to:
+name .t11 int 0 0
+eacom:
++ int 15 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
++ int 15 1
+ name i int 0 0
+ const (1) int 6 0
+ecom to:
+name .t13 int 0 0
+ecom:
+name .t12 string 0 0
+ecom to:
+name arg string 0 0
+ecom:
+= string 10 1
+ name .t12 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t12 string 0 0
+eacom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t12 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t12 list of string 0 0
+eacom:
+hd string 10 1
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 string 0 0
+eacom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 list of string 0 0
+ecom:
+= string 10 1
+ name .t12 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t12 string 0 0
+ecom:
+call no type 10 1
+ name usage fn() 11 1
+generate desc for big
+ecom:
+= string 10 1
+ name arg string 0 0
+ hd string 10 1
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+hd string 10 1
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name arg string 0 0
+eacom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t12 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t12 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t12 list of string 0 0
+ecom:
+= list of string 10 1
+ name argv list of string 0 0
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name argv list of string 0 0
+ecom:
+= list of string 10 1
+ name argv list of string 0 0
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name argv list of string 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ name arg string 0 0
+ecom:
+name arg string 0 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ecom:
+= string 10 1
+ name arg string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name arg string 0 0
+ecom:
+= string 10 1
+ name arg string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name arg string 0 0
+ecom:
+++ int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+= list of string 10 1
+ name argv list of string 0 0
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name argv list of string 0 0
+ecom:
+used int 10 2
+ call int 10 2
+ -> fn(flags: int, movefd: list of int): int 12 1
+ name sys Sys 1 0
+ name pctl nothing 11 1
+ seq no type 10 1
+ const FORKFD (2) int 6 0
+ seq no type 10 1
+ name nil list of int 1 0
+ecom:
+call int 10 2
+ -> fn(flags: int, movefd: list of int): int 12 1
+ name sys Sys 1 0
+ name pctl nothing 11 1
+ seq no type 10 1
+ const FORKFD (2) int 6 0
+ seq no type 10 1
+ name nil list of int 1 0
+ecom to:
+name .t13 int 0 0
+generate desc for big
+ecom:
+const FORKFD (2) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+name nil list of int 1 0
+ecom to:
+* list of int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (72) int 6 0
+ecom:
+used int 10 2
+ call int 10 2
+ -> fn(flags: int, movefd: list of int): int 12 1
+ name sys Sys 1 0
+ name pctl nothing 11 1
+ seq no type 10 1
+ const FORKNS (8) int 6 0
+ seq no type 10 1
+ name nil list of int 1 0
+ecom:
+call int 10 2
+ -> fn(flags: int, movefd: list of int): int 12 1
+ name sys Sys 1 0
+ name pctl nothing 11 1
+ seq no type 10 1
+ const FORKNS (8) int 6 0
+ seq no type 10 1
+ name nil list of int 1 0
+ecom to:
+name .t13 int 0 0
+generate desc for big
+ecom:
+const FORKNS (8) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+name nil list of int 1 0
+ecom to:
+* list of int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (72) int 6 0
+ecom:
+= ref Context 10 2
+ name ctxt ref Context 0 0
+ call ref Context 10 2
+ name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+ seq no type 10 1
+ name drawcontext ref Draw->Context 0 0
+ecom:
+call ref Context 10 2
+ name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+ seq no type 10 1
+ name drawcontext ref Draw->Context 0 0
+ecom to:
+name ctxt ref Context 0 0
+generate desc for big
+ecom:
+name drawcontext ref Draw->Context 0 0
+ecom to:
+* ref Draw->Context 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+used int 10 2
+ call int 10 2
+ name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * int 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const ctxtflags (8) int 6 0
+ seq no type 10 1
+ const (1) int 6 0
+ecom:
+call int 10 2
+ name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * int 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const ctxtflags (8) int 6 0
+ seq no type 10 1
+ const (1) int 6 0
+ecom to:
+name .t13 int 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const ctxtflags (8) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (72) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (76) int 6 0
+ecom:
+call no type 10 2
+ name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const /lib/sh/profile string 1 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ seq no type 10 1
+ const (0) int 6 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+const /lib/sh/profile string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (72) int 6 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (80) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (88) int 6 0
+ecom:
+= string 10 2
+ name status string 0 0
+ call string 10 2
+ name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+ seq nothing 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ :: list of string 10 1
+ + string 10 1
+ + string 10 1
+ const { string 1 0
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ const } string 1 0
+ name argv list of string 0 0
+ seq no type 10 1
+ ! int 10 1
+ name interactive int 0 0
+ecom:
+call string 10 2
+ name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+ seq nothing 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ :: list of string 10 1
+ + string 10 1
+ + string 10 1
+ const { string 1 0
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ const } string 1 0
+ name argv list of string 0 0
+ seq no type 10 1
+ ! int 10 1
+ name interactive int 0 0
+ecom to:
+name status string 0 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ :: list of string 10 1
+ + string 10 1
+ + string 10 1
+ const { string 1 0
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ const } string 1 0
+ name argv list of string 0 0
+ecom to:
+name .t12 list of ref Listnode 0 0
+generate desc for big
+ecom:
+:: list of string 10 1
+ + string 10 1
+ + string 10 1
+ const { string 1 0
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ const } string 1 0
+ name argv list of string 0 0
+ecom to:
+* list of string 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (64) int 6 0
+eacom:
++ string 10 1
+ + string 10 1
+ const { string 1 0
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ const } string 1 0
+ecom:
++ string 10 1
+ + string 10 1
+ const { string 1 0
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ const } string 1 0
+ecom to:
+name .t15 string 0 0
+ecom:
++ string 10 1
+ const { string 1 0
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name opts Options 0 0
+ const carg (16) int 6 0
+ecom to:
+name .t15 string 0 0
+ecom:
+name argv list of string 0 0
+ecom to:
+name .t16 list of string 0 0
+ecom:
+= string 10 1
+ name .t15 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t15 string 0 0
+ecom:
+= list of string 10 1
+ name .t16 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t16 list of string 0 0
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+name .t12 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (72) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t12 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t12 list of ref Listnode 0 0
+ecom:
+! int 10 1
+ name interactive int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (80) int 6 0
+ecom:
+raise nothing 10 1
+ + string 10 1
+ const fail: string 1 0
+ name status string 0 0
+eacom:
++ string 10 1
+ const fail: string 1 0
+ name status string 0 0
+ecom:
++ string 10 1
+ const fail: string 1 0
+ name status string 0 0
+ecom to:
+name .t16 string 0 0
+ecom:
+= string 10 1
+ name .t16 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t16 string 0 0
+ecom:
+used string 10 2
+ call string 10 2
+ name setstatus fn(ctxt: ref Context, val: string): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name status string 0 0
+ecom:
+call string 10 2
+ name setstatus fn(ctxt: ref Context, val: string): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name status string 0 0
+ecom to:
+name .t16 string 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (64) int 6 0
+ecom:
+name status string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (72) int 6 0
+ecom:
+= string 10 1
+ name .t16 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t16 string 0 0
+ecom:
+= string 10 1
+ name status string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name status string 0 0
+eacom:
+call int 10 2
+ name isconsole fn(fd: ref Sys->FD): int 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (0) int 6 0
+ecom:
+call int 10 2
+ name isconsole fn(fd: ref Sys->FD): int 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+name .t13 int 0 0
+generate desc for big
+generate desc for ref Sys->FD
+ecom:
+call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+name .b17 ref Sys->FD 0 0
+generate desc for big
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+name .b17 ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (64) int 6 0
+ecom:
+= ref Sys->FD 10 1
+ name .b17 ref Sys->FD 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+name .b17 ref Sys->FD 0 0
+ecom:
+|= int 10 1
+ name interactive int 0 0
+ const INTERACTIVE (1) int 6 0
+ecom:
+used int 10 2
+ call int 10 2
+ name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name interactive int 0 0
+ seq no type 10 1
+ const (1) int 6 0
+ecom:
+call int 10 2
+ name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name interactive int 0 0
+ seq no type 10 1
+ const (1) int 6 0
+ecom to:
+name .t13 int 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (64) int 6 0
+ecom:
+name interactive int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (72) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (76) int 6 0
+ecom:
+call no type 10 2
+ name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (0) int 6 0
+ seq no type 10 1
+ const stdin string 1 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+generate desc for big
+generate desc for ref Sys->FD
+ecom:
+call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+name .b17 ref Sys->FD 0 0
+generate desc for big
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (64) int 6 0
+ecom:
+name .b17 ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (72) int 6 0
+ecom:
+= ref Sys->FD 10 1
+ name .b17 ref Sys->FD 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+name .b17 ref Sys->FD 0 0
+ecom:
+const stdin string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (80) int 6 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (88) int 6 0
+ecom:
+used int 10 2
+ call int 10 2
+ name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name interactive int 0 0
+ seq no type 10 1
+ const (1) int 6 0
+ecom:
+call int 10 2
+ name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name interactive int 0 0
+ seq no type 10 1
+ const (1) int 6 0
+ecom to:
+name .t13 int 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (64) int 6 0
+ecom:
+name interactive int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (72) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (76) int 6 0
+ecom:
+call no type 10 2
+ name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ hd string 10 1
+ name argv list of string 0 0
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ tl list of string 10 1
+ name argv list of string 0 0
+ seq no type 10 1
+ const (1) int 6 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+name .t16 list of ref Listnode 0 0
+generate desc for big
+ecom:
+tl list of string 10 1
+ name argv list of string 0 0
+ecom to:
+* list of string 8 0
+ + int 15 0
+ name .b10 big 0 0
+ const (64) int 6 0
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (64) int 6 0
+ecom:
+hd string 10 1
+ name argv list of string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (72) int 6 0
+ecom:
+name .t16 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (80) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t16 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t16 list of ref Listnode 0 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b14 big 0 0
+ const (88) int 6 0
+fn: init
+64: argument drawcontext ref Draw->Context ref 1
+72: argument argv list of string ref 24
+80: local interactive int ref 7
+84: local i int ref 6
+88: local c int ref 2
+92: local .t11 int ref 1
+96: local .t13 int ref 1
+104: local opts Options ref 12
+128: local .b10 big ref 11
+136: local ctxt ref Context ref 10
+144: local .b14 big ref 7
+152: local status string ref 4
+160: local arg string ref 3
+168: local .b17 ref Sys->FD ref 2
+176: local .t12 string ref 1
+184: local .t15 string ref 1
+192: local .t16 list of string ref 1
+generate desc for init
+descmap offset 0
+descmap drawcontext type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap interactive type int offset 80 (d->offset=80 start=0) returns -1
+descmap i type int offset 84 (d->offset=84 start=0) returns -1
+descmap c type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t11 type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t13 type int offset 96 (d->offset=96 start=0) returns -1
+descmap adt offset 104
+descmap offset 104
+descmap lflag type int offset 104 (d->offset=0 start=104) returns -1
+descmap nflag type int offset 108 (d->offset=4 start=104) returns -1
+descmap ctxtflags type int offset 112 (d->offset=8 start=104) returns -1
+descmap carg type string offset 120 (d->offset=16 start=104) returns 120
+descmap opts type Options offset 104 (d->offset=104 start=0) returns 120
+descmap .b10 type big offset 128 (d->offset=128 start=0) returns -1
+descmap ctxt type ref Context offset 136 (d->offset=136 start=0) returns 136
+descmap .b14 type big offset 144 (d->offset=144 start=0) returns -1
+descmap status type string offset 152 (d->offset=152 start=0) returns 152
+descmap arg type string offset 160 (d->offset=160 start=0) returns 160
+descmap .b17 type ref Sys->FD offset 168 (d->offset=168 start=0) returns 168
+descmap .t12 type string offset 176 (d->offset=176 start=0) returns 176
+descmap .t15 type string offset 184 (d->offset=184 start=0) returns 184
+descmap .t16 type list of string offset 192 (d->offset=192 start=0) returns 192
+fncom: parse 3 4b8580
+ecom:
+call no type 10 1
+ name initialise fn() 11 1
+generate desc for big
+ecom:
+= ref YYLEX 10 2
+ name lex ref YYLEX 0 0
+ call ref YYLEX 10 2
+ name initstring fn(s: string): ref YYLEX 11 1
+ seq no type 10 1
+ name s string 0 0
+ecom:
+call ref YYLEX 10 2
+ name initstring fn(s: string): ref YYLEX 11 1
+ seq no type 10 1
+ name s string 0 0
+ecom to:
+name lex ref YYLEX 0 0
+generate desc for big
+ecom:
+name s string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (64) int 6 0
+ecom:
+call (ref Node, string) 10 2
+ name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+ seq no type 10 1
+ name lex ref YYLEX 0 0
+ seq no type 10 1
+ const string 1 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+* (ref Node, string) 8 0
+ name .ret int 0 0
+generate desc for big
+ecom:
+name lex ref YYLEX 0 0
+ecom to:
+* ref YYLEX 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (64) int 6 0
+ecom:
+const string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (72) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b18 big 0 0
+ const (80) int 6 0
+fn: parse
+64: argument s string ref 1
+72: local .b18 big ref 3
+80: local lex ref YYLEX ref 2
+generate desc for parse
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap .b18 type big offset 72 (d->offset=72 start=0) returns -1
+descmap lex type ref YYLEX offset 80 (d->offset=80 start=0) returns 80
+fncom: system 2 4b74e0
+ecom:
+call no type 10 1
+ name initialise fn() 11 1
+generate desc for big
+ecom:
+= (ref Node, string) 10 2
+ tuple (ref Node, string) 10 1
+ seq nothing 10 1
+ name n ref Node 0 0
+ seq nothing 10 1
+ name err string 0 0
+ call (ref Node, string) 10 2
+ name parse fn(s: string): (ref Node, string) 11 1
+ seq no type 10 1
+ name cmd string 0 0
+ecom:
+call (ref Node, string) 10 2
+ name parse fn(s: string): (ref Node, string) 11 1
+ seq no type 10 1
+ name cmd string 0 0
+ecom to:
+name n (ref Node, string) 0 0
+generate desc for big
+ecom:
+name cmd string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b19 big 0 0
+ const (64) int 6 0
+ecom:
+name err string 0 0
+ecom to:
+* string 8 0
+ name .ret int 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 8 0
+ name .ret int 0 0
+ecom:
+call string 10 3
+ name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+ seq nothing 10 3
+ call ref Context 10 2
+ name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+ seq no type 10 1
+ name drawctxt ref Draw->Context 0 0
+ seq no type 10 2
+ :: list of ref Listnode 10 1
+ ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+* string 8 0
+ name .ret int 0 0
+generate desc for big
+generate desc for ref Context
+generate desc for ref Context
+ desc $-1,8,"80"
+ecom:
+call ref Context 10 2
+ name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+ seq no type 10 1
+ name drawctxt ref Draw->Context 0 0
+ecom to:
+name .b20 ref Context 0 0
+generate desc for big
+ecom:
+name drawctxt ref Draw->Context 0 0
+ecom to:
+* ref Draw->Context 8 0
+ + int 15 0
+ name .b21 big 0 0
+ const (64) int 6 0
+ecom:
+name .b20 ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b19 big 0 0
+ const (64) int 6 0
+ecom:
+= ref Context 10 1
+ name .b20 ref Context 0 0
+ name nil ref Context 1 0
+ecom:
+name nil ref Context 1 0
+ecom to:
+name .b20 ref Context 0 0
+ecom:
+:: list of ref Listnode 10 1
+ ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ name nil polymorphic type 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b19 big 0 0
+ const (72) int 6 0
+eacom:
+ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+name .b20 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+descmap adt offset 0
+descmap offset 0
+descmap cmd type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for Listnode
+ desc $-1,16,"c0"
+ecom:
+tuple Listnode 10 1
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* Listnode 8 0
+ name .b20 ref Listnode 0 0
+ecom:
+name n ref Node 0 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Listnode 8 0
+ name .b20 ref Listnode 0 0
+ const (0) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* string 8 0
+ + int 15 1
+ adr int 15 1
+ * Listnode 8 0
+ name .b20 ref Listnode 0 0
+ const (8) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t22 list of ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b20 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b20 ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name .t22 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t22 list of ref Listnode 0 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b19 big 0 0
+ const (80) int 6 0
+ecom:
+= ref Node 10 1
+ * ref Node 0 0
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+* ref Node 0 0
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ const t1 (8) int 6 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ const t1 (8) int 6 0
+ecom:
+= string 10 1
+ name err string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name err string 0 0
+ecom:
+call string 10 2
+ name failurestatus fn(e: string): string 11 1
+ seq no type 10 1
+ name e string 0 0
+ecom to:
+* string 8 0
+ name .ret int 0 0
+generate desc for big
+ecom:
+name e string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b21 big 0 0
+ const (64) int 6 0
+fn: system
+64: argument drawctxt ref Draw->Context ref 1
+72: argument cmd string ref 1
+80: local e ref exception ref 2
+88: local .b19 big ref 3
+96: local .b20 ref Context ref 3
+104: local n ref Node ref 3
+112: local err string ref 3
+120: local .b21 big ref 2
+128: local .t22 list of ref Listnode ref 1
+generate desc for system
+descmap offset 0
+descmap drawctxt type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap cmd type string offset 72 (d->offset=72 start=0) returns 72
+descmap e type ref exception offset 80 (d->offset=80 start=0) returns 80
+descmap .b19 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b20 type ref Context offset 96 (d->offset=96 start=0) returns 96
+descmap n type ref Node offset 104 (d->offset=104 start=0) returns 104
+descmap err type string offset 112 (d->offset=112 start=0) returns 112
+descmap .b21 type big offset 120 (d->offset=120 start=0) returns -1
+descmap .t22 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+generate desc for e
+descmap offset 0
+descmap n type ref Node offset 104 (d->offset=104 start=0) returns 104
+descmap err type string offset 112 (d->offset=112 start=0) returns 112
+fncom: run 2 4b7d80
+ecom:
+call no type 10 1
+ name initialise fn() 11 1
+generate desc for big
+ecom:
+call string 10 3
+ name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+ seq nothing 10 3
+ call ref Context 10 2
+ name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+ seq no type 10 1
+ name drawctxt ref Draw->Context 0 0
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ name argv list of string 0 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+* string 8 0
+ name .ret int 0 0
+generate desc for big
+generate desc for ref Context
+ecom:
+call ref Context 10 2
+ name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+ seq no type 10 1
+ name drawctxt ref Draw->Context 0 0
+ecom to:
+name .b24 ref Context 0 0
+generate desc for big
+ecom:
+name drawctxt ref Draw->Context 0 0
+ecom to:
+* ref Draw->Context 8 0
+ + int 15 0
+ name .b25 big 0 0
+ const (64) int 6 0
+ecom:
+call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ name argv list of string 0 0
+ecom to:
+name .t26 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name argv list of string 0 0
+ecom to:
+* list of string 8 0
+ + int 15 0
+ name .b25 big 0 0
+ const (64) int 6 0
+ecom:
+name .b24 ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b23 big 0 0
+ const (64) int 6 0
+ecom:
+= ref Context 10 1
+ name .b24 ref Context 0 0
+ name nil ref Context 1 0
+ecom:
+name nil ref Context 1 0
+ecom to:
+name .b24 ref Context 0 0
+ecom:
+name .t26 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b23 big 0 0
+ const (72) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t26 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t26 list of ref Listnode 0 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b23 big 0 0
+ const (80) int 6 0
+ecom:
+call string 10 2
+ name failurestatus fn(e: string): string 11 1
+ seq no type 10 1
+ name e string 0 0
+ecom to:
+* string 8 0
+ name .ret int 0 0
+generate desc for big
+ecom:
+name e string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b25 big 0 0
+ const (64) int 6 0
+fn: run
+64: argument drawctxt ref Draw->Context ref 1
+72: argument argv list of string ref 1
+80: local e ref exception ref 2
+88: local .b25 big ref 3
+96: local .b23 big ref 2
+104: local .b24 ref Context ref 1
+112: local .t26 list of ref Listnode ref 1
+generate desc for run
+descmap offset 0
+descmap drawctxt type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap e type ref exception offset 80 (d->offset=80 start=0) returns 80
+descmap .b25 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b23 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b24 type ref Context offset 104 (d->offset=104 start=0) returns 104
+descmap .t26 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+fncom: isconsole 2 417d28
+ecom:
+= (int, Sys->Dir) 10 2
+ tuple (int, Sys->Dir) 10 1
+ seq nothing 10 1
+ name ok1 int 0 0
+ seq nothing 10 1
+ name d1 Sys->Dir 0 0
+ call (int, Sys->Dir) 10 2
+ -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+ name sys Sys 1 0
+ name fstat nothing 11 1
+ seq no type 10 1
+ name fd ref Sys->FD 0 0
+ecom:
+call (int, Sys->Dir) 10 2
+ -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+ name sys Sys 1 0
+ name fstat nothing 11 1
+ seq no type 10 1
+ name fd ref Sys->FD 0 0
+ecom to:
+name ok1 (int, Sys->Dir) 0 0
+generate desc for big
+ecom:
+name fd ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b27 big 0 0
+ const (64) int 6 0
+ecom:
+= (int, Sys->Dir) 10 2
+ tuple (int, Sys->Dir) 10 1
+ seq nothing 10 1
+ name ok2 int 0 0
+ seq nothing 10 1
+ name d2 Sys->Dir 0 0
+ call (int, Sys->Dir) 10 2
+ -> fn(s: string): (int, Sys->Dir) 12 1
+ name sys Sys 1 0
+ name stat nothing 11 1
+ seq no type 10 1
+ const /dev/cons string 1 0
+ecom:
+call (int, Sys->Dir) 10 2
+ -> fn(s: string): (int, Sys->Dir) 12 1
+ name sys Sys 1 0
+ name stat nothing 11 1
+ seq no type 10 1
+ const /dev/cons string 1 0
+ecom to:
+name ok2 (int, Sys->Dir) 0 0
+generate desc for big
+ecom:
+const /dev/cons string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b27 big 0 0
+ const (64) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+ecom:
+&& int 10 2
+ == int 10 1
+ * int 0 0
+ + int 13 1
+ adr int 13 1
+ name d1 Sys->Dir 0 0
+ const dtype (72) int 6 0
+ * int 0 0
+ + int 13 1
+ adr int 13 1
+ name d2 Sys->Dir 0 0
+ const dtype (72) int 6 0
+ == int 10 1
+ * big 0 0
+ + int 13 1
+ adr int 13 1
+ name d1 Sys->Dir 0 0
+ const (32) int 6 0
+ * big 0 0
+ + int 13 1
+ adr int 13 1
+ name d2 Sys->Dir 0 0
+ const (32) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+fn: isconsole
+64: argument fd ref Sys->FD ref 1
+72: local ok1 int ref 2
+80: local d1 Sys->Dir ref 3
+160: local ok2 int ref 2
+168: local d2 Sys->Dir ref 3
+248: local .b27 big ref 2
+generate desc for isconsole
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap ok1 type int offset 72 (d->offset=72 start=0) returns -1
+descmap adt offset 80
+descmap offset 80
+descmap name type string offset 80 (d->offset=0 start=80) returns 80
+descmap uid type string offset 88 (d->offset=8 start=80) returns 88
+descmap gid type string offset 96 (d->offset=16 start=80) returns 96
+descmap muid type string offset 104 (d->offset=24 start=80) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap path type big offset 112 (d->offset=0 start=112) returns -1
+descmap vers type int offset 120 (d->offset=8 start=112) returns -1
+descmap qtype type int offset 124 (d->offset=12 start=112) returns -1
+descmap qid type Sys->Qid offset 112 (d->offset=32 start=80) returns -1
+descmap mode type int offset 128 (d->offset=48 start=80) returns -1
+descmap atime type int offset 132 (d->offset=52 start=80) returns -1
+descmap mtime type int offset 136 (d->offset=56 start=80) returns -1
+descmap length type big offset 144 (d->offset=64 start=80) returns -1
+descmap dtype type int offset 152 (d->offset=72 start=80) returns -1
+descmap dev type int offset 156 (d->offset=76 start=80) returns -1
+descmap d1 type Sys->Dir offset 80 (d->offset=80 start=0) returns 104
+descmap ok2 type int offset 160 (d->offset=160 start=0) returns -1
+descmap adt offset 168
+descmap offset 168
+descmap name type string offset 168 (d->offset=0 start=168) returns 168
+descmap uid type string offset 176 (d->offset=8 start=168) returns 176
+descmap gid type string offset 184 (d->offset=16 start=168) returns 184
+descmap muid type string offset 192 (d->offset=24 start=168) returns 192
+descmap adt offset 200
+descmap offset 200
+descmap path type big offset 200 (d->offset=0 start=200) returns -1
+descmap vers type int offset 208 (d->offset=8 start=200) returns -1
+descmap qtype type int offset 212 (d->offset=12 start=200) returns -1
+descmap qid type Sys->Qid offset 200 (d->offset=32 start=168) returns -1
+descmap mode type int offset 216 (d->offset=48 start=168) returns -1
+descmap atime type int offset 220 (d->offset=52 start=168) returns -1
+descmap mtime type int offset 224 (d->offset=56 start=168) returns -1
+descmap length type big offset 232 (d->offset=64 start=168) returns -1
+descmap dtype type int offset 240 (d->offset=72 start=168) returns -1
+descmap dev type int offset 244 (d->offset=76 start=168) returns -1
+descmap d2 type Sys->Dir offset 168 (d->offset=168 start=0) returns 192
+descmap .b27 type big offset 248 (d->offset=248 start=0) returns -1
+fncom: runscript 4 417de8
+ecom:
+= ref Sys->FD 10 2
+ name fd ref Sys->FD 0 0
+ call ref Sys->FD 10 2
+ -> fn(s: string, mode: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name open nothing 11 1
+ seq no type 10 1
+ name path string 0 0
+ seq no type 10 1
+ const OREAD (0) int 6 0
+ecom:
+call ref Sys->FD 10 2
+ -> fn(s: string, mode: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name open nothing 11 1
+ seq no type 10 1
+ name path string 0 0
+ seq no type 10 1
+ const OREAD (0) int 6 0
+ecom to:
+name fd ref Sys->FD 0 0
+generate desc for big
+ecom:
+name path string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (64) int 6 0
+ecom:
+const OREAD (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (72) int 6 0
+ecom:
+call no type 10 2
+ name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name fd ref Sys->FD 0 0
+ seq no type 10 1
+ name path string 0 0
+ seq no type 10 1
+ name args list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (64) int 6 0
+ecom:
+name fd ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (72) int 6 0
+ecom:
+name path string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (80) int 6 0
+ecom:
+name args list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (88) int 6 0
+ecom:
+call no type 10 2
+ name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+ seq nothing 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ const bad script path string 1 0
+ seq no type 10 2
+ call string 10 2
+ -> fn(s: string, nil: string, *): string 12 1
+ name sys Sys 1 0
+ name sprint nothing 11 1
+ seq no type 10 1
+ const sh: cannot open %s: %r string 1 0
+ seq no type 10 1
+ name path string 0 0
+generate desc for big
+ecom:
+call string 10 2
+ -> fn(s: string, nil: string, *): string 12 1
+ name sys Sys 1 0
+ name sprint nothing 11 1
+ seq no type 10 1
+ const sh: cannot open %s: %r string 1 0
+ seq no type 10 1
+ name path string 0 0
+ecom to:
+name .t29 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom:
+const sh: cannot open %s: %r string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b30 big 0 0
+ const (64) int 6 0
+ecom:
+name path string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b30 big 0 0
+ const (72) int 6 0
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (64) int 6 0
+ecom:
+const bad script path string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (72) int 6 0
+ecom:
+name .t29 string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b28 big 0 0
+ const (80) int 6 0
+ecom:
+= string 10 1
+ name .t29 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t29 string 0 0
+ecom:
+= ref Sys->FD 10 1
+ name fd ref Sys->FD 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+name fd ref Sys->FD 0 0
+ecom:
+raise nothing 10 1
+ name .ex0 exception 0 0
+fn: runscript
+64: argument ctxt ref Context ref 2
+72: argument path string ref 3
+80: argument args list of ref Listnode ref 1
+88: argument reporterr int ref 2
+92: local .ex0 ref exception ref 1
+96: local .b28 big ref 3
+104: local fd ref Sys->FD ref 3
+112: local .b30 big ref 1
+120: local .t29 string ref 1
+generate desc for runscript
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap path type string offset 72 (d->offset=72 start=0) returns 72
+descmap args type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap reporterr type int offset 88 (d->offset=88 start=0) returns -1
+descmap .ex0 type ref exception offset 92 (d->offset=92 start=0) returns 96
+descmap .b28 type big offset 96 (d->offset=96 start=0) returns -1
+descmap fd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+descmap .b30 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .t29 type string offset 120 (d->offset=120 start=0) returns 120
+generate desc for .ex0
+descmap offset 0
+descmap fd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+fncom: runfile 3 417ea8
+ecom:
+call no type 10 2
+ name push fn(ctxt: self ref Context) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b31 big 0 0
+ const (64) int 6 0
+ecom:
+call no type 10 2
+ name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+ seq nothing 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ const 0 string 1 0
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ :: list of string 10 1
+ name path string 0 0
+ name nil polymorphic type 1 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+ seq no type 10 1
+ :: list of string 10 1
+ name path string 0 0
+ name nil polymorphic type 1 0
+ecom to:
+name .t32 list of ref Listnode 0 0
+generate desc for big
+ecom:
+:: list of string 10 1
+ name path string 0 0
+ name nil polymorphic type 1 0
+ecom to:
+* list of string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t34 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b31 big 0 0
+ const (64) int 6 0
+ecom:
+const 0 string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b31 big 0 0
+ const (72) int 6 0
+ecom:
+name .t32 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b31 big 0 0
+ const (80) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t32 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t32 list of ref Listnode 0 0
+ecom:
+call no type 10 2
+ name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name args list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+const * string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (72) int 6 0
+ecom:
+name args list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (80) int 6 0
+ecom:
+= ref YYLEX 10 2
+ name lex ref YYLEX 0 0
+ call ref YYLEX 10 2
+ name initfile fn(fd: ref Sys->FD, path: string): ref YYLEX 11 1
+ seq no type 10 1
+ name fd ref Sys->FD 0 0
+ seq no type 10 1
+ name path string 0 0
+ecom:
+call ref YYLEX 10 2
+ name initfile fn(fd: ref Sys->FD, path: string): ref YYLEX 11 1
+ seq no type 10 1
+ name fd ref Sys->FD 0 0
+ seq no type 10 1
+ name path string 0 0
+ecom to:
+name lex ref YYLEX 0 0
+generate desc for big
+ecom:
+name fd ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+name path string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (72) int 6 0
+ecom:
+= list of string 10 1
+ name prompt list of string 0 0
+ name lex ref YYLEX 0 0
+ :: list of string 10 1
+ const string 1 0
+ :: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom:
+:: list of string 10 1
+ const string 1 0
+ :: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom to:
+name prompt list of string 0 0
+ name lex ref YYLEX 0 0
+ecom:
+:: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t34 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+= int 10 1
+ name interactive int 0 0
+ & int 10 1
+ * int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+ const INTERACTIVE (1) int 6 0
+ecom:
+& int 10 1
+ * int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+ const INTERACTIVE (1) int 6 0
+ecom to:
+name interactive int 0 0
+eacom:
+* int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+generate desc for ref Localenv
+generate desc for ref Localenv
+ desc $-1,8,"80"
+ecom:
+* ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ecom to:
+name .b35 ref Localenv 0 0
+eacom:
+* ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+generate desc for ref Environment
+generate desc for ref Environment
+ desc $-1,8,"80"
+ecom:
+* ref Environment 8 0
+ name ctxt ref Context 0 0
+ecom to:
+name .b35 ref Environment 0 0
+ecom:
+= ref Localenv 10 1
+ name .b35 ref Localenv 0 0
+ name nil ref Localenv 1 0
+ecom:
+name nil ref Localenv 1 0
+ecom to:
+name .b35 ref Localenv 0 0
+ecom:
+= list of string 10 2
+ name prompt list of string 0 0
+ call list of string 10 2
+ name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const prompt string 1 0
+ecom:
+call list of string 10 2
+ name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const prompt string 1 0
+ecom to:
+name prompt list of string 0 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const prompt string 1 0
+ecom to:
+name .t34 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b31 big 0 0
+ const (64) int 6 0
+ecom:
+const prompt string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b31 big 0 0
+ const (72) int 6 0
+ecom:
+name .t34 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t34 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t34 list of ref Listnode 0 0
+ecom:
+= list of string 10 1
+ name prompt list of string 0 0
+ :: list of string 10 1
+ const ; string 1 0
+ :: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom:
+:: list of string 10 1
+ const ; string 1 0
+ :: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom to:
+name prompt list of string 0 0
+ecom:
+:: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t34 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+used int 10 2
+ call int 10 2
+ -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+ name sys Sys 1 0
+ name fprint nothing 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ seq no type 10 1
+ const %s string 1 0
+ seq no type 10 1
+ hd string 10 1
+ name prompt list of string 0 0
+ecom:
+call int 10 2
+ -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+ name sys Sys 1 0
+ name fprint nothing 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ seq no type 10 1
+ const %s string 1 0
+ seq no type 10 1
+ hd string 10 1
+ name prompt list of string 0 0
+ecom to:
+name .t36 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom:
+call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ecom to:
+name .b35 ref Sys->FD 0 0
+generate desc for big
+ecom:
+const (2) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b31 big 0 0
+ const (64) int 6 0
+ecom:
+name .b35 ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+= ref Sys->FD 10 1
+ name .b35 ref Sys->FD 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+name .b35 ref Sys->FD 0 0
+ecom:
+const %s string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (72) int 6 0
+ecom:
+hd string 10 1
+ name prompt list of string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (80) int 6 0
+eacom:
+tl list of string 10 1
+ name prompt list of string 0 0
+ecom:
+tl list of string 10 1
+ name prompt list of string 0 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t34 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+= list of string 10 2
+ name prompt list of string 0 0
+ :: list of string 10 2
+ hd string 10 1
+ name prompt list of string 0 0
+ :: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom:
+:: list of string 10 2
+ hd string 10 1
+ name prompt list of string 0 0
+ :: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom to:
+name prompt list of string 0 0
+eacom:
+hd string 10 1
+ name prompt list of string 0 0
+ecom:
+hd string 10 1
+ name prompt list of string 0 0
+ecom to:
+name .t34 string 0 0
+ecom:
+:: list of string 10 1
+ const string 1 0
+ name nil polymorphic type 1 0
+ecom to:
+name .t32 list of string 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t32 list of string 0 0
+ecom:
+= string 10 1
+ name .t34 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t34 string 0 0
+ecom:
+= list of string 10 1
+ name .t32 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t32 list of string 0 0
+ecom:
+= (ref Node, string) 10 2
+ tuple (ref Node, string) 10 1
+ seq nothing 10 1
+ name n ref Node 0 0
+ seq nothing 10 1
+ name err string 0 0
+ call (ref Node, string) 10 2
+ name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+ seq no type 10 2
+ name lex ref YYLEX 0 0
+ seq no type 10 2
+ hd string 10 1
+ tl list of string 10 1
+ name prompt list of string 0 0
+ seq no type 10 1
+ ! int 10 1
+ name interactive int 0 0
+ecom:
+call (ref Node, string) 10 2
+ name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+ seq no type 10 2
+ name lex ref YYLEX 0 0
+ seq no type 10 2
+ hd string 10 1
+ tl list of string 10 1
+ name prompt list of string 0 0
+ seq no type 10 1
+ ! int 10 1
+ name interactive int 0 0
+ecom to:
+name n (ref Node, string) 0 0
+generate desc for big
+ecom:
+name lex ref YYLEX 0 0
+ecom to:
+* ref YYLEX 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+hd string 10 1
+ tl list of string 10 1
+ name prompt list of string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (72) int 6 0
+eacom:
+tl list of string 10 1
+ name prompt list of string 0 0
+ecom:
+tl list of string 10 1
+ name prompt list of string 0 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+= list of string 10 1
+ name .t34 list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name .t34 list of string 0 0
+ecom:
+! int 10 1
+ name interactive int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (80) int 6 0
+ecom:
+used int 10 2
+ call int 10 2
+ -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+ name sys Sys 1 0
+ name fprint nothing 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ seq no type 10 1
+ const sh: %s
+ string 1 0
+ seq no type 10 1
+ name err string 0 0
+ecom:
+call int 10 2
+ -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+ name sys Sys 1 0
+ name fprint nothing 11 1
+ seq no type 10 2
+ call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ seq no type 10 1
+ const sh: %s
+ string 1 0
+ seq no type 10 1
+ name err string 0 0
+ecom to:
+name .t36 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom:
+call ref Sys->FD 10 2
+ -> fn(fd: int): ref Sys->FD 12 1
+ name sys Sys 1 0
+ name fildes nothing 11 1
+ seq no type 10 1
+ const (2) int 6 0
+ecom to:
+name .b35 ref Sys->FD 0 0
+generate desc for big
+ecom:
+const (2) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b31 big 0 0
+ const (64) int 6 0
+ecom:
+name .b35 ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+= ref Sys->FD 10 1
+ name .b35 ref Sys->FD 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+name .b35 ref Sys->FD 0 0
+ecom:
+const sh: %s
+ string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (72) int 6 0
+ecom:
+name err string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (80) int 6 0
+ecom:
+raise nothing 10 1
+ const fail:parse error string 1 0
+ecom:
+= string 10 2
+ name laststatus string 0 0
+ call string 10 2
+ name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom:
+call string 10 2
+ name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+name laststatus string 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+name n ref Node 0 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (72) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (80) int 6 0
+ecom:
+= string 10 2
+ name laststatus string 0 0
+ call string 10 2
+ name failurestatus fn(e: string): string 11 1
+ seq no type 10 1
+ name e2 string 0 0
+ecom:
+call string 10 2
+ name failurestatus fn(e: string): string 11 1
+ seq no type 10 1
+ name e2 string 0 0
+ecom to:
+name laststatus string 0 0
+generate desc for big
+ecom:
+name e2 string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+= string 10 2
+ name laststatus string 0 0
+ call string 10 2
+ name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom:
+call string 10 2
+ name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+name laststatus string 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+name n ref Node 0 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (72) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (80) int 6 0
+ecom:
+used string 10 2
+ call string 10 2
+ name setstatus fn(ctxt: ref Context, val: string): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name laststatus string 0 0
+ecom:
+call string 10 2
+ name setstatus fn(ctxt: ref Context, val: string): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name laststatus string 0 0
+ecom to:
+name .t34 string 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+name laststatus string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (72) int 6 0
+ecom:
+= string 10 1
+ name .t34 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t34 string 0 0
+eacom:
+& int 10 1
+ * int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+ const ERROREXIT (8) int 6 0
+ecom:
+& int 10 1
+ * int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+ const ERROREXIT (8) int 6 0
+ecom to:
+name .t36 int 0 0
+eacom:
+* int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+generate desc for ref Localenv
+ecom:
+* ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ecom to:
+name .b35 ref Localenv 0 0
+eacom:
+* ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+generate desc for ref Environment
+ecom:
+* ref Environment 8 0
+ name ctxt ref Context 0 0
+ecom to:
+name .b35 ref Environment 0 0
+ecom:
+= ref Localenv 10 1
+ name .b35 ref Localenv 0 0
+ name nil ref Localenv 1 0
+ecom:
+name nil ref Localenv 1 0
+ecom to:
+name .b35 ref Localenv 0 0
+ecom:
+= ref Node 10 1
+ * ref Node 0 0
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+* ref Node 0 0
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ const t1 (8) int 6 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ const t1 (8) int 6 0
+ecom:
+= string 10 1
+ name err string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name err string 0 0
+ecom:
+= ref Node 10 1
+ * ref Node 0 0
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+* ref Node 0 0
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ const t1 (8) int 6 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name n (ref Node, string) 0 0
+ const t1 (8) int 6 0
+ecom:
+= string 10 1
+ name err string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name err string 0 0
+ecom:
+raise nothing 10 1
+ + string 10 1
+ const fail: string 1 0
+ name laststatus string 0 0
+eacom:
++ string 10 1
+ const fail: string 1 0
+ name laststatus string 0 0
+ecom:
++ string 10 1
+ const fail: string 1 0
+ name laststatus string 0 0
+ecom to:
+name .t34 string 0 0
+ecom:
+= string 10 1
+ name .t34 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t34 string 0 0
+ecom:
+call no type 10 2
+ name pop fn(ctxt: self ref Context) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+= string 10 1
+ name laststatus string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name laststatus string 0 0
+ecom:
+= list of string 10 1
+ name prompt list of string 0 0
+ name nil list of string 1 0
+ecom:
+name nil list of string 1 0
+ecom to:
+name prompt list of string 0 0
+ecom:
+= ref YYLEX 10 1
+ name lex ref YYLEX 0 0
+ name nil ref YYLEX 1 0
+ecom:
+name nil ref YYLEX 1 0
+ecom to:
+name lex ref YYLEX 0 0
+ecom:
+call no type 10 2
+ name pop fn(ctxt: self ref Context) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b33 big 0 0
+ const (64) int 6 0
+ecom:
+raise nothing 10 1
+ name .ex1 exception 0 0
+fn: runfile
+64: argument ctxt ref Context ref 15
+72: argument fd ref Sys->FD ref 1
+80: argument path string ref 2
+88: argument args list of ref Listnode ref 1
+96: local interactive int ref 5
+100: local e2 ref exception ref 2
+104: local .ex1 ref exception ref 1
+108: local .t36 int ref 1
+112: local .b33 big ref 13
+120: local prompt list of string ref 9
+128: local laststatus string ref 7
+136: local .b35 ref Localenv ref 6
+144: local .b31 big ref 5
+152: local n ref Node ref 4
+160: local err string ref 3
+168: local lex ref YYLEX ref 3
+176: local .t32 list of ref Listnode ref 1
+184: local .t34 list of string ref 1
+generate desc for runfile
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap path type string offset 80 (d->offset=80 start=0) returns 80
+descmap args type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap interactive type int offset 96 (d->offset=96 start=0) returns -1
+descmap e2 type ref exception offset 100 (d->offset=100 start=0) returns 104
+descmap .ex1 type ref exception offset 104 (d->offset=104 start=0) returns 104
+descmap .t36 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b33 type big offset 112 (d->offset=112 start=0) returns -1
+descmap prompt type list of string offset 120 (d->offset=120 start=0) returns 120
+descmap laststatus type string offset 128 (d->offset=128 start=0) returns 128
+descmap .b35 type ref Localenv offset 136 (d->offset=136 start=0) returns 136
+descmap .b31 type big offset 144 (d->offset=144 start=0) returns -1
+descmap n type ref Node offset 152 (d->offset=152 start=0) returns 152
+descmap err type string offset 160 (d->offset=160 start=0) returns 160
+descmap lex type ref YYLEX offset 168 (d->offset=168 start=0) returns 168
+descmap .t32 type list of ref Listnode offset 176 (d->offset=176 start=0) returns 176
+descmap .t34 type list of string offset 184 (d->offset=184 start=0) returns 184
+generate desc for .ex1
+descmap offset 0
+descmap n type ref Node offset 152 (d->offset=152 start=0) returns 152
+descmap err type string offset 160 (d->offset=160 start=0) returns 160
+descmap laststatus type string offset 128 (d->offset=128 start=0) returns 128
+descmap prompt type list of string offset 120 (d->offset=120 start=0) returns 120
+descmap lex type ref YYLEX offset 168 (d->offset=168 start=0) returns 168
+fncom: nonexistent 5 417f68
+ecom:
+= array of string 10 2
+ name errs array of string 0 0
+ array array of string 10 2
+ const (2) int 6 0
+ seq array initializers 10 2
+ elem string 10 1
+ seq nothing 10 1
+ const (0) int 6 0
+ const does not exist string 1 0
+ seq no type 10 1
+ elem string 10 1
+ seq nothing 10 1
+ const (1) int 6 0
+ const directory entry not found string 1 0
+ecom:
+array array of string 10 2
+ const (2) int 6 0
+ seq array initializers 10 2
+ elem string 10 1
+ seq nothing 10 1
+ const (0) int 6 0
+ const does not exist string 1 0
+ seq no type 10 1
+ elem string 10 1
+ seq nothing 10 1
+ const (1) int 6 0
+ const directory entry not found string 1 0
+ecom to:
+name errs array of string 0 0
+generate desc for string
+generate desc for string
+ desc $-1,8,"80"
+generate desc for big
+ecom:
+indx big 10 0
+ name errs array of string 0 0
+ const (0) int 6 0
+ecom to:
+name .b37 big 0 0
+ecom:
+const does not exist string 1 0
+ecom to:
+* string 8 0
+ name .b37 big 0 0
+ecom:
+indx big 10 0
+ name errs array of string 0 0
+ const (1) int 6 0
+ecom to:
+name .b37 big 0 0
+ecom:
+const directory entry not found string 1 0
+ecom to:
+* string 8 0
+ name .b37 big 0 0
+ecom:
+= int 10 1
+ name i int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name i int 0 0
+eacom:
+len int 10 1
+ name errs array of string 0 0
+ecom:
+len int 10 1
+ name errs array of string 0 0
+ecom to:
+name .t38 int 0 0
+ecom:
+= int 10 1
+ name j int 0 0
+ len int 10 1
+ * string 10 1
+ indx big 10 1
+ name errs array of string 0 0
+ name i int 0 0
+ecom:
+len int 10 1
+ * string 10 1
+ indx big 10 1
+ name errs array of string 0 0
+ name i int 0 0
+ecom to:
+name j int 0 0
+eacom:
+* string 10 1
+ indx big 10 1
+ name errs array of string 0 0
+ name i int 0 0
+generate desc for big
+ecom:
+indx big 10 1
+ name errs array of string 0 0
+ name i int 0 0
+ecom to:
+name .b37 big 0 0
+eacom:
+len int 10 1
+ name e string 0 0
+ecom:
+len int 10 1
+ name e string 0 0
+ecom to:
+name .t38 int 0 0
+eacom:
+slice string 10 2
+ name e string 0 0
+ seq no type 10 2
+ - int 10 1
+ len int 10 1
+ name e string 0 0
+ name j int 0 0
+ nothing no type 10 1
+ecom:
+slice string 10 2
+ name e string 0 0
+ seq no type 10 2
+ - int 10 1
+ len int 10 1
+ name e string 0 0
+ name j int 0 0
+ nothing no type 10 1
+ecom to:
+name .t39 string 0 0
+ecom:
+len int 10 1
+ name e string 0 0
+ecom to:
+name .t38 int 0 0
+eacom:
+- int 10 1
+ len int 10 1
+ name e string 0 0
+ name j int 0 0
+ecom:
+- int 10 1
+ len int 10 1
+ name e string 0 0
+ name j int 0 0
+ecom to:
+name .t40 int 0 0
+ecom:
+len int 10 1
+ name e string 0 0
+ecom to:
+name .t40 int 0 0
+ecom:
+name e string 0 0
+ecom to:
+name .t39 string 0 0
+ecom:
+* string 10 1
+ indx big 10 1
+ name errs array of string 0 0
+ name i int 0 0
+ecom to:
+name .t41 string 0 0
+eacom:
+* string 10 1
+ indx big 10 1
+ name errs array of string 0 0
+ name i int 0 0
+generate desc for big
+ecom:
+indx big 10 1
+ name errs array of string 0 0
+ name i int 0 0
+ecom to:
+name .b37 big 0 0
+ecom:
+= string 10 1
+ name .t39 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t39 string 0 0
+ecom:
+= string 10 1
+ name .t41 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t41 string 0 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+ecom:
+++ int 10 1
+ name i int 0 0
+ const (1) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ name .ret int 0 0
+fn: nonexistent
+64: argument e string ref 3
+72: local i int ref 5
+76: local j int ref 3
+80: local .t38 int ref 1
+84: local .t40 int ref 1
+88: local errs array of string ref 4
+96: local .b37 big ref 3
+104: local .t39 string ref 1
+112: local .t41 string ref 1
+generate desc for nonexistent
+descmap offset 0
+descmap e type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap j type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t38 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t40 type int offset 84 (d->offset=84 start=0) returns -1
+descmap errs type array of string offset 88 (d->offset=88 start=0) returns 88
+descmap .b37 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t39 type string offset 104 (d->offset=104 start=0) returns 104
+descmap .t41 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: pipe2cmd 2 418028
+fncom: walk 5 4180e8
+ecom:
+= string 10 2
+ name status string 0 0
+ call string 10 2
+ name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom:
+call string 10 2
+ name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ const (0) int 6 0
+ecom to:
+name status string 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (72) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (80) int 6 0
+eacom:
+& int 10 1
+ * int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+ const ERROREXIT (8) int 6 0
+ecom:
+& int 10 1
+ * int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+ const ERROREXIT (8) int 6 0
+ecom to:
+name .t43 int 0 0
+eacom:
+* int 10 1
+ + int 10 1
+ * ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ const flags (16) int 6 0
+generate desc for ref Localenv
+ecom:
+* ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+ecom to:
+name .b44 ref Localenv 0 0
+eacom:
+* ref Localenv 10 1
+ + int 10 1
+ * ref Environment 8 0
+ name ctxt ref Context 0 0
+ const localenv (24) int 6 0
+generate desc for ref Environment
+ecom:
+* ref Environment 8 0
+ name ctxt ref Context 0 0
+ecom to:
+name .b44 ref Environment 0 0
+ecom:
+= ref Localenv 10 1
+ name .b44 ref Localenv 0 0
+ name nil ref Localenv 1 0
+ecom:
+name nil ref Localenv 1 0
+ecom to:
+name .b44 ref Localenv 0 0
+ecom:
+raise nothing 10 1
+ + string 10 1
+ const fail: string 1 0
+ name status string 0 0
+eacom:
++ string 10 1
+ const fail: string 1 0
+ name status string 0 0
+ecom:
++ string 10 1
+ const fail: string 1 0
+ name status string 0 0
+ecom to:
+name .t45 string 0 0
+ecom:
+= string 10 1
+ name .t45 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t45 string 0 0
+ecom:
+used string 10 2
+ call string 10 2
+ name setstatus fn(ctxt: ref Context, val: string): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name status string 0 0
+ecom:
+call string 10 2
+ name setstatus fn(ctxt: ref Context, val: string): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name status string 0 0
+ecom to:
+name .t45 string 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (64) int 6 0
+ecom:
+name status string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (72) int 6 0
+ecom:
+= string 10 1
+ name .t45 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t45 string 0 0
+ecom:
+= ref Node 10 1
+ name n ref Node 0 0
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom to:
+name n ref Node 0 0
+ecom:
+= string 10 1
+ name status string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name status string 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 8 0
+ name .ret int 0 0
+ecom:
+call string 10 2
+ name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ call list of int 10 2
+ name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name nil ref Sys->FD 1 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+* string 8 0
+ name .ret int 0 0
+generate desc for big
+ecom:
+call list of int 10 2
+ name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name nil ref Sys->FD 1 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+name .t45 list of int 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (64) int 6 0
+ecom:
+name n ref Node 0 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (72) int 6 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (80) int 6 0
+ecom:
+const (-1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (88) int 6 0
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (64) int 6 0
+ecom:
+name .t45 list of int 0 0
+ecom to:
+* list of int 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (72) int 6 0
+ecom:
+= list of int 10 1
+ name .t45 list of int 0 0
+ name nil list of int 1 0
+ecom:
+name nil list of int 1 0
+ecom to:
+name .t45 list of int 0 0
+ecom:
+used list of ref Listnode 10 2
+ call list of ref Listnode 10 2
+ name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ecom:
+call list of ref Listnode 10 2
+ name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ecom to:
+name .t45 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (64) int 6 0
+ecom:
+name n ref Node 0 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (72) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t45 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t45 list of ref Listnode 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 8 0
+ name .ret int 0 0
+ecom:
+= int 10 1
+ name bg int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name bg int 0 0
+ecom:
+= int 10 1
+ name bg int 0 0
+ const (1) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+name bg int 0 0
+ecom:
+= ref Node 10 3
+ name n ref Node 0 0
+ if ref Node 10 3
+ || int 10 2
+ == int 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ name nil ref Node 1 0
+ != int 10 1
+ * int 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ const n_PIPE (9) int 6 0
+ seq ref Node 10 2
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ ref ref Node 10 2
+ tuple Node 10 2
+ seq no type 10 2
+ const n_ADJ (10) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_BLOCK (0) int 6 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ ref ref Node 10 2
+ tuple Node 10 2
+ seq no type 10 2
+ const n_VAR (1) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_WORD (11) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom:
+if ref Node 10 3
+ || int 10 2
+ == int 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ name nil ref Node 1 0
+ != int 10 1
+ * int 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ const n_PIPE (9) int 6 0
+ seq ref Node 10 2
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ ref ref Node 10 2
+ tuple Node 10 2
+ seq no type 10 2
+ const n_ADJ (10) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_BLOCK (0) int 6 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ ref ref Node 10 2
+ tuple Node 10 2
+ seq no type 10 2
+ const n_VAR (1) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_WORD (11) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+name n ref Node 0 0
+eacom:
+* int 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+generate desc for ref Node
+generate desc for ref Node
+ desc $-1,8,"80"
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+name .b44 ref Node 0 0
+ecom:
+= ref Node 10 1
+ name .b44 ref Node 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+name .b44 ref Node 0 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+name n ref Node 0 0
+ecom:
+ref ref Node 10 2
+ tuple Node 10 2
+ seq no type 10 2
+ const n_ADJ (10) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_BLOCK (0) int 6 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ ref ref Node 10 2
+ tuple Node 10 2
+ seq no type 10 2
+ const n_VAR (1) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_WORD (11) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+name n ref Node 0 0
+generate desc for ref Node
+generate desc for ref Node
+ desc $-1,8,"80"
+generate desc for Node
+descmap adt offset 0
+descmap offset 0
+descmap ntype type int offset 0 (d->offset=0 start=0) returns -1
+descmap left type ref Node offset 8 (d->offset=8 start=0) returns 8
+descmap right type ref Node offset 16 (d->offset=16 start=0) returns 16
+descmap word type string offset 24 (d->offset=24 start=0) returns 24
+descmap redir type ref Redir offset 32 (d->offset=32 start=0) returns 32
+generate desc for Node
+ desc $-1,40,"78"
+ecom:
+tuple Node 10 2
+ seq no type 10 2
+ const n_ADJ (10) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_BLOCK (0) int 6 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ ref ref Node 10 2
+ tuple Node 10 2
+ seq no type 10 2
+ const n_VAR (1) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_WORD (11) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* Node 8 0
+ name .b44 ref Node 0 0
+ecom:
+const n_ADJ (10) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b44 ref Node 0 0
+ const (0) int 6 0
+ecom:
+ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_BLOCK (0) int 6 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b44 ref Node 0 0
+ const (8) int 6 0
+generate desc for ref Node
+generate desc for ref Node
+ desc $-1,8,"80"
+generate desc for Node
+ecom:
+tuple Node 10 1
+ seq no type 10 1
+ const n_BLOCK (0) int 6 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* Node 8 0
+ name .b47 ref Node 0 0
+ecom:
+const n_BLOCK (0) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (0) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (8) int 6 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (16) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* string 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (24) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Redir 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (32) int 6 0
+ecom:
+= ref Node 10 1
+ name .b47 ref Node 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+name .b47 ref Node 0 0
+ecom:
+ref ref Node 10 2
+ tuple Node 10 2
+ seq no type 10 2
+ const n_VAR (1) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_WORD (11) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b44 ref Node 0 0
+ const (16) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom:
+tuple Node 10 2
+ seq no type 10 2
+ const n_VAR (1) int 6 0
+ seq no type 10 2
+ ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_WORD (11) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil ref Node 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* Node 8 0
+ name .b47 ref Node 0 0
+ecom:
+const n_VAR (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (0) int 6 0
+ecom:
+ref ref Node 10 1
+ tuple Node 10 1
+ seq no type 10 1
+ const n_WORD (11) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (8) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom:
+tuple Node 10 1
+ seq no type 10 1
+ const n_WORD (11) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const * string 1 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* Node 8 0
+ name .b48 ref Node 0 0
+ecom:
+const n_WORD (11) int 6 0
+ecom to:
+* int 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b48 ref Node 0 0
+ const (0) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b48 ref Node 0 0
+ const (8) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b48 ref Node 0 0
+ const (16) int 6 0
+ecom:
+const * string 1 0
+ecom to:
+* string 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b48 ref Node 0 0
+ const (24) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Redir 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b48 ref Node 0 0
+ const (32) int 6 0
+ecom:
+= ref Node 10 1
+ name .b48 ref Node 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+name .b48 ref Node 0 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (16) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* string 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (24) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Redir 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b47 ref Node 0 0
+ const (32) int 6 0
+ecom:
+= ref Node 10 1
+ name .b47 ref Node 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+name .b47 ref Node 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* string 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b44 ref Node 0 0
+ const (24) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Redir 8 0
+ + int 15 1
+ adr int 15 1
+ * Node 8 0
+ name .b44 ref Node 0 0
+ const (32) int 6 0
+ecom:
+= ref Node 10 1
+ name .b44 ref Node 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+name .b44 ref Node 0 0
+ecom:
+= ref Redirlist 10 1
+ name redirs ref Redirlist 0 0
+ ref ref Redirlist 10 1
+ tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom:
+ref ref Redirlist 10 1
+ tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+name redirs ref Redirlist 0 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+ desc $-1,8,"80"
+generate desc for Redirlist
+descmap adt offset 0
+descmap offset 0
+descmap r type list of Redirword offset 0 (d->offset=0 start=0) returns 0
+generate desc for Redirlist
+ desc $-1,8,"80"
+ecom:
+tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* Redirlist 8 0
+ name .b48 ref Redirlist 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* list of Redirword 8 0
+ + int 15 1
+ adr int 15 1
+ * Redirlist 8 0
+ name .b48 ref Redirlist 0 0
+ const (0) int 6 0
+ecom:
+= ref Redirlist 10 1
+ name .b48 ref Redirlist 0 0
+ name nil ref Redirlist 1 0
+ecom:
+name nil ref Redirlist 1 0
+ecom to:
+name .b48 ref Redirlist 0 0
+ecom:
+= list of ref Listnode 10 2
+ name line list of ref Listnode 0 0
+ name redirs ref Redirlist 0 0
+ call list of ref Listnode 10 2
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom:
+call list of ref Listnode 10 2
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name line list of ref Listnode 0 0
+ name redirs ref Redirlist 0 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name .t45 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (64) int 6 0
+ecom:
+name n ref Node 0 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (80) int 6 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b42 big 0 0
+ const (88) int 6 0
+ecom:
+name .t45 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (64) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t45 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t45 list of ref Listnode 0 0
+ecom:
+= chan of (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+ chan chan of (int, ref Expropagate) 10 1
+ const (0) int 6 0
+ecom:
+chan chan of (int, ref Expropagate) 10 1
+ const (0) int 6 0
+ecom to:
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+ desc $-1,16,"40"
+ecom:
+spawn nothing 10 2
+ call no type 10 2
+ name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const (1) int 6 0
+ seq no type 10 1
+ name line list of ref Listnode 0 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (64) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (72) int 6 0
+ecom:
+name line list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (80) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (88) int 6 0
+ecom:
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to:
+* chan of (int, ref Expropagate) 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (96) int 6 0
+ecom:
+= (int, ref Expropagate) 10 2
+ tuple (int, ref Expropagate) 10 1
+ seq nothing 10 1
+ name pid int 0 0
+ seq nothing 10 1
+ name nil polymorphic type 1 0
+ name startchan chan of (int, ref Expropagate) 0 0
+ <- (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom:
+<- (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+ecom to:
+name .b49 (int, ref Expropagate) 0 0
+ecom:
+= ref Expropagate 10 1
+ * ref Expropagate 0 0
+ + int 13 1
+ adr int 13 1
+ name .b49 (int, ref Expropagate) 0 0
+ const t1 (8) int 6 0
+ name nil ref Expropagate 1 0
+ecom:
+name nil ref Expropagate 1 0
+ecom to:
+* ref Expropagate 0 0
+ + int 13 1
+ adr int 13 1
+ name .b49 (int, ref Expropagate) 0 0
+ const t1 (8) int 6 0
+ecom:
+= ref Redirlist 10 1
+ name redirs ref Redirlist 0 0
+ name nil polymorphic type 1 0
+ecom:
+name nil ref Redirlist 1 0
+ecom to:
+name redirs ref Redirlist 0 0
+ecom:
+call no type 10 2
+ name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const apid string 1 0
+ seq no type 10 1
+ :: list of ref Listnode 10 1
+ ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ cast string 10 1
+ name pid int 0 0
+ name nil polymorphic type 1 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (64) int 6 0
+ecom:
+const apid string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (72) int 6 0
+ecom:
+:: list of ref Listnode 10 1
+ ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ cast string 10 1
+ name pid int 0 0
+ name nil polymorphic type 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (80) int 6 0
+eacom:
+ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ cast string 10 1
+ name pid int 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ cast string 10 1
+ name pid int 0 0
+ecom to:
+name .b48 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom:
+tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ cast string 10 1
+ name pid int 0 0
+ecom to:
+* Listnode 8 0
+ name .b48 ref Listnode 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Listnode 8 0
+ name .b48 ref Listnode 0 0
+ const (0) int 6 0
+ecom:
+cast string 10 1
+ name pid int 0 0
+ecom to:
+* string 8 0
+ + int 15 1
+ adr int 15 1
+ * Listnode 8 0
+ name .b48 ref Listnode 0 0
+ const (8) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t45 list of ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b48 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b48 ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name .t45 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t45 list of ref Listnode 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 8 0
+ name .ret int 0 0
+ecom:
+= chan of (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+ name nil chan of (int, ref Expropagate) 1 0
+ecom:
+name nil chan of (int, ref Expropagate) 1 0
+ecom to:
+name startchan chan of (int, ref Expropagate) 0 0
+ecom:
+call string 10 2
+ name runsync fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name line list of ref Listnode 0 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name last int 0 0
+ecom to:
+* string 8 0
+ name .ret int 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (64) int 6 0
+ecom:
+name line list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (80) int 6 0
+ecom:
+name last int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b46 big 0 0
+ const (88) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name line list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name line list of ref Listnode 0 0
+ecom:
+= ref Redirlist 10 1
+ name redirs ref Redirlist 0 0
+ name nil ref Redirlist 1 0
+ecom:
+name nil ref Redirlist 1 0
+ecom to:
+name redirs ref Redirlist 0 0
+fn: walk
+64: argument ctxt ref Context ref 11
+72: argument n ref Node ref 14
+80: argument last int ref 1
+84: local bg int ref 3
+88: local pid int ref 3
+92: local .t43 int ref 1
+96: local .b46 big ref 6
+104: local redirs ref Redirlist ref 5
+112: local .b42 big ref 4
+120: local .b44 ref Localenv ref 4
+128: local .b48 ref Node ref 4
+136: local status string ref 4
+144: local line list of ref Listnode ref 3
+152: local startchan chan of (int, ref Expropagate) ref 3
+160: local .b47 ref Node ref 2
+168: local .t45 string ref 1
+176: local .b49 (int, ref Expropagate) ref 1
+generate desc for walk
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap bg type int offset 84 (d->offset=84 start=0) returns -1
+descmap pid type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t43 type int offset 92 (d->offset=92 start=0) returns -1
+descmap .b46 type big offset 96 (d->offset=96 start=0) returns -1
+descmap redirs type ref Redirlist offset 104 (d->offset=104 start=0) returns 104
+descmap .b42 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .b44 type ref Localenv offset 120 (d->offset=120 start=0) returns 120
+descmap .b48 type ref Node offset 128 (d->offset=128 start=0) returns 128
+descmap status type string offset 136 (d->offset=136 start=0) returns 136
+descmap line type list of ref Listnode offset 144 (d->offset=144 start=0) returns 144
+descmap startchan type chan of (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 152
+descmap .b47 type ref Node offset 160 (d->offset=160 start=0) returns 160
+descmap .t45 type string offset 168 (d->offset=168 start=0) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap t0 type int offset 176 (d->offset=0 start=176) returns -1
+descmap t1 type ref Expropagate offset 184 (d->offset=8 start=176) returns 184
+descmap .b49 type (int, ref Expropagate) offset 176 (d->offset=176 start=0) returns 184
+fncom: assign 3 4181a8
+ecom:
+= ref Redirlist 10 1
+ name redirs ref Redirlist 0 0
+ ref ref Redirlist 10 1
+ name Redirlist Redirlist 10 1
+ecom:
+ref ref Redirlist 10 1
+ name Redirlist Redirlist 10 1
+ecom to:
+name redirs ref Redirlist 0 0
+generate desc for Redirlist
+eacom:
+* int 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+generate desc for ref Node
+generate desc for ref Node
+ desc $-1,8,"80"
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom to:
+name .b50 ref Node 0 0
+ecom:
+= ref Node 10 1
+ name .b50 ref Node 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+name .b50 ref Node 0 0
+eacom:
+* int 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+generate desc for ref Node
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom to:
+name .b50 ref Node 0 0
+ecom:
+= ref Node 10 1
+ name .b50 ref Node 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+name .b50 ref Node 0 0
+ecom:
+= list of ref Listnode 10 2
+ name val list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom:
+call list of ref Listnode 10 2
+ name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom to:
+name val list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b51 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b51 big 0 0
+ const (72) int 6 0
+ecom:
+= list of ref Listnode 10 2
+ name val list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom:
+call list of ref Listnode 10 2
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name val list of ref Listnode 0 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name .t52 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (80) int 6 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (88) int 6 0
+ecom:
+name .t52 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b51 big 0 0
+ const (64) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t52 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t52 list of ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 2
+ name vars list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom:
+call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name vars list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (80) int 6 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (88) int 6 0
+ecom:
+call no type 10 2
+ name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const bad assign string 1 0
+ seq no type 10 1
+ const sh: nil variable name string 1 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (64) int 6 0
+ecom:
+const bad assign string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (72) int 6 0
+ecom:
+const sh: nil variable name string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (80) int 6 0
+ecom:
+call no type 10 2
+ name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const bad assign string 1 0
+ seq no type 10 1
+ const sh: redirections not allowed in assignment string 1 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (64) int 6 0
+ecom:
+const bad assign string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (72) int 6 0
+ecom:
+const sh: redirections not allowed in assignment string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (80) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name tval list of ref Listnode 0 0
+ name val list of ref Listnode 0 0
+ecom:
+name val list of ref Listnode 0 0
+ecom to:
+name tval list of ref Listnode 0 0
+ecom:
+= string 10 2
+ name vname string 0 0
+ call string 10 2
+ name deglob fn(s: string): string 11 1
+ seq no type 10 1
+ * string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ const word (8) int 6 0
+ecom:
+call string 10 2
+ name deglob fn(s: string): string 11 1
+ seq no type 10 1
+ * string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ const word (8) int 6 0
+ecom to:
+name vname string 0 0
+generate desc for big
+ecom:
+* string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ const word (8) int 6 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (64) int 6 0
+eacom:
+* string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+hd ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ecom to:
+name .b50 ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b50 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b50 ref Listnode 0 0
+ecom:
+call no type 10 2
+ name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const bad assign string 1 0
+ seq no type 10 1
+ const sh: bad variable name string 1 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (64) int 6 0
+ecom:
+const bad assign string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (72) int 6 0
+ecom:
+const sh: bad variable name string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (80) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name v list of ref Listnode 0 0
+ name nil polymorphic type 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name v list of ref Listnode 0 0
+eacom:
+tl list of ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ecom:
+tl list of ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ecom to:
+name .t52 list of ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name .t52 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t52 list of ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name v list of ref Listnode 0 0
+ name tval list of ref Listnode 0 0
+ecom:
+name tval list of ref Listnode 0 0
+ecom to:
+name v list of ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name v list of ref Listnode 0 0
+ :: list of ref Listnode 10 1
+ hd ref Listnode 10 1
+ name tval list of ref Listnode 0 0
+ name nil polymorphic type 1 0
+ecom:
+:: list of ref Listnode 10 1
+ hd ref Listnode 10 1
+ name tval list of ref Listnode 0 0
+ name nil polymorphic type 1 0
+ecom to:
+name v list of ref Listnode 0 0
+eacom:
+hd ref Listnode 10 1
+ name tval list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+hd ref Listnode 10 1
+ name tval list of ref Listnode 0 0
+ecom to:
+name .b50 ref Listnode 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t52 list of ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b50 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b50 ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name .t52 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t52 list of ref Listnode 0 0
+ecom:
+call no type 10 2
+ name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name vname string 0 0
+ seq no type 10 1
+ name v list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (64) int 6 0
+ecom:
+name vname string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (72) int 6 0
+ecom:
+name v list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (80) int 6 0
+ecom:
+call no type 10 2
+ name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name vname string 0 0
+ seq no type 10 1
+ name v list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (64) int 6 0
+ecom:
+name vname string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (72) int 6 0
+ecom:
+name v list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b53 big 0 0
+ const (80) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name tval list of ref Listnode 0 0
+ tl list of ref Listnode 10 1
+ name tval list of ref Listnode 0 0
+ecom:
+tl list of ref Listnode 10 1
+ name tval list of ref Listnode 0 0
+ecom to:
+name tval list of ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name v list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name v list of ref Listnode 0 0
+ecom:
+= string 10 1
+ name vname string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name vname string 0 0
+ecom:
+= list of ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ tl list of ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ecom:
+tl list of ref Listnode 10 1
+ name vars list of ref Listnode 0 0
+ecom to:
+name vars list of ref Listnode 0 0
+ecom:
+name val list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ name .ret int 0 0
+fn: assign
+64: argument ctxt ref Context ref 8
+72: argument n ref Node ref 7
+80: local .b53 big ref 8
+88: local tval list of ref Listnode ref 7
+96: local vars list of ref Listnode ref 7
+104: local v list of ref Listnode ref 5
+112: local .b50 ref Node ref 4
+120: local redirs ref Redirlist ref 4
+128: local val list of ref Listnode ref 4
+136: local vname string ref 4
+144: local .b51 big ref 2
+152: local .t52 list of ref Listnode ref 1
+generate desc for assign
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap .b53 type big offset 80 (d->offset=80 start=0) returns -1
+descmap tval type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap vars type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap v type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap .b50 type ref Node offset 112 (d->offset=112 start=0) returns 112
+descmap redirs type ref Redirlist offset 120 (d->offset=120 start=0) returns 120
+descmap val type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap vname type string offset 136 (d->offset=136 start=0) returns 136
+descmap .b51 type big offset 144 (d->offset=144 start=0) returns -1
+descmap .t52 type list of ref Listnode offset 152 (d->offset=152 start=0) returns 152
+fncom: walkpipeline 3 418268
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 8 0
+ name .ret int 0 0
+ecom:
+= array of ref Sys->FD 10 1
+ name fds array of ref Sys->FD 0 0
+ array array of ref Sys->FD 10 1
+ const (2) int 6 0
+ecom:
+array array of ref Sys->FD 10 1
+ const (2) int 6 0
+ecom to:
+name fds array of ref Sys->FD 0 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+ desc $-1,8,"80"
+ecom:
+= int 10 1
+ name rfdno int 0 0
+ const (-1) int 6 0
+ecom:
+const (-1) int 6 0
+ecom to:
+name rfdno int 0 0
+eacom:
+call int 10 2
+ -> fn(fds: array of ref Sys->FD): int 12 1
+ name sys Sys 1 0
+ name pipe nothing 11 1
+ seq no type 10 1
+ name fds array of ref Sys->FD 0 0
+ecom:
+call int 10 2
+ -> fn(fds: array of ref Sys->FD): int 12 1
+ name sys Sys 1 0
+ name pipe nothing 11 1
+ seq no type 10 1
+ name fds array of ref Sys->FD 0 0
+ecom to:
+name .t54 int 0 0
+generate desc for big
+ecom:
+name fds array of ref Sys->FD 0 0
+ecom to:
+* array of ref Sys->FD 8 0
+ + int 15 0
+ name .b55 big 0 0
+ const (64) int 6 0
+ecom:
+call no type 10 2
+ name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+ seq nothing 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ const no pipe string 1 0
+ seq no type 10 2
+ call string 10 2
+ -> fn(s: string, *): string 12 1
+ name sys Sys 1 0
+ name sprint nothing 11 1
+ seq no type 10 1
+ const sh: cannot make pipe: %r string 1 0
+generate desc for big
+ecom:
+call string 10 2
+ -> fn(s: string, *): string 12 1
+ name sys Sys 1 0
+ name sprint nothing 11 1
+ seq no type 10 1
+ const sh: cannot make pipe: %r string 1 0
+ecom to:
+name .t56 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom:
+const sh: cannot make pipe: %r string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (64) int 6 0
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b55 big 0 0
+ const (64) int 6 0
+ecom:
+const no pipe string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b55 big 0 0
+ const (72) int 6 0
+ecom:
+name .t56 string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b55 big 0 0
+ const (80) int 6 0
+ecom:
+= string 10 1
+ name .t56 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t56 string 0 0
+ecom:
+= int 10 1
+ name nwfdno int 0 0
+ const (-1) int 6 0
+ecom:
+const (-1) int 6 0
+ecom to:
+name nwfdno int 0 0
+ecom:
+= (int, int) 10 2
+ tuple (int, int) 10 1
+ seq nothing 10 1
+ name fd1 int 0 0
+ seq nothing 10 1
+ name fd2 int 0 0
+ tuple (int, int) 10 2
+ seq no type 10 2
+ * int 10 1
+ + int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ const fd2 (8) int 6 0
+ seq no type 10 1
+ * int 10 1
+ + int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ const fd1 (4) int 6 0
+ecom:
+tuple (int, int) 10 2
+ seq no type 10 2
+ * int 10 1
+ + int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ const fd2 (8) int 6 0
+ seq no type 10 1
+ * int 10 1
+ + int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ const fd1 (4) int 6 0
+ecom to:
+name fd1 (int, int) 0 0
+ecom:
+* int 10 1
+ + int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ const fd2 (8) int 6 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ name fd1 (int, int) 0 0
+ const (0) int 6 0
+eacom:
+* int 10 1
+ + int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ const fd2 (8) int 6 0
+generate desc for ref Redir
+generate desc for ref Redir
+ desc $-1,8,"80"
+ecom:
+* ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+name .b58 ref Redir 0 0
+ecom:
+= ref Redir 10 1
+ name .b58 ref Redir 0 0
+ name nil ref Redir 1 0
+ecom:
+name nil ref Redir 1 0
+ecom to:
+name .b58 ref Redir 0 0
+ecom:
+* int 10 1
+ + int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ const fd1 (4) int 6 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ name fd1 (int, int) 0 0
+ const (4) int 6 0
+eacom:
+* int 10 1
+ + int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ const fd1 (4) int 6 0
+generate desc for ref Redir
+ecom:
+* ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+name .b58 ref Redir 0 0
+ecom:
+= ref Redir 10 1
+ name .b58 ref Redir 0 0
+ name nil ref Redir 1 0
+ecom:
+name nil ref Redir 1 0
+ecom to:
+name .b58 ref Redir 0 0
+ecom:
+= (int, int) 10 2
+ tuple (int, int) 10 1
+ seq no type 10 1
+ name fd1 int 0 0
+ seq no type 10 1
+ name fd2 int 0 0
+ tuple (int, int) 10 1
+ seq no type 10 1
+ name fd2 int 0 0
+ seq no type 10 1
+ name fd1 int 0 0
+generate desc for (int, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type int offset 4 (d->offset=4 start=0) returns -1
+generate desc for (int, int)
+ desc $-1,8,""
+ecom:
+tuple (int, int) 10 1
+ seq no type 10 1
+ name fd2 int 0 0
+ seq no type 10 1
+ name fd1 int 0 0
+ecom to:
+name .b59 (int, int) 0 0
+ecom:
+name fd2 int 0 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ name .b59 (int, int) 0 0
+ const (0) int 6 0
+ecom:
+name fd1 int 0 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ name .b59 (int, int) 0 0
+ const (4) int 6 0
+ecom:
+= (int, int) 10 2
+ tuple (int, int) 10 1
+ seq no type 10 1
+ name nwfdno int 0 0
+ seq no type 10 1
+ name rfdno int 0 0
+ tuple (int, int) 10 1
+ seq no type 10 1
+ name fd2 int 0 0
+ seq no type 10 1
+ name fd1 int 0 0
+ecom:
+= int 10 1
+ name nwfdno int 0 0
+ name fd2 int 0 0
+ecom:
+name fd2 int 0 0
+ecom to:
+name nwfdno int 0 0
+ecom:
+= int 10 1
+ name rfdno int 0 0
+ name fd1 int 0 0
+ecom:
+name fd1 int 0 0
+ecom to:
+name rfdno int 0 0
+ecom:
+= list of int 10 2
+ name pids list of int 0 0
+ call list of int 10 2
+ name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (1) int 6 0
+ seq no type 10 1
+ name nwfdno int 0 0
+ecom:
+call list of int 10 2
+ name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (1) int 6 0
+ seq no type 10 1
+ name nwfdno int 0 0
+ecom to:
+name pids list of int 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (72) int 6 0
+ecom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (1) int 6 0
+ecom to:
+* ref Sys->FD 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (80) int 6 0
+eacom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (1) int 6 0
+generate desc for big
+ecom:
+indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (1) int 6 0
+ecom to:
+name .b55 big 0 0
+ecom:
+name nwfdno int 0 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (88) int 6 0
+ecom:
+= ref Sys->FD 10 1
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (1) int 6 0
+ name nil polymorphic type 1 0
+eacom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (1) int 6 0
+generate desc for big
+ecom:
+indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (1) int 6 0
+ecom to:
+name .b57 big 0 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 8 1
+ name .b57 big 0 0
+ecom:
+= ref Node 10 1
+ name n ref Node 0 0
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom to:
+name n ref Node 0 0
+ecom:
+= ref Redirlist 10 1
+ name r ref Redirlist 0 0
+ ref ref Redirlist 10 1
+ tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom:
+ref ref Redirlist 10 1
+ tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+name r ref Redirlist 0 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+ desc $-1,8,"80"
+generate desc for Redirlist
+ecom:
+tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* Redirlist 8 0
+ name .b58 ref Redirlist 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* list of Redirword 8 0
+ + int 15 1
+ adr int 15 1
+ * Redirlist 8 0
+ name .b58 ref Redirlist 0 0
+ const (0) int 6 0
+ecom:
+= ref Redirlist 10 1
+ name .b58 ref Redirlist 0 0
+ name nil ref Redirlist 1 0
+ecom:
+name nil ref Redirlist 1 0
+ecom to:
+name .b58 ref Redirlist 0 0
+ecom:
+= list of ref Listnode 10 2
+ name rlist list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name r ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom:
+call list of ref Listnode 10 2
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name r ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name rlist list of ref Listnode 0 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name r ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name .t56 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b55 big 0 0
+ const (64) int 6 0
+ecom:
+name n ref Node 0 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b55 big 0 0
+ const (72) int 6 0
+ecom:
+name r ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b55 big 0 0
+ const (80) int 6 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b55 big 0 0
+ const (88) int 6 0
+ecom:
+name .t56 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (64) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t56 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t56 list of ref Listnode 0 0
+eacom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+generate desc for big
+ecom:
+indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+ecom to:
+name .b57 big 0 0
+ecom:
+= int 10 1
+ name rfdno int 0 0
+ const (0) int 6 0
+ecom:
+const (0) int 6 0
+ecom to:
+name rfdno int 0 0
+ecom:
+= list of Redirword 10 2
+ * list of Redirword 8 0
+ name r ref Redirlist 0 0
+ :: list of Redirword 10 2
+ tuple Redirword 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ tuple Redir 10 1
+ seq no type 10 1
+ const OREAD (0) int 6 0
+ seq no type 10 1
+ name rfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ * list of Redirword 8 0
+ name r ref Redirlist 0 0
+ecom:
+:: list of Redirword 10 2
+ tuple Redirword 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ tuple Redir 10 1
+ seq no type 10 1
+ const OREAD (0) int 6 0
+ seq no type 10 1
+ name rfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ * list of Redirword 8 0
+ name r ref Redirlist 0 0
+ecom to:
+* list of Redirword 8 0
+ name r ref Redirlist 0 0
+eacom:
+tuple Redirword 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ tuple Redir 10 1
+ seq no type 10 1
+ const OREAD (0) int 6 0
+ seq no type 10 1
+ name rfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+generate desc for Redirword
+descmap adt offset 0
+descmap offset 0
+descmap fd type ref Sys->FD offset 0 (d->offset=0 start=0) returns 0
+descmap w type string offset 8 (d->offset=8 start=0) returns 8
+descmap adt offset 16
+descmap offset 16
+descmap rtype type int offset 16 (d->offset=0 start=16) returns -1
+descmap fd1 type int offset 20 (d->offset=4 start=16) returns -1
+descmap fd2 type int offset 24 (d->offset=8 start=16) returns -1
+descmap r type Redir offset 16 (d->offset=16 start=0) returns -1
+generate desc for Redirword
+ desc $-1,32,"c0"
+ecom:
+tuple Redirword 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ tuple Redir 10 1
+ seq no type 10 1
+ const OREAD (0) int 6 0
+ seq no type 10 1
+ name rfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+name .b60 Redirword 0 0
+ecom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+ecom to:
+* ref Sys->FD 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (0) int 6 0
+eacom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+generate desc for big
+ecom:
+indx big 10 1
+ name fds array of ref Sys->FD 0 0
+ const (0) int 6 0
+ecom to:
+name .b57 big 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (8) int 6 0
+ecom:
+tuple Redir 10 1
+ seq no type 10 1
+ const OREAD (0) int 6 0
+ seq no type 10 1
+ name rfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+* Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (16) int 6 0
+ecom:
+const OREAD (0) int 6 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (16) int 6 0
+ const (0) int 6 0
+ecom:
+name rfdno int 0 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (16) int 6 0
+ const (4) int 6 0
+ecom:
+const (-1) int 6 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (16) int 6 0
+ const (8) int 6 0
+generate desc for Redirword
+ecom:
+= ref Sys->FD 10 1
+ * ref Sys->FD 0 0
+ adr int 13 1
+ name .b60 Redirword 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 0 0
+ adr int 13 1
+ name .b60 Redirword 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const w (8) int 6 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const w (8) int 6 0
+ecom:
+= int 10 1
+ name wfdno int 0 0
+ const (1) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+name wfdno int 0 0
+ecom:
+= list of Redirword 10 1
+ * list of Redirword 8 0
+ name r ref Redirlist 0 0
+ :: list of Redirword 10 1
+ tuple Redirword 10 1
+ seq no type 10 1
+ name wrpipe ref Sys->FD 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ tuple Redir 10 1
+ seq no type 10 1
+ const OWRITE (1) int 6 0
+ seq no type 10 1
+ name wfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ * list of Redirword 8 0
+ name r ref Redirlist 0 0
+ecom:
+:: list of Redirword 10 1
+ tuple Redirword 10 1
+ seq no type 10 1
+ name wrpipe ref Sys->FD 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ tuple Redir 10 1
+ seq no type 10 1
+ const OWRITE (1) int 6 0
+ seq no type 10 1
+ name wfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ * list of Redirword 8 0
+ name r ref Redirlist 0 0
+ecom to:
+* list of Redirword 8 0
+ name r ref Redirlist 0 0
+eacom:
+tuple Redirword 10 1
+ seq no type 10 1
+ name wrpipe ref Sys->FD 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ tuple Redir 10 1
+ seq no type 10 1
+ const OWRITE (1) int 6 0
+ seq no type 10 1
+ name wfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+generate desc for Redirword
+ecom:
+tuple Redirword 10 1
+ seq no type 10 1
+ name wrpipe ref Sys->FD 0 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ tuple Redir 10 1
+ seq no type 10 1
+ const OWRITE (1) int 6 0
+ seq no type 10 1
+ name wfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+name .b60 Redirword 0 0
+ecom:
+name wrpipe ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (0) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (8) int 6 0
+ecom:
+tuple Redir 10 1
+ seq no type 10 1
+ const OWRITE (1) int 6 0
+ seq no type 10 1
+ name wfdno int 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+* Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (16) int 6 0
+ecom:
+const OWRITE (1) int 6 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (16) int 6 0
+ const (0) int 6 0
+ecom:
+name wfdno int 0 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (16) int 6 0
+ const (4) int 6 0
+ecom:
+const (-1) int 6 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const (16) int 6 0
+ const (8) int 6 0
+generate desc for Redirword
+ecom:
+= ref Sys->FD 10 1
+ * ref Sys->FD 0 0
+ adr int 13 1
+ name .b60 Redirword 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 0 0
+ adr int 13 1
+ name .b60 Redirword 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const w (8) int 6 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b60 Redirword 0 0
+ const w (8) int 6 0
+ecom:
+= chan of (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+ chan chan of (int, ref Expropagate) 10 1
+ const (0) int 6 0
+ecom:
+chan chan of (int, ref Expropagate) 10 1
+ const (0) int 6 0
+ecom to:
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+ desc $-1,16,"40"
+ecom:
+spawn nothing 10 2
+ call no type 10 2
+ name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const (1) int 6 0
+ seq no type 10 1
+ name rlist list of ref Listnode 0 0
+ seq no type 10 1
+ name r ref Redirlist 0 0
+ seq no type 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (64) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (72) int 6 0
+ecom:
+name rlist list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (80) int 6 0
+ecom:
+name r ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (88) int 6 0
+ecom:
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to:
+* chan of (int, ref Expropagate) 8 0
+ + int 15 0
+ name .b57 big 0 0
+ const (96) int 6 0
+ecom:
+= (int, ref Expropagate) 10 2
+ tuple (int, ref Expropagate) 10 1
+ seq nothing 10 1
+ name pid int 0 0
+ seq nothing 10 1
+ name nil polymorphic type 1 0
+ <- (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom:
+<- (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+ecom to:
+name .b61 (int, ref Expropagate) 0 0
+ecom:
+= ref Expropagate 10 1
+ * ref Expropagate 0 0
+ + int 13 1
+ adr int 13 1
+ name .b61 (int, ref Expropagate) 0 0
+ const t1 (8) int 6 0
+ name nil ref Expropagate 1 0
+ecom:
+name nil ref Expropagate 1 0
+ecom to:
+* ref Expropagate 0 0
+ + int 13 1
+ adr int 13 1
+ name .b61 (int, ref Expropagate) 0 0
+ const t1 (8) int 6 0
+ecom:
+:: list of int 10 1
+ name pid int 0 0
+ name pids list of int 0 0
+ecom to:
+* list of int 8 0
+ name .ret int 0 0
+ecom:
+name pids list of int 0 0
+ecom to:
+name .t56 list of int 0 0
+ecom:
+= list of int 10 1
+ name .t56 list of int 0 0
+ name nil list of int 1 0
+ecom:
+name nil list of int 1 0
+ecom to:
+name .t56 list of int 0 0
+fn: walkpipeline
+64: argument ctxt ref Context ref 4
+72: argument n ref Node ref 9
+80: argument wrpipe ref Sys->FD ref 2
+88: argument wfdno int ref 3
+92: local rfdno int ref 5
+96: local fd1 int ref 4
+100: local fd2 int ref 5
+104: local nwfdno int ref 3
+108: local .t54 int ref 1
+112: local .b57 big ref 7
+120: local r ref Redirlist ref 7
+128: local fds array of ref Sys->FD ref 6
+136: local .b55 big ref 4
+144: local .b58 ref Redir ref 3
+152: local startchan chan of (int, ref Expropagate) ref 3
+160: local pids list of int ref 2
+168: local rlist list of ref Listnode ref 2
+176: local .b60 Redirword ref 2
+208: local .b59 (int, int) ref 1
+216: local .t56 string ref 1
+224: local .b61 (int, ref Expropagate) ref 1
+104: local pid int ref 3
+generate desc for walkpipeline
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap wrpipe type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
+descmap wfdno type int offset 88 (d->offset=88 start=0) returns -1
+descmap rfdno type int offset 92 (d->offset=92 start=0) returns -1
+descmap fd1 type int offset 96 (d->offset=96 start=0) returns -1
+descmap fd2 type int offset 100 (d->offset=100 start=0) returns -1
+descmap nwfdno type int offset 104 (d->offset=104 start=0) returns -1
+descmap .t54 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b57 type big offset 112 (d->offset=112 start=0) returns -1
+descmap r type ref Redirlist offset 120 (d->offset=120 start=0) returns 120
+descmap fds type array of ref Sys->FD offset 128 (d->offset=128 start=0) returns 128
+descmap .b55 type big offset 136 (d->offset=136 start=0) returns -1
+descmap .b58 type ref Redir offset 144 (d->offset=144 start=0) returns 144
+descmap startchan type chan of (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 152
+descmap pids type list of int offset 160 (d->offset=160 start=0) returns 160
+descmap rlist type list of ref Listnode offset 168 (d->offset=168 start=0) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap fd type ref Sys->FD offset 176 (d->offset=0 start=176) returns 176
+descmap w type string offset 184 (d->offset=8 start=176) returns 184
+descmap adt offset 192
+descmap offset 192
+descmap rtype type int offset 192 (d->offset=0 start=192) returns -1
+descmap fd1 type int offset 196 (d->offset=4 start=192) returns -1
+descmap fd2 type int offset 200 (d->offset=8 start=192) returns -1
+descmap r type Redir offset 192 (d->offset=16 start=176) returns -1
+descmap .b60 type Redirword offset 176 (d->offset=176 start=0) returns 184
+descmap adt offset 208
+descmap offset 208
+descmap t0 type int offset 208 (d->offset=0 start=208) returns -1
+descmap t1 type int offset 212 (d->offset=4 start=208) returns -1
+descmap .b59 type (int, int) offset 208 (d->offset=208 start=0) returns -1
+descmap .t56 type string offset 216 (d->offset=216 start=0) returns 216
+descmap adt offset 224
+descmap offset 224
+descmap t0 type int offset 224 (d->offset=0 start=224) returns -1
+descmap t1 type ref Expropagate offset 232 (d->offset=8 start=224) returns 232
+descmap .b61 type (int, ref Expropagate) offset 224 (d->offset=224 start=0) returns 232
+fncom: makeredir 1 418328
+fncom: glom 14 4183e8
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 8 0
+ name .ret int 0 0
+ecom:
+call list of ref Listnode 10 2
+ name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name onto list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ name .ret int 0 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name n ref Node 0 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ecom to:
+name .t63 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (64) int 6 0
+ecom:
+name n ref Node 0 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (80) int 6 0
+ecom:
+name .t63 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b62 big 0 0
+ const (64) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t63 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t63 list of ref Listnode 0 0
+ecom:
+name onto list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b62 big 0 0
+ const (72) int 6 0
+ecom:
+= list of ref Listnode 10 2
+ name nlist list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name onto list of ref Listnode 0 0
+ecom:
+call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name onto list of ref Listnode 0 0
+ecom to:
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const right (16) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (80) int 6 0
+ecom:
+name onto list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (88) int 6 0
+eacom:
+* int 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+generate desc for ref Node
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+name .b65 ref Node 0 0
+ecom:
+= ref Node 10 1
+ name .b65 ref Node 0 0
+ name nil ref Node 1 0
+ecom:
+name nil ref Node 1 0
+ecom to:
+name .b65 ref Node 0 0
+ecom:
+= list of ref Listnode 10 2
+ name nlist list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nlist list of ref Listnode 0 0
+ecom:
+call list of ref Listnode 10 2
+ name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nlist list of ref Listnode 0 0
+ecom to:
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ecom to:
+name .t63 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b62 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b62 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b62 big 0 0
+ const (80) int 6 0
+ecom:
+name .t63 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (64) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t63 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t63 list of ref Listnode 0 0
+ecom:
+name nlist list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (72) int 6 0
+ecom:
+= list of ref Listnode 10 2
+ name nlist list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nlist list of ref Listnode 0 0
+ecom:
+call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nlist list of ref Listnode 0 0
+ecom to:
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (80) int 6 0
+ecom:
+name nlist list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b64 big 0 0
+ const (88) int 6 0
+ecom:
+name nlist list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ name .ret int 0 0
+fn: glom
+64: argument ctxt ref Context ref 4
+72: argument n ref Node ref 7
+80: argument redirs ref Redirlist ref 4
+88: argument onto list of ref Listnode ref 2
+96: local nlist list of ref Listnode ref 6
+104: local .b64 big ref 4
+112: local .b62 big ref 2
+120: local .b65 ref Node ref 1
+128: local .t63 list of ref Listnode ref 1
+generate desc for glom
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
+descmap onto type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap nlist type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap .b64 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b62 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .b65 type ref Node offset 120 (d->offset=120 start=0) returns 120
+descmap .t63 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+fncom: listjoin 3 4184a8
+ecom:
+= list of ref Listnode 10 1
+ name l list of ref Listnode 0 0
+ :: list of ref Listnode 10 1
+ hd ref Listnode 10 1
+ name left list of ref Listnode 0 0
+ name l list of ref Listnode 0 0
+ecom:
+:: list of ref Listnode 10 1
+ hd ref Listnode 10 1
+ name left list of ref Listnode 0 0
+ name l list of ref Listnode 0 0
+ecom to:
+name l list of ref Listnode 0 0
+eacom:
+hd ref Listnode 10 1
+ name left list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+hd ref Listnode 10 1
+ name left list of ref Listnode 0 0
+ecom to:
+name .b66 ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b66 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b66 ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name left list of ref Listnode 0 0
+ tl list of ref Listnode 10 1
+ name left list of ref Listnode 0 0
+ecom:
+tl list of ref Listnode 10 1
+ name left list of ref Listnode 0 0
+ecom to:
+name left list of ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name right list of ref Listnode 0 0
+ :: list of ref Listnode 10 1
+ hd ref Listnode 10 1
+ name l list of ref Listnode 0 0
+ name right list of ref Listnode 0 0
+ecom:
+:: list of ref Listnode 10 1
+ hd ref Listnode 10 1
+ name l list of ref Listnode 0 0
+ name right list of ref Listnode 0 0
+ecom to:
+name right list of ref Listnode 0 0
+eacom:
+hd ref Listnode 10 1
+ name l list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+hd ref Listnode 10 1
+ name l list of ref Listnode 0 0
+ecom to:
+name .b66 ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b66 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b66 ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name l list of ref Listnode 0 0
+ tl list of ref Listnode 10 1
+ name l list of ref Listnode 0 0
+ecom:
+tl list of ref Listnode 10 1
+ name l list of ref Listnode 0 0
+ecom to:
+name l list of ref Listnode 0 0
+ecom:
+name right list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ name .ret int 0 0
+fn: listjoin
+64: argument left list of ref Listnode ref 4
+72: argument right list of ref Listnode ref 3
+80: local l list of ref Listnode ref 6
+88: local .b66 ref Listnode ref 2
+generate desc for listjoin
+descmap offset 0
+descmap left type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap right type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap l type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .b66 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+fncom: pipecmd 2 418568
+eacom:
+& int 10 1
+ * int 8 0
+ name redir ref Redir 0 0
+ const OAPPEND (524288) int 6 0
+ecom:
+& int 10 1
+ * int 8 0
+ name redir ref Redir 0 0
+ const OAPPEND (524288) int 6 0
+ecom to:
+name .t67 int 0 0
+ecom:
+call no type 10 2
+ name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const bad redir string 1 0
+ seq no type 10 1
+ const sh: bad redirection string 1 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b68 big 0 0
+ const (64) int 6 0
+ecom:
+const bad redir string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b68 big 0 0
+ const (72) int 6 0
+ecom:
+const sh: bad redirection string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b68 big 0 0
+ const (80) int 6 0
+ecom:
+= Redir 10 1
+ name r Redir 0 0
+ * Redir 8 0
+ name redir ref Redir 0 0
+ecom:
+* Redir 8 0
+ name redir ref Redir 0 0
+ecom to:
+name r Redir 0 0
+generate desc for Redir
+descmap adt offset 0
+descmap offset 0
+descmap rtype type int offset 0 (d->offset=0 start=0) returns -1
+descmap fd1 type int offset 4 (d->offset=4 start=0) returns -1
+descmap fd2 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for Redir
+ desc $-1,12,""
+ecom:
+= int 10 1
+ * int 0 0
+ adr int 13 1
+ name r Redir 0 0
+ const OWRITE (1) int 6 0
+ecom:
+const OWRITE (1) int 6 0
+ecom to:
+* int 0 0
+ adr int 13 1
+ name r Redir 0 0
+ecom:
+= int 10 1
+ * int 0 0
+ adr int 13 1
+ name r Redir 0 0
+ const OREAD (0) int 6 0
+ecom:
+const OREAD (0) int 6 0
+ecom to:
+* int 0 0
+ adr int 13 1
+ name r Redir 0 0
+ecom:
+= array of ref Sys->FD 10 1
+ name p array of ref Sys->FD 0 0
+ array array of ref Sys->FD 10 1
+ const (2) int 6 0
+ecom:
+array array of ref Sys->FD 10 1
+ const (2) int 6 0
+ecom to:
+name p array of ref Sys->FD 0 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+ desc $-1,8,"80"
+eacom:
+call int 10 2
+ -> fn(fds: array of ref Sys->FD): int 12 1
+ name sys Sys 1 0
+ name pipe nothing 11 1
+ seq no type 10 1
+ name p array of ref Sys->FD 0 0
+ecom:
+call int 10 2
+ -> fn(fds: array of ref Sys->FD): int 12 1
+ name sys Sys 1 0
+ name pipe nothing 11 1
+ seq no type 10 1
+ name p array of ref Sys->FD 0 0
+ecom to:
+name .t67 int 0 0
+generate desc for big
+ecom:
+name p array of ref Sys->FD 0 0
+ecom to:
+* array of ref Sys->FD 8 0
+ + int 15 0
+ name .b68 big 0 0
+ const (64) int 6 0
+ecom:
+call no type 10 2
+ name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+ seq nothing 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ const no pipe string 1 0
+ seq no type 10 2
+ call string 10 2
+ -> fn(s: string, *): string 12 1
+ name sys Sys 1 0
+ name sprint nothing 11 1
+ seq no type 10 1
+ const sh: cannot make pipe: %r string 1 0
+generate desc for big
+ecom:
+call string 10 2
+ -> fn(s: string, *): string 12 1
+ name sys Sys 1 0
+ name sprint nothing 11 1
+ seq no type 10 1
+ const sh: cannot make pipe: %r string 1 0
+ecom to:
+name .t69 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom:
+const sh: cannot make pipe: %r string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b70 big 0 0
+ const (64) int 6 0
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b68 big 0 0
+ const (64) int 6 0
+ecom:
+const no pipe string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b68 big 0 0
+ const (72) int 6 0
+ecom:
+name .t69 string 0 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b68 big 0 0
+ const (80) int 6 0
+ecom:
+= string 10 1
+ name .t69 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t69 string 0 0
+ecom:
+= chan of (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+ chan chan of (int, ref Expropagate) 10 1
+ const (0) int 6 0
+ecom:
+chan chan of (int, ref Expropagate) 10 1
+ const (0) int 6 0
+ecom to:
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+ desc $-1,16,"40"
+ecom:
+spawn nothing 10 2
+ call no type 10 2
+ name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ const (1) int 6 0
+ seq no type 10 2
+ name cmd list of ref Listnode 0 0
+ seq no type 10 2
+ ref ref Redirlist 10 2
+ tuple Redirlist 10 2
+ seq no type 10 2
+ :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+ tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name r Redir 0 0
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b70 big 0 0
+ const (64) int 6 0
+ecom:
+const (1) int 6 0
+ecom to:
+* int 8 0
+ + int 15 0
+ name .b70 big 0 0
+ const (72) int 6 0
+ecom:
+name cmd list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b70 big 0 0
+ const (80) int 6 0
+ecom:
+ref ref Redirlist 10 2
+ tuple Redirlist 10 2
+ seq no type 10 2
+ :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+ tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name r Redir 0 0
+ name nil polymorphic type 1 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b70 big 0 0
+ const (88) int 6 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+ desc $-1,8,"80"
+generate desc for Redirlist
+ecom:
+tuple Redirlist 10 2
+ seq no type 10 2
+ :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+ tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name r Redir 0 0
+ name nil polymorphic type 1 0
+ecom to:
+* Redirlist 8 0
+ name .b71 ref Redirlist 0 0
+ecom:
+:: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+ tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name r Redir 0 0
+ name nil polymorphic type 1 0
+ecom to:
+* list of Redirword 8 0
+ + int 15 1
+ adr int 15 1
+ * Redirlist 8 0
+ name .b71 ref Redirlist 0 0
+ const (0) int 6 0
+eacom:
+tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name r Redir 0 0
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type ref Sys->FD offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
+descmap adt offset 16
+descmap offset 16
+descmap rtype type int offset 16 (d->offset=0 start=16) returns -1
+descmap fd1 type int offset 20 (d->offset=4 start=16) returns -1
+descmap fd2 type int offset 24 (d->offset=8 start=16) returns -1
+descmap t2 type Redir offset 16 (d->offset=16 start=0) returns -1
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+ desc $-1,32,"c0"
+ecom:
+tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+ seq no type 10 2
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name r Redir 0 0
+ecom to:
+name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ecom to:
+* ref Sys->FD 0 0
+ + int 13 1
+ adr int 13 1
+ name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ const (0) int 6 0
+eacom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+generate desc for big
+ecom:
+indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ecom to:
+name .b68 big 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 0 0
+ + int 13 1
+ adr int 13 1
+ name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ const (8) int 6 0
+ecom:
+name r Redir 0 0
+ecom to:
+* Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ const (16) int 6 0
+generate desc for Redir
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t69 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+ecom:
+= ref Sys->FD 10 1
+ * ref Sys->FD 0 0
+ adr int 13 1
+ name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 0 0
+ adr int 13 1
+ name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom:
+= polymorphic type 10 1
+ * polymorphic type 0 0
+ + int 13 1
+ adr int 13 1
+ name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ const t1 (8) int 6 0
+ name nil polymorphic type 1 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 0 0
+ + int 13 1
+ adr int 13 1
+ name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ const t1 (8) int 6 0
+ecom:
+= list of (ref Sys->FD, polymorphic type, Redir) 10 1
+ name .t69 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+ name nil list of (ref Sys->FD, polymorphic type, Redir) 1 0
+ecom:
+name nil list of (ref Sys->FD, polymorphic type, Redir) 1 0
+ecom to:
+name .t69 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom:
+= ref Redirlist 10 1
+ name .b71 ref Redirlist 0 0
+ name nil ref Redirlist 1 0
+ecom:
+name nil ref Redirlist 1 0
+ecom to:
+name .b71 ref Redirlist 0 0
+ecom:
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to:
+* chan of (int, ref Expropagate) 8 0
+ + int 15 0
+ name .b70 big 0 0
+ const (96) int 6 0
+ecom:
+= ref Sys->FD 10 1
+ * ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ name nil polymorphic type 1 0
+eacom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+generate desc for big
+ecom:
+indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (1) int 6 0
+ecom to:
+name .b70 big 0 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 8 1
+ name .b70 big 0 0
+ecom:
+<- (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom:
+<- (int, ref Expropagate) 10 1
+ name startchan chan of (int, ref Expropagate) 0 0
+ecom to:
+name .b73 (int, ref Expropagate) 0 0
+ecom:
+= ref Expropagate 10 1
+ * ref Expropagate 0 0
+ + int 13 1
+ adr int 13 1
+ name .b73 (int, ref Expropagate) 0 0
+ const t1 (8) int 6 0
+ name nil ref Expropagate 1 0
+ecom:
+name nil ref Expropagate 1 0
+ecom to:
+* ref Expropagate 0 0
+ + int 13 1
+ adr int 13 1
+ name .b73 (int, ref Expropagate) 0 0
+ const t1 (8) int 6 0
+ecom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (0) int 6 0
+ecom to:
+* ref Sys->FD 8 0
+ name .ret int 0 0
+eacom:
+* ref Sys->FD 10 1
+ indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (0) int 6 0
+generate desc for big
+ecom:
+indx big 10 1
+ name p array of ref Sys->FD 0 0
+ const (0) int 6 0
+ecom to:
+name .b70 big 0 0
+fn: pipecmd
+64: argument ctxt ref Context ref 3
+72: argument cmd list of ref Listnode ref 1
+80: argument redir ref Redir ref 4
+88: local .t67 int ref 1
+96: local p array of ref Sys->FD ref 5
+104: local .b68 big ref 4
+112: local .b70 big ref 4
+120: local r Redir ref 4
+136: local startchan chan of (int, ref Expropagate) ref 3
+144: local .b71 ref Redirlist ref 1
+152: local .t69 string ref 1
+160: local .b73 (int, ref Expropagate) ref 1
+176: local .b72 (ref Sys->FD, polymorphic type, Redir) ref 1
+generate desc for pipecmd
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap cmd type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap redir type ref Redir offset 80 (d->offset=80 start=0) returns 80
+descmap .t67 type int offset 88 (d->offset=88 start=0) returns -1
+descmap p type array of ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
+descmap .b68 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b70 type big offset 112 (d->offset=112 start=0) returns -1
+descmap adt offset 120
+descmap offset 120
+descmap rtype type int offset 120 (d->offset=0 start=120) returns -1
+descmap fd1 type int offset 124 (d->offset=4 start=120) returns -1
+descmap fd2 type int offset 128 (d->offset=8 start=120) returns -1
+descmap r type Redir offset 120 (d->offset=120 start=0) returns -1
+descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
+descmap .b71 type ref Redirlist offset 144 (d->offset=144 start=0) returns 144
+descmap .t69 type string offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
+descmap t1 type ref Expropagate offset 168 (d->offset=8 start=160) returns 168
+descmap .b73 type (int, ref Expropagate) offset 160 (d->offset=160 start=0) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap t0 type ref Sys->FD offset 176 (d->offset=0 start=176) returns 176
+descmap t1 type polymorphic type offset 184 (d->offset=8 start=176) returns 184
+descmap adt offset 192
+descmap offset 192
+descmap rtype type int offset 192 (d->offset=0 start=192) returns -1
+descmap fd1 type int offset 196 (d->offset=4 start=192) returns -1
+descmap fd2 type int offset 200 (d->offset=8 start=192) returns -1
+descmap t2 type Redir offset 192 (d->offset=16 start=176) returns -1
+descmap .b72 type (ref Sys->FD, polymorphic type, Redir) offset 176 (d->offset=176 start=0) returns 184
+fncom: glomoperation 3 418628
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* polymorphic type 8 0
+ name .ret int 0 0
+ecom:
+= list of ref Listnode 10 1
+ name nlist list of ref Listnode 0 0
+ :: list of ref Listnode 10 1
+ ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ * string 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const word (24) int 6 0
+ name nil polymorphic type 1 0
+ecom:
+:: list of ref Listnode 10 1
+ ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ * string 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const word (24) int 6 0
+ name nil polymorphic type 1 0
+ecom to:
+name nlist list of ref Listnode 0 0
+eacom:
+ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ * string 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const word (24) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ * string 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const word (24) int 6 0
+ecom to:
+name .b74 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom:
+tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ * string 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const word (24) int 6 0
+ecom to:
+* Listnode 8 0
+ name .b74 ref Listnode 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Listnode 8 0
+ name .b74 ref Listnode 0 0
+ const (0) int 6 0
+ecom:
+* string 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const word (24) int 6 0
+ecom to:
+* string 8 0
+ + int 15 1
+ adr int 15 1
+ * Listnode 8 0
+ name .b74 ref Listnode 0 0
+ const (8) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t75 list of ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b74 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b74 ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name .t75 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t75 list of ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 2
+ name wlist list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 2
+ ref ref Redirlist 10 1
+ tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom:
+call list of ref Listnode 10 2
+ name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 2
+ ref ref Redirlist 10 1
+ tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name wlist list of ref Listnode 0 0
+generate desc for big
+ecom:
+call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 2
+ name ctxt ref Context 0 0
+ seq no type 10 2
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 2
+ ref ref Redirlist 10 1
+ tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name .t75 list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (72) int 6 0
+ecom:
+ref ref Redirlist 10 1
+ tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (80) int 6 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+ desc $-1,8,"80"
+generate desc for Redirlist
+ecom:
+tuple Redirlist 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ecom to:
+* Redirlist 8 0
+ name .b74 ref Redirlist 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* list of Redirword 8 0
+ + int 15 1
+ adr int 15 1
+ * Redirlist 8 0
+ name .b74 ref Redirlist 0 0
+ const (0) int 6 0
+ecom:
+= ref Redirlist 10 1
+ name .b74 ref Redirlist 0 0
+ name nil ref Redirlist 1 0
+ecom:
+name nil ref Redirlist 1 0
+ecom to:
+name .b74 ref Redirlist 0 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (88) int 6 0
+ecom:
+name .t75 list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b76 big 0 0
+ const (64) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name .t75 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t75 list of ref Listnode 0 0
+eacom:
+len int 10 1
+ name wlist list of ref Listnode 0 0
+ecom:
+len int 10 1
+ name wlist list of ref Listnode 0 0
+ecom to:
+name .t78 int 0 0
+ecom:
+call no type 10 2
+ name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+ seq nothing 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ const bad redir string 1 0
+ seq no type 10 1
+ const sh: single redirection operand required string 1 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (64) int 6 0
+ecom:
+const bad redir string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (72) int 6 0
+ecom:
+const sh: single redirection operand required string 1 0
+ecom to:
+* string 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (80) int 6 0
+eacom:
+* ref Node 10 1
+ hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ecom to:
+name .b74 ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b74 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b74 ref Listnode 0 0
+ecom:
+= ref Sys->FD 10 2
+ name fd ref Sys->FD 0 0
+ call ref Sys->FD 10 2
+ name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name wlist list of ref Listnode 0 0
+ seq no type 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom:
+call ref Sys->FD 10 2
+ name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ name wlist list of ref Listnode 0 0
+ seq no type 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+name fd ref Sys->FD 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (64) int 6 0
+ecom:
+name wlist list of ref Listnode 0 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (72) int 6 0
+ecom:
+* ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+* ref Redir 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (80) int 6 0
+ecom:
+= list of Redirword 10 2
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ :: list of Redirword 10 2
+ tuple Redirword 10 2
+ seq no type 10 2
+ name fd ref Sys->FD 0 0
+ seq no type 10 2
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ tuple (int, int, int) 10 2
+ seq no type 10 2
+ * int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ seq no type 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ecom:
+:: list of Redirword 10 2
+ tuple Redirword 10 2
+ seq no type 10 2
+ name fd ref Sys->FD 0 0
+ seq no type 10 2
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ tuple (int, int, int) 10 2
+ seq no type 10 2
+ * int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ seq no type 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ecom to:
+* list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+eacom:
+tuple Redirword 10 2
+ seq no type 10 2
+ name fd ref Sys->FD 0 0
+ seq no type 10 2
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ tuple (int, int, int) 10 2
+ seq no type 10 2
+ * int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ seq no type 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+generate desc for Redirword
+ecom:
+tuple Redirword 10 2
+ seq no type 10 2
+ name fd ref Sys->FD 0 0
+ seq no type 10 2
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ tuple (int, int, int) 10 2
+ seq no type 10 2
+ * int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ seq no type 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+name .b79 Redirword 0 0
+ecom:
+name fd ref Sys->FD 0 0
+ecom to:
+* ref Sys->FD 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (0) int 6 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (8) int 6 0
+ecom:
+tuple (int, int, int) 10 2
+ seq no type 10 2
+ * int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ seq no type 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ seq no type 10 1
+ const (-1) int 6 0
+ecom to:
+* Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (16) int 6 0
+ecom:
+* int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (16) int 6 0
+ const (0) int 6 0
+eacom:
+* int 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+generate desc for ref Redir
+ecom:
+* ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+name .b74 ref Redir 0 0
+ecom:
+= ref Redir 10 1
+ name .b74 ref Redir 0 0
+ name nil ref Redir 1 0
+ecom:
+name nil ref Redir 1 0
+ecom to:
+name .b74 ref Redir 0 0
+ecom:
+* int 8 0
+ name fd ref Sys->FD 0 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (16) int 6 0
+ const (4) int 6 0
+ecom:
+const (-1) int 6 0
+ecom to:
+* int 0 0
+ + int 13 1
+ adr int 13 1
+ * Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (16) int 6 0
+ const (8) int 6 0
+generate desc for Redirword
+ecom:
+= ref Sys->FD 10 1
+ * ref Sys->FD 0 0
+ adr int 13 1
+ name .b79 Redirword 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 0 0
+ adr int 13 1
+ name .b79 Redirword 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const w (8) int 6 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const w (8) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name nlist list of ref Listnode 0 0
+ :: list of ref Listnode 10 1
+ ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ + string 10 1
+ const /fd/ string 1 0
+ cast string 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ name nil polymorphic type 1 0
+ecom:
+:: list of ref Listnode 10 1
+ ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ + string 10 1
+ const /fd/ string 1 0
+ cast string 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ name nil polymorphic type 1 0
+ecom to:
+name nlist list of ref Listnode 0 0
+eacom:
+ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ + string 10 1
+ const /fd/ string 1 0
+ cast string 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+ desc $-1,8,"80"
+ecom:
+ref ref Listnode 10 1
+ tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ + string 10 1
+ const /fd/ string 1 0
+ cast string 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ecom to:
+name .b74 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom:
+tuple Listnode 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ + string 10 1
+ const /fd/ string 1 0
+ cast string 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ecom to:
+* Listnode 8 0
+ name .b74 ref Listnode 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Node 8 0
+ + int 15 1
+ adr int 15 1
+ * Listnode 8 0
+ name .b74 ref Listnode 0 0
+ const (0) int 6 0
+ecom:
++ string 10 1
+ const /fd/ string 1 0
+ cast string 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ecom to:
+* string 8 0
+ + int 15 1
+ adr int 15 1
+ * Listnode 8 0
+ name .b74 ref Listnode 0 0
+ const (8) int 6 0
+eacom:
+cast string 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ecom:
+cast string 10 1
+ * int 8 0
+ name fd ref Sys->FD 0 0
+ecom to:
+name .t75 string 0 0
+ecom:
+= string 10 1
+ name .t75 string 0 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+name .t75 string 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+name .t75 list of ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b74 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b74 ref Listnode 0 0
+ecom:
+= list of ref Listnode 10 1
+ name .t75 list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name .t75 list of ref Listnode 0 0
+ecom:
+= ref Sys->FD 10 1
+ name fd ref Sys->FD 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+name fd ref Sys->FD 0 0
+ecom:
+= list of Redirword 10 2
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ :: list of Redirword 10 2
+ tuple Redirword 10 2
+ seq no type 10 2
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ * string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ const word (8) int 6 0
+ seq no type 10 1
+ * Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ecom:
+:: list of Redirword 10 2
+ tuple Redirword 10 2
+ seq no type 10 2
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ * string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ const word (8) int 6 0
+ seq no type 10 1
+ * Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ecom to:
+* list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+eacom:
+tuple Redirword 10 2
+ seq no type 10 2
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ * string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ const word (8) int 6 0
+ seq no type 10 1
+ * Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+generate desc for Redirword
+ecom:
+tuple Redirword 10 2
+ seq no type 10 2
+ name nil polymorphic type 1 0
+ seq no type 10 2
+ * string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ const word (8) int 6 0
+ seq no type 10 1
+ * Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+name .b79 Redirword 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Sys->FD 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (0) int 6 0
+ecom:
+* string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ const word (8) int 6 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (8) int 6 0
+eacom:
+* string 10 1
+ + int 10 1
+ hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ const word (8) int 6 0
+generate desc for ref Listnode
+ecom:
+hd ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ecom to:
+name .b74 ref Listnode 0 0
+ecom:
+= ref Listnode 10 1
+ name .b74 ref Listnode 0 0
+ name nil ref Listnode 1 0
+ecom:
+name nil ref Listnode 1 0
+ecom to:
+name .b74 ref Listnode 0 0
+ecom:
+* Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+* Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (16) int 6 0
+eacom:
+* Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+generate desc for ref Redir
+ecom:
+* ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+name .b74 ref Redir 0 0
+generate desc for Redir
+ecom:
+= ref Redir 10 1
+ name .b74 ref Redir 0 0
+ name nil ref Redir 1 0
+ecom:
+name nil ref Redir 1 0
+ecom to:
+name .b74 ref Redir 0 0
+generate desc for Redirword
+ecom:
+= ref Sys->FD 10 1
+ * ref Sys->FD 0 0
+ adr int 13 1
+ name .b79 Redirword 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 0 0
+ adr int 13 1
+ name .b79 Redirword 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const w (8) int 6 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const w (8) int 6 0
+ecom:
+= list of ref Listnode 10 1
+ name wlist list of ref Listnode 0 0
+ name nil list of ref Listnode 1 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+name wlist list of ref Listnode 0 0
+ecom:
+= list of Redirword 10 1
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ :: list of Redirword 10 1
+ tuple Redirword 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const string 1 0
+ seq no type 10 1
+ * Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ecom:
+:: list of Redirword 10 1
+ tuple Redirword 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const string 1 0
+ seq no type 10 1
+ * Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ * list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+ecom to:
+* list of Redirword 8 0
+ name redirs ref Redirlist 0 0
+eacom:
+tuple Redirword 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const string 1 0
+ seq no type 10 1
+ * Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+generate desc for Redirword
+ecom:
+tuple Redirword 10 1
+ seq no type 10 1
+ name nil polymorphic type 1 0
+ seq no type 10 1
+ const string 1 0
+ seq no type 10 1
+ * Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+name .b79 Redirword 0 0
+ecom:
+name nil polymorphic type 1 0
+ecom to:
+* ref Sys->FD 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (0) int 6 0
+ecom:
+const string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (8) int 6 0
+ecom:
+* Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+* Redir 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const (16) int 6 0
+eacom:
+* Redir 10 1
+ * ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+generate desc for ref Redir
+ecom:
+* ref Redir 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const redir (32) int 6 0
+ecom to:
+name .b74 ref Redir 0 0
+generate desc for Redir
+ecom:
+= ref Redir 10 1
+ name .b74 ref Redir 0 0
+ name nil ref Redir 1 0
+ecom:
+name nil ref Redir 1 0
+ecom to:
+name .b74 ref Redir 0 0
+generate desc for Redirword
+ecom:
+= ref Sys->FD 10 1
+ * ref Sys->FD 0 0
+ adr int 13 1
+ name .b79 Redirword 0 0
+ name nil ref Sys->FD 1 0
+ecom:
+name nil ref Sys->FD 1 0
+ecom to:
+* ref Sys->FD 0 0
+ adr int 13 1
+ name .b79 Redirword 0 0
+ecom:
+= string 10 1
+ * string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const w (8) int 6 0
+ name nil string 1 0
+ecom:
+name nil string 1 0
+ecom to:
+* string 0 0
+ + int 13 1
+ adr int 13 1
+ name .b79 Redirword 0 0
+ const w (8) int 6 0
+ecom:
+= list of ref Listnode 10 2
+ name nlist list of ref Listnode 0 0
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom:
+call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1
+ * ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ seq no type 10 1
+ name redirs ref Redirlist 0 0
+ seq no type 10 1
+ name nil list of ref Listnode 1 0
+ecom to:
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom:
+name ctxt ref Context 0 0
+ecom to:
+* ref Context 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (64) int 6 0
+ecom:
+* ref Node 8 0
+ + int 15 1
+ name n ref Node 0 0
+ const left (8) int 6 0
+ecom to:
+* ref Node 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (72) int 6 0
+ecom:
+name redirs ref Redirlist 0 0
+ecom to:
+* ref Redirlist 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (80) int 6 0
+ecom:
+name nil list of ref Listnode 1 0
+ecom to:
+* list of ref Listnode 8 0
+ + int 15 0
+ name .b77 big 0 0
+ const (88) int 6 0
+ecom:
+= list of ref Listnode 10 3
+ name nlist list of ref Listnode 0 0
+ call list of ref Listnode 10 3
+ name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 3
+ name ctxt ref Context 0 0
+ seq no type 10 3
+ call list of ref Listnode 10 2
+ name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+ seq no type 10 1
+ name ctxt ref Context 0 0
+ seq no type 10 1<