|
6 | 6 | Concept, |
7 | 7 | Function, |
8 | 8 | FundamentalSpecifier, |
| 9 | + Method, |
9 | 10 | MoveReference, |
10 | 11 | NameSpecifier, |
11 | 12 | PQName, |
@@ -495,15 +496,15 @@ def test_requires_last_elem() -> None: |
495 | 496 | ) |
496 | 497 | ], |
497 | 498 | template=TemplateDecl( |
498 | | - params=[TemplateTypeParam(typekey="typename", name="T")], |
499 | | - raw_requires_post=Value( |
500 | | - tokens=[ |
501 | | - Token(value="Eq"), |
502 | | - Token(value="<"), |
503 | | - Token(value="T"), |
504 | | - Token(value=">"), |
505 | | - ] |
506 | | - ), |
| 499 | + params=[TemplateTypeParam(typekey="typename", name="T")] |
| 500 | + ), |
| 501 | + raw_requires=Value( |
| 502 | + tokens=[ |
| 503 | + Token(value="Eq"), |
| 504 | + Token(value="<"), |
| 505 | + Token(value="T"), |
| 506 | + Token(value=">"), |
| 507 | + ] |
507 | 508 | ), |
508 | 509 | ) |
509 | 510 | ] |
@@ -752,14 +753,14 @@ def test_requires_both() -> None: |
752 | 753 | Token(value=">"), |
753 | 754 | ] |
754 | 755 | ), |
755 | | - raw_requires_post=Value( |
756 | | - tokens=[ |
757 | | - Token(value="Subtractable"), |
758 | | - Token(value="<"), |
759 | | - Token(value="T"), |
760 | | - Token(value=">"), |
761 | | - ] |
762 | | - ), |
| 756 | + ), |
| 757 | + raw_requires=Value( |
| 758 | + tokens=[ |
| 759 | + Token(value="Subtractable"), |
| 760 | + Token(value="<"), |
| 761 | + Token(value="T"), |
| 762 | + Token(value=">"), |
| 763 | + ] |
763 | 764 | ), |
764 | 765 | ) |
765 | 766 | ] |
@@ -791,20 +792,86 @@ def test_requires_paren() -> None: |
791 | 792 | ) |
792 | 793 | ], |
793 | 794 | template=TemplateDecl( |
794 | | - params=[TemplateTypeParam(typekey="class", name="T")], |
795 | | - raw_requires_post=Value( |
796 | | - tokens=[ |
797 | | - Token(value="("), |
798 | | - Token(value="is_purrable"), |
799 | | - Token(value="<"), |
800 | | - Token(value="T"), |
801 | | - Token(value=">"), |
802 | | - Token(value="("), |
803 | | - Token(value=")"), |
804 | | - Token(value=")"), |
805 | | - ] |
| 795 | + params=[TemplateTypeParam(typekey="class", name="T")] |
| 796 | + ), |
| 797 | + raw_requires=Value( |
| 798 | + tokens=[ |
| 799 | + Token(value="("), |
| 800 | + Token(value="is_purrable"), |
| 801 | + Token(value="<"), |
| 802 | + Token(value="T"), |
| 803 | + Token(value=">"), |
| 804 | + Token(value="("), |
| 805 | + Token(value=")"), |
| 806 | + Token(value=")"), |
| 807 | + ] |
| 808 | + ), |
| 809 | + ) |
| 810 | + ] |
| 811 | + ) |
| 812 | + ) |
| 813 | + |
| 814 | + |
| 815 | +def test_non_template_requires() -> None: |
| 816 | + content = """ |
| 817 | + // clang-format off |
| 818 | +
|
| 819 | + template <class T> |
| 820 | + struct Payload |
| 821 | + { |
| 822 | + constexpr Payload(T v) |
| 823 | + requires(std::is_pod_v<T>) |
| 824 | + : Value(v) |
| 825 | + { |
| 826 | + } |
| 827 | + }; |
| 828 | + """ |
| 829 | + data = parse_string(content, cleandoc=True) |
| 830 | + |
| 831 | + assert data == ParsedData( |
| 832 | + namespace=NamespaceScope( |
| 833 | + classes=[ |
| 834 | + ClassScope( |
| 835 | + class_decl=ClassDecl( |
| 836 | + typename=PQName( |
| 837 | + segments=[NameSpecifier(name="Payload")], classkey="struct" |
| 838 | + ), |
| 839 | + template=TemplateDecl( |
| 840 | + params=[TemplateTypeParam(typekey="class", name="T")] |
806 | 841 | ), |
807 | 842 | ), |
| 843 | + methods=[ |
| 844 | + Method( |
| 845 | + return_type=None, |
| 846 | + name=PQName(segments=[NameSpecifier(name="Payload")]), |
| 847 | + parameters=[ |
| 848 | + Parameter( |
| 849 | + type=Type( |
| 850 | + typename=PQName( |
| 851 | + segments=[NameSpecifier(name="T")] |
| 852 | + ) |
| 853 | + ), |
| 854 | + name="v", |
| 855 | + ) |
| 856 | + ], |
| 857 | + constexpr=True, |
| 858 | + has_body=True, |
| 859 | + raw_requires=Value( |
| 860 | + tokens=[ |
| 861 | + Token(value="("), |
| 862 | + Token(value="std"), |
| 863 | + Token(value="::"), |
| 864 | + Token(value="is_pod_v"), |
| 865 | + Token(value="<"), |
| 866 | + Token(value="T"), |
| 867 | + Token(value=">"), |
| 868 | + Token(value=")"), |
| 869 | + ] |
| 870 | + ), |
| 871 | + access="public", |
| 872 | + constructor=True, |
| 873 | + ) |
| 874 | + ], |
808 | 875 | ) |
809 | 876 | ] |
810 | 877 | ) |
|
0 commit comments