@@ -960,6 +960,14 @@ class TestMathLib : public TestFixture {
960960 ASSERT_EQUALS (true , MathLib::isIntHex (" -0x0ULL" ));
961961 ASSERT_EQUALS (true , MathLib::isIntHex (" +0x0LLU" ));
962962 ASSERT_EQUALS (true , MathLib::isIntHex (" -0x0LLU" ));
963+ ASSERT_EQUALS (true , MathLib::isIntHex (" +0x0Z" ));
964+ ASSERT_EQUALS (true , MathLib::isIntHex (" -0x0Z" ));
965+ ASSERT_EQUALS (true , MathLib::isIntHex (" +0x0ZU" ));
966+ ASSERT_EQUALS (true , MathLib::isIntHex (" -0x0ZU" ));
967+ ASSERT_EQUALS (true , MathLib::isIntHex (" +0x0UZ" ));
968+ ASSERT_EQUALS (true , MathLib::isIntHex (" -0x0UZ" ));
969+ ASSERT_EQUALS (true , MathLib::isIntHex (" +0x0Uz" ));
970+ ASSERT_EQUALS (true , MathLib::isIntHex (" -0x0Uz" ));
963971
964972 // negative testing
965973 ASSERT_EQUALS (false , MathLib::isIntHex (" +0x" ));
@@ -972,10 +980,6 @@ class TestMathLib : public TestFixture {
972980 ASSERT_EQUALS (false , MathLib::isIntHex (" " ));
973981 ASSERT_EQUALS (false , MathLib::isIntHex (" " ));
974982 ASSERT_EQUALS (false , MathLib::isIntHex (" 0" ));
975- ASSERT_EQUALS (false , MathLib::isIntHex (" +0x0Z" ));
976- ASSERT_EQUALS (false , MathLib::isIntHex (" -0x0Z" ));
977- ASSERT_EQUALS (false , MathLib::isIntHex (" +0x0Uz" ));
978- ASSERT_EQUALS (false , MathLib::isIntHex (" -0x0Uz" ));
979983 ASSERT_EQUALS (false , MathLib::isIntHex (" +0x0Lz" ));
980984 ASSERT_EQUALS (false , MathLib::isIntHex (" -0x0Lz" ));
981985 ASSERT_EQUALS (false , MathLib::isIntHex (" +0x0LUz" ));
@@ -1018,12 +1022,19 @@ class TestMathLib : public TestFixture {
10181022 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" u" ));
10191023 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" ul" ));
10201024 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" ull" ));
1025+ ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" uz" ));
10211026 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" l" ));
10221027 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" lu" ));
10231028 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" ll" ));
10241029 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" llu" ));
10251030 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" llU" ));
10261031 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" LLU" ));
1032+ ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" z" ));
1033+ ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" Z" ));
1034+ ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" zu" ));
1035+ ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" UZ" ));
1036+ ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" ZU" ));
1037+
10271038 // Microsoft extensions:
10281039 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" i64" ));
10291040 ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" I64" ));
@@ -1033,6 +1044,10 @@ class TestMathLib : public TestFixture {
10331044 ASSERT_EQUALS (false , MathLib::isValidIntegerSuffix (" I64" , false ));
10341045 ASSERT_EQUALS (false , MathLib::isValidIntegerSuffix (" ui64" , false ));
10351046 ASSERT_EQUALS (false , MathLib::isValidIntegerSuffix (" UI64" , false ));
1047+
1048+ // User defined suffix literals
1049+ ASSERT_EQUALS (false , MathLib::isValidIntegerSuffix (" _" ));
1050+ ASSERT_EQUALS (true , MathLib::isValidIntegerSuffix (" _MyUserDefinedLiteral" ));
10361051 }
10371052
10381053 void ispositive () const {
@@ -1057,6 +1072,13 @@ class TestMathLib : public TestFixture {
10571072 ASSERT_EQUALS (true , MathLib::isFloat (" 0.f" ));
10581073 ASSERT_EQUALS (true , MathLib::isFloat (" 0.f" ));
10591074 ASSERT_EQUALS (true , MathLib::isFloat (" 0xA.Fp-10" ));
1075+
1076+ // User defined suffix literals
1077+ ASSERT_EQUALS (false , MathLib::isFloat (" 0_" ));
1078+ ASSERT_EQUALS (false , MathLib::isFloat (" 0._" ));
1079+ ASSERT_EQUALS (false , MathLib::isFloat (" 0.1_" ));
1080+ ASSERT_EQUALS (true , MathLib::isFloat (" 0.0_MyUserDefinedLiteral" ));
1081+ ASSERT_EQUALS (true , MathLib::isFloat (" 0._MyUserDefinedLiteral" ));
10601082 }
10611083
10621084 void isDecimalFloat () const {
@@ -1164,6 +1186,13 @@ class TestMathLib : public TestFixture {
11641186 ASSERT_EQUALS (true , MathLib::isDecimalFloat (" 1.0E+1" ));
11651187 ASSERT_EQUALS (true , MathLib::isDecimalFloat (" 1.0E-1" ));
11661188 ASSERT_EQUALS (true , MathLib::isDecimalFloat (" -1.0E+1" ));
1189+
1190+ // User defined suffix literals
1191+ ASSERT_EQUALS (false , MathLib::isDecimalFloat (" 0_" ));
1192+ ASSERT_EQUALS (false , MathLib::isDecimalFloat (" .1_" ));
1193+ ASSERT_EQUALS (false , MathLib::isDecimalFloat (" 0.1_" ));
1194+ ASSERT_EQUALS (true , MathLib::isDecimalFloat (" 0.0_MyUserDefinedLiteral" ));
1195+ ASSERT_EQUALS (true , MathLib::isDecimalFloat (" .1_MyUserDefinedLiteral" ));
11671196 }
11681197
11691198 void naninf () const {
@@ -1198,6 +1227,14 @@ class TestMathLib : public TestFixture {
11981227 ASSERT_EQUALS (false , MathLib::isDec (" +x" ));
11991228 ASSERT_EQUALS (false , MathLib::isDec (" x" ));
12001229 ASSERT_EQUALS (false , MathLib::isDec (" " ));
1230+
1231+ // User defined suffix literals
1232+ ASSERT_EQUALS (false , MathLib::isDec (" 0_" ));
1233+ ASSERT_EQUALS (false , MathLib::isDec (" +0_" ));
1234+ ASSERT_EQUALS (false , MathLib::isDec (" -1_" ));
1235+ ASSERT_EQUALS (true , MathLib::isDec (" 0_MyUserDefinedLiteral" ));
1236+ ASSERT_EQUALS (true , MathLib::isDec (" +1_MyUserDefinedLiteral" ));
1237+ ASSERT_EQUALS (true , MathLib::isDec (" -1_MyUserDefinedLiteral" ));
12011238 }
12021239
12031240 void isNullValue () const {
0 commit comments