diff --git a/Tools/CppDoc/UnitTest/TestOverloadingGenericMethodInfer.cpp b/Tools/CppDoc/UnitTest/TestOverloadingGenericMethodInfer.cpp index 31716fb5e..64a8c7c78 100644 --- a/Tools/CppDoc/UnitTest/TestOverloadingGenericMethodInfer.cpp +++ b/Tools/CppDoc/UnitTest/TestOverloadingGenericMethodInfer.cpp @@ -7,8 +7,18 @@ namespace Input__TestOverloadingGenericFunction_Method template struct MakeTuple { + MakeTuple operator++(); + + MakeTuple operator++(int); + template MakeTuple operator<<(T); + + template + MakeTuple operator[](T); + + template + MakeTuple operator+(MakeTuple); }; ); } @@ -20,6 +30,34 @@ TEST_FILE using namespace Input__TestOverloadingGenericFunction_Method; COMPILE_PROGRAM(program, pa, input); + ASSERT_OVERLOADING_VERBOSE( + (++MakeTuple<>()), + L"((++ MakeTuple<>()))", + L"::MakeTuple<{__int32 $PR}> $PR", + MakeTuple + ); + + ASSERT_OVERLOADING_VERBOSE( + (++++++MakeTuple<>()), + L"((++ (++ (++ MakeTuple<>()))))", + L"::MakeTuple<{__int32 $PR, __int32 $PR, __int32 $PR}> $PR", + MakeTuple + ); + + ASSERT_OVERLOADING_VERBOSE( + (MakeTuple<>()++), + L"((MakeTuple<>() ++))", + L"::MakeTuple<{__int32 $PR}> $PR", + MakeTuple + ); + + ASSERT_OVERLOADING_VERBOSE( + (MakeTuple<>()++++++), + L"((((MakeTuple<>() ++) ++) ++))", + L"::MakeTuple<{__int32 $PR, __int32 $PR, __int32 $PR}> $PR", + MakeTuple + ); + ASSERT_OVERLOADING_VERBOSE( (MakeTuple<>() << 1), L"((MakeTuple<>() << 1))", @@ -33,9 +71,30 @@ TEST_FILE L"::MakeTuple<{__int32 $PR, double $PR, float $PR, char $PR, wchar_t $PR, bool $PR}> $PR", MakeTuple ); + + ASSERT_OVERLOADING_VERBOSE( + (MakeTuple<>()[0]), + L"(MakeTuple<>()[0])", + L"::MakeTuple<{__int32 $PR}> $PR", + MakeTuple + ); + + ASSERT_OVERLOADING_VERBOSE( + (MakeTuple<>()[0][1][2]), + L"(MakeTuple<>()[0][1][2])", + L"::MakeTuple<{__int32 $PR, __int32 $PR, __int32 $PR}> $PR", + MakeTuple + ); + + ASSERT_OVERLOADING_VERBOSE( + (MakeTuple<>()['a'][true][1.0] + ++++++MakeTuple<>()), + L"((MakeTuple<>()['a'][true][1.0] + (++ (++ (++ MakeTuple<>())))))", + L"::MakeTuple<{char $PR, bool $PR, double $PR, __int32 $PR, __int32 $PR, __int32 $PR}> $PR", + MakeTuple + ); }); - // test methods/operators + // test methods // use multiple levels of type arguments in function arguments // call methods/operators on "this" } \ No newline at end of file