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