|
1 | 1 | package parse |
2 | 2 |
|
3 | | -import "testing" |
| 3 | +import ( |
| 4 | + "testing" |
| 5 | +) |
4 | 6 |
|
5 | 7 | type lexTest struct { |
6 | 8 | name string |
@@ -540,6 +542,78 @@ var lexTests = []lexTest{ |
540 | 542 | tEOF, |
541 | 543 | }}, |
542 | 544 |
|
| 545 | + {"@param", ` |
| 546 | +{@param NAME: ?} // A required param. |
| 547 | +{@param NAME: any} // A required param of type any. |
| 548 | +{@param NAME:= 'default'} // A default param with an inferred type. |
| 549 | +{@param NAME: int = 10} // A default param with an explicit type. |
| 550 | +{@param? NAME: [age: int, name: string]} // An optional param. |
| 551 | +{@param? NAME: map<int, string>} // A map param. |
| 552 | +{@param? NAME: list<string>} // A list param. |
| 553 | +`, []item{ |
| 554 | + tLeft, |
| 555 | + {itemHeaderParam, 0, "@param"}, |
| 556 | + {itemIdent, 0, "NAME"}, |
| 557 | + {itemColon, 0, ":"}, |
| 558 | + {itemHeaderParamType, 0, "?"}, |
| 559 | + tRight, |
| 560 | + {itemComment, 0, "// A required param.\n"}, |
| 561 | + |
| 562 | + tLeft, |
| 563 | + {itemHeaderParam, 0, "@param"}, |
| 564 | + {itemIdent, 0, "NAME"}, |
| 565 | + {itemColon, 0, ":"}, |
| 566 | + {itemHeaderParamType, 0, "any"}, |
| 567 | + tRight, |
| 568 | + {itemComment, 0, "// A required param of type any.\n"}, |
| 569 | + |
| 570 | + tLeft, |
| 571 | + {itemHeaderParam, 0, "@param"}, |
| 572 | + {itemIdent, 0, "NAME"}, |
| 573 | + {itemColon, 0, ":"}, |
| 574 | + {itemHeaderParamType, 0, ""}, |
| 575 | + {itemEquals, 0, "="}, |
| 576 | + {itemString, 0, "'default'"}, |
| 577 | + tRight, |
| 578 | + {itemComment, 0, "// A default param with an inferred type.\n"}, |
| 579 | + |
| 580 | + tLeft, |
| 581 | + {itemHeaderParam, 0, "@param"}, |
| 582 | + {itemIdent, 0, "NAME"}, |
| 583 | + {itemColon, 0, ":"}, |
| 584 | + {itemHeaderParamType, 0, "int"}, |
| 585 | + {itemEquals, 0, "="}, |
| 586 | + {itemInteger, 0, "10"}, |
| 587 | + tRight, |
| 588 | + {itemComment, 0, "// A default param with an explicit type.\n"}, |
| 589 | + |
| 590 | + tLeft, |
| 591 | + {itemHeaderOptionalParam, 0, "@param?"}, |
| 592 | + {itemIdent, 0, "NAME"}, |
| 593 | + {itemColon, 0, ":"}, |
| 594 | + {itemHeaderParamType, 0, "[age: int, name: string]"}, |
| 595 | + tRight, |
| 596 | + {itemComment, 0, "// An optional param.\n"}, |
| 597 | + |
| 598 | + tLeft, |
| 599 | + {itemHeaderOptionalParam, 0, "@param?"}, |
| 600 | + {itemIdent, 0, "NAME"}, |
| 601 | + {itemColon, 0, ":"}, |
| 602 | + {itemHeaderParamType, 0, "map<int, string>"}, |
| 603 | + tRight, |
| 604 | + {itemComment, 0, "// A map param.\n"}, |
| 605 | + |
| 606 | + tLeft, |
| 607 | + {itemHeaderOptionalParam, 0, "@param?"}, |
| 608 | + {itemIdent, 0, "NAME"}, |
| 609 | + {itemColon, 0, ":"}, |
| 610 | + {itemHeaderParamType, 0, "list<string>"}, |
| 611 | + tRight, |
| 612 | + {itemComment, 0, "// A list param.\n"}, |
| 613 | + |
| 614 | + tEOF, |
| 615 | + }}, |
| 616 | + |
543 | 617 | {"let", `{let $ident: 1+1/}{let $ident}content{/let}`, []item{ |
544 | 618 | tLeft, |
545 | 619 | {itemLet, 0, "let"}, |
|
0 commit comments