Commit f21e731c authored by Ken Thompson's avatar Ken Thompson

added printn and panicn

prints that insert spaces and new line

R=r
OCL=16370
CL=16370
parent 0216273c
......@@ -269,7 +269,7 @@ enum
ORETURN, OFOR, OIF, OSWITCH,
OAS, OASOP, OCASE, OXCASE, OFALL, OXFALL,
OGOTO, OPROC, ONEW, OEMPTY, OSELECT,
OLEN, OCAP, OPANIC, OPRINT, OTYPEOF,
OLEN, OCAP, OPANIC, OPANICN, OPRINT, OPRINTN, OTYPEOF,
OOROR,
OANDAND,
......@@ -695,7 +695,7 @@ Node* ascompatee(int, Node**, Node**);
Node* ascompatet(int, Node**, Type**, int);
Node* ascompatte(int, Type**, Node**, int);
int ascompat(Type*, Type*);
Node* prcompat(Node*);
Node* prcompat(Node*, int);
Node* nodpanic(int32);
Node* newcompat(Node*);
Node* stringop(Node*, int);
......
......@@ -18,7 +18,7 @@
%token <sym> LPACKAGE LIMPORT LEXPORT
%token <sym> LMAP LCHAN LINTERFACE LFUNC LSTRUCT
%token <sym> LCOLAS LFALL LRETURN
%token <sym> LNEW LLEN LCAP LTYPEOF LPANIC LPRINT
%token <sym> LNEW LLEN LCAP LTYPEOF LPANIC LPANICN LPRINT LPRINTN
%token <sym> LVAR LTYPE LCONST LCONVERT LSELECT
%token <sym> LFOR LIF LELSE LSWITCH LCASE LDEFAULT
%token <sym> LBREAK LCONTINUE LGO LGOTO LRANGE
......@@ -361,10 +361,18 @@ noninc_stmt:
{
$$ = nod(OPRINT, $3, N);
}
| LPRINTN '(' oexpr_list ')'
{
$$ = nod(OPRINTN, $3, N);
}
| LPANIC '(' oexpr_list ')'
{
$$ = nod(OPANIC, $3, N);
}
| LPANICN '(' oexpr_list ')'
{
$$ = nod(OPANICN, $3, N);
}
inc_stmt:
expr LINC
......@@ -896,7 +904,9 @@ keyword:
| LLEN
| LCAP
| LPANIC
| LPANICN
| LPRINT
| LPRINTN
| LNEW
| LBASETYPE
| LTYPEOF
......
......@@ -998,7 +998,9 @@ static struct
"nil", LNIL, Txxx,
"package", LPACKAGE, Txxx,
"panic", LPANIC, Txxx,
"panicn", LPANICN, Txxx,
"print", LPRINT, Txxx,
"printn", LPRINTN, Txxx,
"range", LRANGE, Txxx,
"return", LRETURN, Txxx,
"select", LSELECT, Txxx,
......
......@@ -693,7 +693,9 @@ opnames[] =
[OFALL] = "FALL",
[OXFALL] = "XFALL",
[OPANIC] = "PANIC",
[OPANICN] = "PANICN",
[OPRINT] = "PRINT",
[OPRINTN] = "PRINTN",
[OXXX] = "XXX",
};
......
......@@ -17,6 +17,8 @@ func printint(int64);
func printstring(string);
func printpointer(*any);
func printinter(any);
func printnl();
func printsp();
func catstring(string, string) string;
func cmpstring(string, string) int32;
......@@ -92,6 +94,8 @@ export
printstring
printpointer
printinter
printnl
printsp
// op string
catstring
......
......@@ -2,10 +2,10 @@ char* sysimport =
"package sys\n"
"type sys._esys_002 {}\n"
"type sys._esys_003 *sys.any\n"
"type sys._osys_457 {_esys_455 sys._esys_003}\n"
"type sys._osys_461 {_esys_459 sys._esys_003}\n"
"type sys.uint32 6\n"
"type sys._isys_459 {_esys_456 sys.uint32}\n"
"type sys._esys_001 (sys._esys_002 sys._osys_457 sys._isys_459)\n"
"type sys._isys_463 {_esys_460 sys.uint32}\n"
"type sys._esys_001 (sys._esys_002 sys._osys_461 sys._isys_463)\n"
"var !sys.mal sys._esys_001\n"
"type sys._esys_005 {}\n"
"type sys._esys_006 {}\n"
......@@ -25,337 +25,347 @@ char* sysimport =
"type sys._esys_017 {}\n"
"type sys._esys_018 {}\n"
"type sys.int32 5\n"
"type sys._isys_467 {_esys_466 sys.int32}\n"
"type sys._esys_016 (sys._esys_017 sys._esys_018 sys._isys_467)\n"
"type sys._isys_471 {_esys_470 sys.int32}\n"
"type sys._esys_016 (sys._esys_017 sys._esys_018 sys._isys_471)\n"
"var !sys.panicl sys._esys_016\n"
"type sys._esys_020 {}\n"
"type sys._esys_021 {}\n"
"type sys.bool 12\n"
"type sys._isys_472 {_esys_471 sys.bool}\n"
"type sys._esys_019 (sys._esys_020 sys._esys_021 sys._isys_472)\n"
"type sys._isys_476 {_esys_475 sys.bool}\n"
"type sys._esys_019 (sys._esys_020 sys._esys_021 sys._isys_476)\n"
"var !sys.printbool sys._esys_019\n"
"type sys._esys_023 {}\n"
"type sys._esys_024 {}\n"
"type sys.float64 10\n"
"type sys._isys_477 {_esys_476 sys.float64}\n"
"type sys._esys_022 (sys._esys_023 sys._esys_024 sys._isys_477)\n"
"type sys._isys_481 {_esys_480 sys.float64}\n"
"type sys._esys_022 (sys._esys_023 sys._esys_024 sys._isys_481)\n"
"var !sys.printfloat sys._esys_022\n"
"type sys._esys_026 {}\n"
"type sys._esys_027 {}\n"
"type sys.int64 7\n"
"type sys._isys_482 {_esys_481 sys.int64}\n"
"type sys._esys_025 (sys._esys_026 sys._esys_027 sys._isys_482)\n"
"type sys._isys_486 {_esys_485 sys.int64}\n"
"type sys._esys_025 (sys._esys_026 sys._esys_027 sys._isys_486)\n"
"var !sys.printint sys._esys_025\n"
"type sys._esys_029 {}\n"
"type sys._esys_030 {}\n"
"type sys._esys_031 25\n"
"type sys.string *sys._esys_031\n"
"type sys._isys_487 {_esys_486 sys.string}\n"
"type sys._esys_028 (sys._esys_029 sys._esys_030 sys._isys_487)\n"
"type sys._isys_491 {_esys_490 sys.string}\n"
"type sys._esys_028 (sys._esys_029 sys._esys_030 sys._isys_491)\n"
"var !sys.printstring sys._esys_028\n"
"type sys._esys_033 {}\n"
"type sys._esys_034 {}\n"
"type sys._esys_035 *sys.any\n"
"type sys._isys_492 {_esys_491 sys._esys_035}\n"
"type sys._esys_032 (sys._esys_033 sys._esys_034 sys._isys_492)\n"
"type sys._isys_496 {_esys_495 sys._esys_035}\n"
"type sys._esys_032 (sys._esys_033 sys._esys_034 sys._isys_496)\n"
"var !sys.printpointer sys._esys_032\n"
"type sys._esys_037 {}\n"
"type sys._esys_038 {}\n"
"type sys.any 24\n"
"type sys._isys_497 {_esys_496 sys.any}\n"
"type sys._esys_036 (sys._esys_037 sys._esys_038 sys._isys_497)\n"
"type sys._isys_501 {_esys_500 sys.any}\n"
"type sys._esys_036 (sys._esys_037 sys._esys_038 sys._isys_501)\n"
"var !sys.printinter sys._esys_036\n"
"type sys._esys_040 {}\n"
"type sys._osys_504 {_esys_501 sys.string}\n"
"type sys._isys_506 {_esys_502 sys.string _esys_503 sys.string}\n"
"type sys._esys_039 (sys._esys_040 sys._osys_504 sys._isys_506)\n"
"var !sys.catstring sys._esys_039\n"
"type sys._esys_041 {}\n"
"type sys._esys_042 {}\n"
"type sys._osys_514 {_esys_511 sys.int32}\n"
"type sys._isys_516 {_esys_512 sys.string _esys_513 sys.string}\n"
"type sys._esys_041 (sys._esys_042 sys._osys_514 sys._isys_516)\n"
"var !sys.cmpstring sys._esys_041\n"
"type sys._esys_039 (sys._esys_040 sys._esys_041 sys._esys_042)\n"
"var !sys.printnl sys._esys_039\n"
"type sys._esys_044 {}\n"
"type sys._osys_525 {_esys_521 sys.string}\n"
"type sys._isys_527 {_esys_522 sys.string _esys_523 sys.int32 _esys_524 sys.int32}\n"
"type sys._esys_043 (sys._esys_044 sys._osys_525 sys._isys_527)\n"
"var !sys.slicestring sys._esys_043\n"
"type sys._esys_045 {}\n"
"type sys._esys_046 {}\n"
"type sys.uint8 2\n"
"type sys._osys_536 {_esys_533 sys.uint8}\n"
"type sys._isys_538 {_esys_534 sys.string _esys_535 sys.int32}\n"
"type sys._esys_045 (sys._esys_046 sys._osys_536 sys._isys_538)\n"
"var !sys.indexstring sys._esys_045\n"
"type sys._esys_043 (sys._esys_044 sys._esys_045 sys._esys_046)\n"
"var !sys.printsp sys._esys_043\n"
"type sys._esys_048 {}\n"
"type sys._osys_545 {_esys_543 sys.string}\n"
"type sys._isys_547 {_esys_544 sys.int64}\n"
"type sys._esys_047 (sys._esys_048 sys._osys_545 sys._isys_547)\n"
"var !sys.intstring sys._esys_047\n"
"type sys._osys_510 {_esys_507 sys.string}\n"
"type sys._isys_512 {_esys_508 sys.string _esys_509 sys.string}\n"
"type sys._esys_047 (sys._esys_048 sys._osys_510 sys._isys_512)\n"
"var !sys.catstring sys._esys_047\n"
"type sys._esys_050 {}\n"
"type sys._osys_554 {_esys_551 sys.string}\n"
"type sys._esys_051 *sys.uint8\n"
"type sys._isys_556 {_esys_552 sys._esys_051 _esys_553 sys.int32}\n"
"type sys._esys_049 (sys._esys_050 sys._osys_554 sys._isys_556)\n"
"var !sys.byteastring sys._esys_049\n"
"type sys._esys_053 {}\n"
"type sys._osys_563 {_esys_561 sys.string}\n"
"type sys._esys_055 [] sys.uint8\n"
"type sys._esys_054 *sys._esys_055\n"
"type sys._isys_565 {_esys_562 sys._esys_054}\n"
"type sys._esys_052 (sys._esys_053 sys._osys_563 sys._isys_565)\n"
"var !sys.arraystring sys._esys_052\n"
"type sys._esys_057 {}\n"
"type sys._osys_569 {ret sys.any}\n"
"type sys._esys_058 *sys.uint8\n"
"type sys._osys_520 {_esys_517 sys.int32}\n"
"type sys._isys_522 {_esys_518 sys.string _esys_519 sys.string}\n"
"type sys._esys_049 (sys._esys_050 sys._osys_520 sys._isys_522)\n"
"var !sys.cmpstring sys._esys_049\n"
"type sys._esys_052 {}\n"
"type sys._osys_531 {_esys_527 sys.string}\n"
"type sys._isys_533 {_esys_528 sys.string _esys_529 sys.int32 _esys_530 sys.int32}\n"
"type sys._esys_051 (sys._esys_052 sys._osys_531 sys._isys_533)\n"
"var !sys.slicestring sys._esys_051\n"
"type sys._esys_054 {}\n"
"type sys.uint8 2\n"
"type sys._osys_542 {_esys_539 sys.uint8}\n"
"type sys._isys_544 {_esys_540 sys.string _esys_541 sys.int32}\n"
"type sys._esys_053 (sys._esys_054 sys._osys_542 sys._isys_544)\n"
"var !sys.indexstring sys._esys_053\n"
"type sys._esys_056 {}\n"
"type sys._osys_551 {_esys_549 sys.string}\n"
"type sys._isys_553 {_esys_550 sys.int64}\n"
"type sys._esys_055 (sys._esys_056 sys._osys_551 sys._isys_553)\n"
"var !sys.intstring sys._esys_055\n"
"type sys._esys_058 {}\n"
"type sys._osys_560 {_esys_557 sys.string}\n"
"type sys._esys_059 *sys.uint8\n"
"type sys._isys_571 {sigi sys._esys_058 sigt sys._esys_059 elem sys.any}\n"
"type sys._esys_056 (sys._esys_057 sys._osys_569 sys._isys_571)\n"
"var !sys.ifaceT2I sys._esys_056\n"
"type sys._isys_562 {_esys_558 sys._esys_059 _esys_559 sys.int32}\n"
"type sys._esys_057 (sys._esys_058 sys._osys_560 sys._isys_562)\n"
"var !sys.byteastring sys._esys_057\n"
"type sys._esys_061 {}\n"
"type sys._osys_578 {ret sys.any}\n"
"type sys._esys_062 *sys.uint8\n"
"type sys._isys_580 {sigt sys._esys_062 iface sys.any}\n"
"type sys._esys_060 (sys._esys_061 sys._osys_578 sys._isys_580)\n"
"var !sys.ifaceI2T sys._esys_060\n"
"type sys._esys_064 {}\n"
"type sys._osys_586 {ret sys.any}\n"
"type sys._esys_065 *sys.uint8\n"
"type sys._isys_588 {sigi sys._esys_065 iface sys.any}\n"
"type sys._esys_063 (sys._esys_064 sys._osys_586 sys._isys_588)\n"
"var !sys.ifaceI2I sys._esys_063\n"
"type sys._esys_067 {}\n"
"type sys._osys_595 {_esys_594 sys.int32}\n"
"type sys._esys_068 {}\n"
"type sys._esys_066 (sys._esys_067 sys._osys_595 sys._esys_068)\n"
"var !sys.argc sys._esys_066\n"
"type sys._esys_070 {}\n"
"type sys._osys_599 {_esys_598 sys.int32}\n"
"type sys._esys_071 {}\n"
"type sys._esys_069 (sys._esys_070 sys._osys_599 sys._esys_071)\n"
"var !sys.envc sys._esys_069\n"
"type sys._esys_073 {}\n"
"type sys._osys_604 {_esys_602 sys.string}\n"
"type sys._isys_606 {_esys_603 sys.int32}\n"
"type sys._esys_072 (sys._esys_073 sys._osys_604 sys._isys_606)\n"
"var !sys.argv sys._esys_072\n"
"type sys._osys_569 {_esys_567 sys.string}\n"
"type sys._esys_062 *sys._esys_063\n"
"type sys._isys_571 {_esys_568 sys._esys_062}\n"
"type sys._esys_060 (sys._esys_061 sys._osys_569 sys._isys_571)\n"
"var !sys.arraystring sys._esys_060\n"
"type sys._esys_065 {}\n"
"type sys._osys_575 {ret sys.any}\n"
"type sys._esys_066 *sys.uint8\n"
"type sys._esys_067 *sys.uint8\n"
"type sys._isys_577 {sigi sys._esys_066 sigt sys._esys_067 elem sys.any}\n"
"type sys._esys_064 (sys._esys_065 sys._osys_575 sys._isys_577)\n"
"var !sys.ifaceT2I sys._esys_064\n"
"type sys._esys_069 {}\n"
"type sys._osys_584 {ret sys.any}\n"
"type sys._esys_070 *sys.uint8\n"
"type sys._isys_586 {sigt sys._esys_070 iface sys.any}\n"
"type sys._esys_068 (sys._esys_069 sys._osys_584 sys._isys_586)\n"
"var !sys.ifaceI2T sys._esys_068\n"
"type sys._esys_072 {}\n"
"type sys._osys_592 {ret sys.any}\n"
"type sys._esys_073 *sys.uint8\n"
"type sys._isys_594 {sigi sys._esys_073 iface sys.any}\n"
"type sys._esys_071 (sys._esys_072 sys._osys_592 sys._isys_594)\n"
"var !sys.ifaceI2I sys._esys_071\n"
"type sys._esys_075 {}\n"
"type sys._osys_612 {_esys_610 sys.string}\n"
"type sys._isys_614 {_esys_611 sys.int32}\n"
"type sys._esys_074 (sys._esys_075 sys._osys_612 sys._isys_614)\n"
"var !sys.envv sys._esys_074\n"
"type sys._esys_077 {}\n"
"type sys._osys_621 {_esys_618 sys.float64 _esys_619 sys.int32}\n"
"type sys._isys_623 {_esys_620 sys.float64}\n"
"type sys._esys_076 (sys._esys_077 sys._osys_621 sys._isys_623)\n"
"var !sys.frexp sys._esys_076\n"
"type sys._osys_601 {_esys_600 sys.int32}\n"
"type sys._esys_076 {}\n"
"type sys._esys_074 (sys._esys_075 sys._osys_601 sys._esys_076)\n"
"var !sys.argc sys._esys_074\n"
"type sys._esys_078 {}\n"
"type sys._osys_605 {_esys_604 sys.int32}\n"
"type sys._esys_079 {}\n"
"type sys._osys_630 {_esys_627 sys.float64}\n"
"type sys._isys_632 {_esys_628 sys.float64 _esys_629 sys.int32}\n"
"type sys._esys_078 (sys._esys_079 sys._osys_630 sys._isys_632)\n"
"var !sys.ldexp sys._esys_078\n"
"type sys._esys_077 (sys._esys_078 sys._osys_605 sys._esys_079)\n"
"var !sys.envc sys._esys_077\n"
"type sys._esys_081 {}\n"
"type sys._osys_640 {_esys_637 sys.float64 _esys_638 sys.float64}\n"
"type sys._isys_642 {_esys_639 sys.float64}\n"
"type sys._esys_080 (sys._esys_081 sys._osys_640 sys._isys_642)\n"
"var !sys.modf sys._esys_080\n"
"type sys._osys_610 {_esys_608 sys.string}\n"
"type sys._isys_612 {_esys_609 sys.int32}\n"
"type sys._esys_080 (sys._esys_081 sys._osys_610 sys._isys_612)\n"
"var !sys.argv sys._esys_080\n"
"type sys._esys_083 {}\n"
"type sys._osys_649 {_esys_646 sys.bool}\n"
"type sys._isys_651 {_esys_647 sys.float64 _esys_648 sys.int32}\n"
"type sys._esys_082 (sys._esys_083 sys._osys_649 sys._isys_651)\n"
"var !sys.isInf sys._esys_082\n"
"type sys._osys_618 {_esys_616 sys.string}\n"
"type sys._isys_620 {_esys_617 sys.int32}\n"
"type sys._esys_082 (sys._esys_083 sys._osys_618 sys._isys_620)\n"
"var !sys.envv sys._esys_082\n"
"type sys._esys_085 {}\n"
"type sys._osys_658 {_esys_656 sys.bool}\n"
"type sys._isys_660 {_esys_657 sys.float64}\n"
"type sys._esys_084 (sys._esys_085 sys._osys_658 sys._isys_660)\n"
"var !sys.isNaN sys._esys_084\n"
"type sys._osys_627 {_esys_624 sys.float64 _esys_625 sys.int32}\n"
"type sys._isys_629 {_esys_626 sys.float64}\n"
"type sys._esys_084 (sys._esys_085 sys._osys_627 sys._isys_629)\n"
"var !sys.frexp sys._esys_084\n"
"type sys._esys_087 {}\n"
"type sys._osys_666 {_esys_664 sys.float64}\n"
"type sys._isys_668 {_esys_665 sys.int32}\n"
"type sys._esys_086 (sys._esys_087 sys._osys_666 sys._isys_668)\n"
"var !sys.Inf sys._esys_086\n"
"type sys._osys_636 {_esys_633 sys.float64}\n"
"type sys._isys_638 {_esys_634 sys.float64 _esys_635 sys.int32}\n"
"type sys._esys_086 (sys._esys_087 sys._osys_636 sys._isys_638)\n"
"var !sys.ldexp sys._esys_086\n"
"type sys._esys_089 {}\n"
"type sys._osys_673 {_esys_672 sys.float64}\n"
"type sys._esys_090 {}\n"
"type sys._esys_088 (sys._esys_089 sys._osys_673 sys._esys_090)\n"
"var !sys.NaN sys._esys_088\n"
"type sys._esys_092 {}\n"
"type sys._esys_094 [sys.any] sys.any\n"
"type sys._esys_093 *sys._esys_094\n"
"type sys._osys_676 {hmap sys._esys_093}\n"
"type sys._isys_678 {keysize sys.uint32 valsize sys.uint32 keyalg sys.uint32 valalg sys.uint32 hint sys.uint32}\n"
"type sys._esys_091 (sys._esys_092 sys._osys_676 sys._isys_678)\n"
"var !sys.newmap sys._esys_091\n"
"type sys._esys_096 {}\n"
"type sys._osys_687 {val sys.any}\n"
"type sys._esys_098 [sys.any] sys.any\n"
"type sys._esys_097 *sys._esys_098\n"
"type sys._isys_689 {hmap sys._esys_097 key sys.any}\n"
"type sys._esys_095 (sys._esys_096 sys._osys_687 sys._isys_689)\n"
"var !sys.mapaccess1 sys._esys_095\n"
"type sys._osys_646 {_esys_643 sys.float64 _esys_644 sys.float64}\n"
"type sys._isys_648 {_esys_645 sys.float64}\n"
"type sys._esys_088 (sys._esys_089 sys._osys_646 sys._isys_648)\n"
"var !sys.modf sys._esys_088\n"
"type sys._esys_091 {}\n"
"type sys._osys_655 {_esys_652 sys.bool}\n"
"type sys._isys_657 {_esys_653 sys.float64 _esys_654 sys.int32}\n"
"type sys._esys_090 (sys._esys_091 sys._osys_655 sys._isys_657)\n"
"var !sys.isInf sys._esys_090\n"
"type sys._esys_093 {}\n"
"type sys._osys_664 {_esys_662 sys.bool}\n"
"type sys._isys_666 {_esys_663 sys.float64}\n"
"type sys._esys_092 (sys._esys_093 sys._osys_664 sys._isys_666)\n"
"var !sys.isNaN sys._esys_092\n"
"type sys._esys_095 {}\n"
"type sys._osys_672 {_esys_670 sys.float64}\n"
"type sys._isys_674 {_esys_671 sys.int32}\n"
"type sys._esys_094 (sys._esys_095 sys._osys_672 sys._isys_674)\n"
"var !sys.Inf sys._esys_094\n"
"type sys._esys_097 {}\n"
"type sys._osys_679 {_esys_678 sys.float64}\n"
"type sys._esys_098 {}\n"
"type sys._esys_096 (sys._esys_097 sys._osys_679 sys._esys_098)\n"
"var !sys.NaN sys._esys_096\n"
"type sys._esys_100 {}\n"
"type sys._osys_695 {val sys.any pres sys.bool}\n"
"type sys._esys_102 [sys.any] sys.any\n"
"type sys._esys_101 *sys._esys_102\n"
"type sys._isys_697 {hmap sys._esys_101 key sys.any}\n"
"type sys._esys_099 (sys._esys_100 sys._osys_695 sys._isys_697)\n"
"var !sys.mapaccess2 sys._esys_099\n"
"type sys._osys_682 {hmap sys._esys_101}\n"
"type sys._isys_684 {keysize sys.uint32 valsize sys.uint32 keyalg sys.uint32 valalg sys.uint32 hint sys.uint32}\n"
"type sys._esys_099 (sys._esys_100 sys._osys_682 sys._isys_684)\n"
"var !sys.newmap sys._esys_099\n"
"type sys._esys_104 {}\n"
"type sys._esys_105 {}\n"
"type sys._esys_107 [sys.any] sys.any\n"
"type sys._esys_106 *sys._esys_107\n"
"type sys._isys_704 {hmap sys._esys_106 key sys.any val sys.any}\n"
"type sys._esys_103 (sys._esys_104 sys._esys_105 sys._isys_704)\n"
"var !sys.mapassign1 sys._esys_103\n"
"type sys._esys_109 {}\n"
"type sys._esys_110 {}\n"
"type sys._esys_112 [sys.any] sys.any\n"
"type sys._esys_111 *sys._esys_112\n"
"type sys._isys_710 {hmap sys._esys_111 key sys.any val sys.any pres sys.bool}\n"
"type sys._esys_108 (sys._esys_109 sys._esys_110 sys._isys_710)\n"
"var !sys.mapassign2 sys._esys_108\n"
"type sys._esys_114 {}\n"
"type sys._esys_116 1 sys.any\n"
"type sys._esys_115 *sys._esys_116\n"
"type sys._osys_717 {hchan sys._esys_115}\n"
"type sys._isys_719 {elemsize sys.uint32 elemalg sys.uint32 hint sys.uint32}\n"
"type sys._esys_113 (sys._esys_114 sys._osys_717 sys._isys_719)\n"
"var !sys.newchan sys._esys_113\n"
"type sys._osys_693 {val sys.any}\n"
"type sys._esys_105 *sys._esys_106\n"
"type sys._isys_695 {hmap sys._esys_105 key sys.any}\n"
"type sys._esys_103 (sys._esys_104 sys._osys_693 sys._isys_695)\n"
"var !sys.mapaccess1 sys._esys_103\n"
"type sys._esys_108 {}\n"
"type sys._osys_701 {val sys.any pres sys.bool}\n"
"type sys._esys_109 *sys._esys_110\n"
"type sys._isys_703 {hmap sys._esys_109 key sys.any}\n"
"type sys._esys_107 (sys._esys_108 sys._osys_701 sys._isys_703)\n"
"var !sys.mapaccess2 sys._esys_107\n"
"type sys._esys_112 {}\n"
"type sys._esys_113 {}\n"
"type sys._esys_114 *sys._esys_115\n"
"type sys._isys_710 {hmap sys._esys_114 key sys.any val sys.any}\n"
"type sys._esys_111 (sys._esys_112 sys._esys_113 sys._isys_710)\n"
"var !sys.mapassign1 sys._esys_111\n"
"type sys._esys_117 {}\n"
"type sys._esys_118 {}\n"
"type sys._osys_726 {elem sys.any}\n"
"type sys._esys_120 1 sys.any\n"
"type sys._esys_119 *sys._esys_120\n"
"type sys._isys_728 {hchan sys._esys_119}\n"
"type sys._esys_117 (sys._esys_118 sys._osys_726 sys._isys_728)\n"
"var !sys.chanrecv1 sys._esys_117\n"
"type sys._isys_716 {hmap sys._esys_119 key sys.any val sys.any pres sys.bool}\n"
"type sys._esys_116 (sys._esys_117 sys._esys_118 sys._isys_716)\n"
"var !sys.mapassign2 sys._esys_116\n"
"type sys._esys_122 {}\n"
"type sys._osys_733 {elem sys.any pres sys.bool}\n"
"type sys._esys_124 1 sys.any\n"
"type sys._esys_123 *sys._esys_124\n"
"type sys._isys_735 {hchan sys._esys_123}\n"
"type sys._esys_121 (sys._esys_122 sys._osys_733 sys._isys_735)\n"
"var !sys.chanrecv2 sys._esys_121\n"
"type sys._osys_723 {hchan sys._esys_123}\n"
"type sys._isys_725 {elemsize sys.uint32 elemalg sys.uint32 hint sys.uint32}\n"
"type sys._esys_121 (sys._esys_122 sys._osys_723 sys._isys_725)\n"
"var !sys.newchan sys._esys_121\n"
"type sys._esys_126 {}\n"
"type sys._osys_741 {pres sys.bool}\n"
"type sys._esys_128 1 sys.any\n"
"type sys._osys_732 {elem sys.any}\n"
"type sys._esys_127 *sys._esys_128\n"
"type sys._esys_129 *sys.any\n"
"type sys._isys_743 {hchan sys._esys_127 elem sys._esys_129}\n"
"type sys._esys_125 (sys._esys_126 sys._osys_741 sys._isys_743)\n"
"var !sys.chanrecv3 sys._esys_125\n"
"type sys._esys_131 {}\n"
"type sys._esys_132 {}\n"
"type sys._esys_134 1 sys.any\n"
"type sys._esys_133 *sys._esys_134\n"
"type sys._isys_749 {hchan sys._esys_133 elem sys.any}\n"
"type sys._esys_130 (sys._esys_131 sys._esys_132 sys._isys_749)\n"
"var !sys.chansend1 sys._esys_130\n"
"type sys._esys_136 {}\n"
"type sys._osys_754 {pres sys.bool}\n"
"type sys._esys_138 1 sys.any\n"
"type sys._esys_137 *sys._esys_138\n"
"type sys._isys_756 {hchan sys._esys_137 elem sys.any}\n"
"type sys._esys_135 (sys._esys_136 sys._osys_754 sys._isys_756)\n"
"var !sys.chansend2 sys._esys_135\n"
"type sys._isys_734 {hchan sys._esys_127}\n"
"type sys._esys_125 (sys._esys_126 sys._osys_732 sys._isys_734)\n"
"var !sys.chanrecv1 sys._esys_125\n"
"type sys._esys_130 {}\n"
"type sys._osys_739 {elem sys.any pres sys.bool}\n"
"type sys._esys_131 *sys._esys_132\n"
"type sys._isys_741 {hchan sys._esys_131}\n"
"type sys._esys_129 (sys._esys_130 sys._osys_739 sys._isys_741)\n"
"var !sys.chanrecv2 sys._esys_129\n"
"type sys._esys_134 {}\n"
"type sys._osys_747 {pres sys.bool}\n"
"type sys._esys_135 *sys._esys_136\n"
"type sys._esys_137 *sys.any\n"
"type sys._isys_749 {hchan sys._esys_135 elem sys._esys_137}\n"
"type sys._esys_133 (sys._esys_134 sys._osys_747 sys._isys_749)\n"
"var !sys.chanrecv3 sys._esys_133\n"
"type sys._esys_139 {}\n"
"type sys._esys_140 {}\n"
"type sys._esys_141 *sys.uint8\n"
"type sys._osys_762 {sel sys._esys_141}\n"
"type sys._isys_764 {size sys.uint32}\n"
"type sys._esys_139 (sys._esys_140 sys._osys_762 sys._isys_764)\n"
"var !sys.newselect sys._esys_139\n"
"type sys._esys_143 {}\n"
"type sys._osys_769 {selected sys.bool}\n"
"type sys._esys_144 *sys.uint8\n"
"type sys._esys_146 1 sys.any\n"
"type sys._esys_141 *sys._esys_142\n"
"type sys._isys_755 {hchan sys._esys_141 elem sys.any}\n"
"type sys._esys_138 (sys._esys_139 sys._esys_140 sys._isys_755)\n"
"var !sys.chansend1 sys._esys_138\n"
"type sys._esys_144 {}\n"
"type sys._osys_760 {pres sys.bool}\n"
"type sys._esys_145 *sys._esys_146\n"
"type sys._isys_771 {sel sys._esys_144 hchan sys._esys_145 elem sys.any}\n"
"type sys._esys_142 (sys._esys_143 sys._osys_769 sys._isys_771)\n"
"var !sys.selectsend sys._esys_142\n"
"type sys._isys_762 {hchan sys._esys_145 elem sys.any}\n"
"type sys._esys_143 (sys._esys_144 sys._osys_760 sys._isys_762)\n"
"var !sys.chansend2 sys._esys_143\n"
"type sys._esys_148 {}\n"
"type sys._osys_778 {selected sys.bool}\n"
"type sys._esys_149 *sys.uint8\n"
"type sys._esys_151 1 sys.any\n"
"type sys._esys_150 *sys._esys_151\n"
"type sys._esys_152 *sys.any\n"
"type sys._isys_780 {sel sys._esys_149 hchan sys._esys_150 elem sys._esys_152}\n"
"type sys._esys_147 (sys._esys_148 sys._osys_778 sys._isys_780)\n"
"var !sys.selectrecv sys._esys_147\n"
"type sys._esys_154 {}\n"
"type sys._esys_155 {}\n"
"type sys._esys_156 *sys.uint8\n"
"type sys._isys_787 {sel sys._esys_156}\n"
"type sys._esys_153 (sys._esys_154 sys._esys_155 sys._isys_787)\n"
"var !sys.selectgo sys._esys_153\n"
"type sys._esys_158 {}\n"
"type sys._esys_160 [] sys.any\n"
"type sys._esys_159 *sys._esys_160\n"
"type sys._osys_791 {ary sys._esys_159}\n"
"type sys._isys_793 {nel sys.uint32 cap sys.uint32 width sys.uint32}\n"
"type sys._esys_157 (sys._esys_158 sys._osys_791 sys._isys_793)\n"
"var !sys.newarray sys._esys_157\n"
"type sys._osys_768 {sel sys._esys_149}\n"
"type sys._isys_770 {size sys.uint32}\n"
"type sys._esys_147 (sys._esys_148 sys._osys_768 sys._isys_770)\n"
"var !sys.newselect sys._esys_147\n"
"type sys._esys_151 {}\n"
"type sys._osys_775 {selected sys.bool}\n"
"type sys._esys_152 *sys.uint8\n"
"type sys._esys_153 *sys._esys_154\n"
"type sys._isys_777 {sel sys._esys_152 hchan sys._esys_153 elem sys.any}\n"
"type sys._esys_150 (sys._esys_151 sys._osys_775 sys._isys_777)\n"
"var !sys.selectsend sys._esys_150\n"
"type sys._esys_156 {}\n"
"type sys._osys_784 {selected sys.bool}\n"
"type sys._esys_157 *sys.uint8\n"
"type sys._esys_158 *sys._esys_159\n"
"type sys._esys_160 *sys.any\n"
"type sys._isys_786 {sel sys._esys_157 hchan sys._esys_158 elem sys._esys_160}\n"
"type sys._esys_155 (sys._esys_156 sys._osys_784 sys._isys_786)\n"
"var !sys.selectrecv sys._esys_155\n"
"type sys._esys_162 {}\n"
"type sys._esys_164 [] sys.any\n"
"type sys._esys_163 *sys._esys_164\n"
"type sys._osys_800 {ary sys._esys_163}\n"
"type sys._esys_166 [] sys.any\n"
"type sys._esys_165 *sys._esys_166\n"
"type sys._isys_802 {old sys._esys_165 lb sys.uint32 hb sys.uint32 width sys.uint32}\n"
"type sys._esys_161 (sys._esys_162 sys._osys_800 sys._isys_802)\n"
"var !sys.arraysliced sys._esys_161\n"
"type sys._esys_168 {}\n"
"type sys._esys_170 [] sys.any\n"
"type sys._esys_169 *sys._esys_170\n"
"type sys._osys_810 {ary sys._esys_169}\n"
"type sys._esys_171 *sys.any\n"
"type sys._isys_812 {old sys._esys_171 nel sys.uint32 lb sys.uint32 hb sys.uint32 width sys.uint32}\n"
"type sys._esys_167 (sys._esys_168 sys._osys_810 sys._isys_812)\n"
"var !sys.arrayslices sys._esys_167\n"
"type sys._esys_173 {}\n"
"type sys._esys_175 [] sys.any\n"
"type sys._esys_174 *sys._esys_175\n"
"type sys._osys_821 {ary sys._esys_174}\n"
"type sys._esys_176 *sys.any\n"
"type sys._isys_823 {old sys._esys_176 nel sys.uint32}\n"
"type sys._esys_172 (sys._esys_173 sys._osys_821 sys._isys_823)\n"
"var !sys.arrays2d sys._esys_172\n"
"type sys._esys_178 {}\n"
"type sys._esys_179 {}\n"
"type sys._esys_180 {}\n"
"type sys._esys_177 (sys._esys_178 sys._esys_179 sys._esys_180)\n"
"var !sys.gosched sys._esys_177\n"
"type sys._esys_182 {}\n"
"type sys._esys_183 {}\n"
"type sys._esys_184 {}\n"
"type sys._esys_181 (sys._esys_182 sys._esys_183 sys._esys_184)\n"
"var !sys.goexit sys._esys_181\n"
"type sys._esys_163 {}\n"
"type sys._esys_164 *sys.uint8\n"
"type sys._isys_793 {sel sys._esys_164}\n"
"type sys._esys_161 (sys._esys_162 sys._esys_163 sys._isys_793)\n"
"var !sys.selectgo sys._esys_161\n"
"type sys._esys_166 {}\n"
"type sys._esys_167 *sys._esys_168\n"
"type sys._osys_797 {ary sys._esys_167}\n"
"type sys._isys_799 {nel sys.uint32 cap sys.uint32 width sys.uint32}\n"
"type sys._esys_165 (sys._esys_166 sys._osys_797 sys._isys_799)\n"
"var !sys.newarray sys._esys_165\n"
"type sys._esys_170 {}\n"
"type sys._esys_171 *sys._esys_172\n"
"type sys._osys_806 {ary sys._esys_171}\n"
"type sys._esys_173 *sys._esys_174\n"
"type sys._isys_808 {old sys._esys_173 lb sys.uint32 hb sys.uint32 width sys.uint32}\n"
"type sys._esys_169 (sys._esys_170 sys._osys_806 sys._isys_808)\n"
"var !sys.arraysliced sys._esys_169\n"
"type sys._esys_176 {}\n"
"type sys._esys_177 *sys._esys_178\n"
"type sys._osys_816 {ary sys._esys_177}\n"
"type sys._esys_179 *sys.any\n"
"type sys._isys_818 {old sys._esys_179 nel sys.uint32 lb sys.uint32 hb sys.uint32 width sys.uint32}\n"
"type sys._esys_175 (sys._esys_176 sys._osys_816 sys._isys_818)\n"
"var !sys.arrayslices sys._esys_175\n"
"type sys._esys_181 {}\n"
"type sys._esys_182 *sys._esys_183\n"
"type sys._osys_827 {ary sys._esys_182}\n"
"type sys._esys_184 *sys.any\n"
"type sys._isys_829 {old sys._esys_184 nel sys.uint32}\n"
"type sys._esys_180 (sys._esys_181 sys._osys_827 sys._isys_829)\n"
"var !sys.arrays2d sys._esys_180\n"
"type sys._esys_186 {}\n"
"type sys._osys_834 {_esys_831 sys.string _esys_832 sys.bool}\n"
"type sys._isys_836 {_esys_833 sys.string}\n"
"type sys._esys_185 (sys._esys_186 sys._osys_834 sys._isys_836)\n"
"var !sys.readfile sys._esys_185\n"
"type sys._esys_187 {}\n"
"type sys._esys_188 {}\n"
"type sys._osys_843 {_esys_840 sys.bool}\n"
"type sys._isys_845 {_esys_841 sys.string _esys_842 sys.string}\n"
"type sys._esys_187 (sys._esys_188 sys._osys_843 sys._isys_845)\n"
"var !sys.writefile sys._esys_187\n"
"type sys._esys_185 (sys._esys_186 sys._esys_187 sys._esys_188)\n"
"var !sys.gosched sys._esys_185\n"
"type sys._esys_190 {}\n"
"type sys._osys_855 {_esys_850 sys.int32 _esys_851 sys.int32}\n"
"type sys._esys_191 *sys.uint8\n"
"type sys._isys_857 {_esys_852 sys._esys_191 _esys_853 sys.int32 _esys_854 sys.int32}\n"
"type sys._esys_189 (sys._esys_190 sys._osys_855 sys._isys_857)\n"
"var !sys.bytestorune sys._esys_189\n"
"type sys._esys_193 {}\n"
"type sys._osys_868 {_esys_863 sys.int32 _esys_864 sys.int32}\n"
"type sys._isys_870 {_esys_865 sys.string _esys_866 sys.int32 _esys_867 sys.int32}\n"
"type sys._esys_192 (sys._esys_193 sys._osys_868 sys._isys_870)\n"
"var !sys.stringtorune sys._esys_192\n"
"type sys._esys_195 {}\n"
"type sys._esys_191 {}\n"
"type sys._esys_192 {}\n"
"type sys._esys_189 (sys._esys_190 sys._esys_191 sys._esys_192)\n"
"var !sys.goexit sys._esys_189\n"
"type sys._esys_194 {}\n"
"type sys._osys_840 {_esys_837 sys.string _esys_838 sys.bool}\n"
"type sys._isys_842 {_esys_839 sys.string}\n"
"type sys._esys_193 (sys._esys_194 sys._osys_840 sys._isys_842)\n"
"var !sys.readfile sys._esys_193\n"
"type sys._esys_196 {}\n"
"type sys._isys_877 {_esys_876 sys.int32}\n"
"type sys._esys_194 (sys._esys_195 sys._esys_196 sys._isys_877)\n"
"var !sys.exit sys._esys_194\n"
"type sys._osys_849 {_esys_846 sys.bool}\n"
"type sys._isys_851 {_esys_847 sys.string _esys_848 sys.string}\n"
"type sys._esys_195 (sys._esys_196 sys._osys_849 sys._isys_851)\n"
"var !sys.writefile sys._esys_195\n"
"type sys._esys_198 {}\n"
"type sys._esys_199 {}\n"
"type sys._esys_200 {}\n"
"type sys._esys_197 (sys._esys_198 sys._esys_199 sys._esys_200)\n"
"type sys._osys_861 {_esys_856 sys.int32 _esys_857 sys.int32}\n"
"type sys._esys_199 *sys.uint8\n"
"type sys._isys_863 {_esys_858 sys._esys_199 _esys_859 sys.int32 _esys_860 sys.int32}\n"
"type sys._esys_197 (sys._esys_198 sys._osys_861 sys._isys_863)\n"
"var !sys.bytestorune sys._esys_197\n"
"type sys._esys_201 {}\n"
"type sys._osys_874 {_esys_869 sys.int32 _esys_870 sys.int32}\n"
"type sys._isys_876 {_esys_871 sys.string _esys_872 sys.int32 _esys_873 sys.int32}\n"
"type sys._esys_200 (sys._esys_201 sys._osys_874 sys._isys_876)\n"
"var !sys.stringtorune sys._esys_200\n"
"type sys._esys_203 {}\n"
"type sys._esys_204 {}\n"
"type sys._isys_883 {_esys_882 sys.int32}\n"
"type sys._esys_202 (sys._esys_203 sys._esys_204 sys._isys_883)\n"
"var !sys.exit sys._esys_202\n"
"type sys._esys_206 {}\n"
"type sys._esys_207 {}\n"
"type sys._esys_208 {}\n"
"type sys._esys_205 (sys._esys_206 sys._esys_207 sys._esys_208)\n"
"type sys._esys_031 25\n"
"type sys._esys_063 [] sys.uint8\n"
"type sys._esys_102 [sys.any] sys.any\n"
"type sys._esys_106 [sys.any] sys.any\n"
"type sys._esys_110 [sys.any] sys.any\n"
"type sys._esys_115 [sys.any] sys.any\n"
"type sys._esys_120 [sys.any] sys.any\n"
"type sys._esys_124 1 sys.any\n"
"type sys._esys_128 1 sys.any\n"
"type sys._esys_132 1 sys.any\n"
"type sys._esys_136 1 sys.any\n"
"type sys._esys_142 1 sys.any\n"
"type sys._esys_146 1 sys.any\n"
"type sys._esys_154 1 sys.any\n"
"type sys._esys_159 1 sys.any\n"
"type sys._esys_168 [] sys.any\n"
"type sys._esys_172 [] sys.any\n"
"type sys._esys_174 [] sys.any\n"
"type sys._esys_178 [] sys.any\n"
"type sys._esys_183 [] sys.any\n"
"))\n"
;
......@@ -124,7 +124,9 @@ loop:
case OSEND:
case ORECV:
case OPRINT:
case OPRINTN:
case OPANIC:
case OPANICN:
case OFOR:
case OIF:
case OSWITCH:
......@@ -203,14 +205,28 @@ loop:
if(top != Etop)
goto nottop;
walktype(n->left, Erv);
indir(n, prcompat(n->left));
indir(n, prcompat(n->left, 0));
goto ret;
case OPRINTN:
if(top != Etop)
goto nottop;
walktype(n->left, Erv);
indir(n, prcompat(n->left, 1));
goto ret;
case OPANIC:
if(top != Etop)
goto nottop;
walktype(n->left, Erv);
indir(n, list(prcompat(n->left), nodpanic(n->lineno)));
indir(n, list(prcompat(n->left, 0), nodpanic(n->lineno)));
goto ret;
case OPANICN:
if(top != Etop)
goto nottop;
walktype(n->left, Erv);
indir(n, list(prcompat(n->left, 1), nodpanic(n->lineno)));
goto ret;
case OLITERAL:
......@@ -1598,23 +1614,33 @@ ascompat(Type *t1, Type *t2)
}
Node*
prcompat(Node *n)
prcompat(Node *n, int fmt)
{
Node *l, *r;
Node *on;
Type *t;
Iter save;
int w;
int w, notfirst;
r = N;
l = listfirst(&save, &n);
notfirst = 0;
loop:
if(l == N) {
if(fmt) {
on = syslook("printnl", 0);
r = list(r, nod(OCALL, on, N));
}
walktype(r, Etop);
return r;
}
if(notfirst) {
on = syslook("printsp", 0);
r = list(r, nod(OCALL, on, N));
}
w = whatis(l);
switch(w) {
default:
......@@ -1663,12 +1689,10 @@ loop:
l->type = t;
}
if(r == N)
r = nod(OCALL, on, l);
else
r = list(r, nod(OCALL, on, l));
out:
notfirst = fmt;
l = listnext(&save);
goto loop;
}
......
......@@ -166,3 +166,15 @@ sys·printstring(string v)
if(v != nil)
sys·write(1, v->str, v->len);
}
void
sys·printsp(void)
{
sys·write(1, " ", 1);
}
void
sys·printnl(void)
{
sys·write(1, "\n", 1);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment