| 629 | return pass(typeprop, typeprops) |
| 630 | } |
| 631 | function typeprop(type, value) { |
| 632 | if (type == "variable" || cx.style == "keyword") { |
| 633 | cx.marked = "property" |
| 634 | return cont(typeprop) |
| 635 | } else if (value == "?" || type == "number" || type == "string") { |
| 636 | return cont(typeprop) |
| 637 | } else if (type == ":") { |
| 638 | return cont(typeexpr) |
| 639 | } else if (type == "[") { |
| 640 | return cont(expect("variable"), maybetypeOrIn, expect("]"), typeprop) |
| 641 | } else if (type == "(") { |
| 642 | return pass(functiondecl, typeprop) |
| 643 | } |
| 644 | } |
| 645 | function typearg(type, value) { |
| 646 | if (type == "variable" && cx.stream.match(/^\s*[?:]/, false) || value == "?") return cont(typearg) |
| 647 | if (type == ":") return cont(typeexpr) |