From 9c9f69fb9c0c1ab1f62de646cffe48485bd893af Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 4 Jan 2014 19:38:23 +0100 Subject: Genex: Make EQUAL support upper case binary literals As C++11, python, D and java do. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf Add test for uppercase hex literals. --- Source/cmGeneratorExpressionEvaluator.cxx | 12 ++++++------ Tests/GeneratorExpression/CMakeLists.txt | 16 +++++++++------- Tests/GeneratorExpression/check-part3.cmake | 6 ++++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index fec43b9..259ba94 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -215,18 +215,18 @@ static const struct EqualNode : public cmGeneratorExpressionNode bool flipSign = false; const char *lhs = parameters[0].c_str(); - if (cmHasLiteralPrefix(lhs, "0b")) + if (cmHasLiteralPrefix(lhs, "0b") || cmHasLiteralPrefix(lhs, "0B")) { base = 2; lhs += 2; } - if (cmHasLiteralPrefix(lhs, "-0b")) + if (cmHasLiteralPrefix(lhs, "-0b") || cmHasLiteralPrefix(lhs, "-0B")) { base = 2; lhs += 3; flipSign = true; } - if (cmHasLiteralPrefix(lhs, "+0b")) + if (cmHasLiteralPrefix(lhs, "+0b") || cmHasLiteralPrefix(lhs, "+0B")) { base = 2; lhs += 3; @@ -249,18 +249,18 @@ static const struct EqualNode : public cmGeneratorExpressionNode flipSign = false; const char *rhs = parameters[1].c_str(); - if (cmHasLiteralPrefix(rhs, "0b")) + if (cmHasLiteralPrefix(rhs, "0b") || cmHasLiteralPrefix(rhs, "0B")) { base = 2; rhs += 2; } - if (cmHasLiteralPrefix(rhs, "-0b")) + if (cmHasLiteralPrefix(rhs, "-0b") || cmHasLiteralPrefix(rhs, "-0B")) { base = 2; rhs += 3; flipSign = true; } - if (cmHasLiteralPrefix(rhs, "+0b")) + if (cmHasLiteralPrefix(rhs, "+0b") || cmHasLiteralPrefix(rhs, "+0B")) { base = 2; rhs += 3; diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt index 4fb7ecd..9512efc 100644 --- a/Tests/GeneratorExpression/CMakeLists.txt +++ b/Tests/GeneratorExpression/CMakeLists.txt @@ -199,7 +199,7 @@ add_custom_target(check-part3 ALL -Dequal1=$ -Dequal2=$ -Dequal3=$ - -Dequal4=$ + -Dequal4=$ -Dequal5=$ -Dequal6=$ -Dequal7=$ @@ -208,15 +208,17 @@ add_custom_target(check-part3 ALL -Dequal10=$ -Dequal11=$ -Dequal12=$ - -Dequal13=$ + -Dequal13=$ -Dequal14=$ - -Dequal15=$ + -Dequal15=$ -Dequal16=$ -Dequal17=$ - -Dequal18=$ - -Dequal19=$ - -Dequal20=$ - -Dequal21=$ + -Dequal18=$ + -Dequal19=$ + -Dequal20=$ + -Dequal21=$ + -Dequal22=$ + -Dequal23=$ -P ${CMAKE_CURRENT_SOURCE_DIR}/check-part3.cmake COMMAND ${CMAKE_COMMAND} -E echo "check done (part 3 of 3)" VERBATIM diff --git a/Tests/GeneratorExpression/check-part3.cmake b/Tests/GeneratorExpression/check-part3.cmake index 2c6bf49..70ccfe1 100644 --- a/Tests/GeneratorExpression/check-part3.cmake +++ b/Tests/GeneratorExpression/check-part3.cmake @@ -55,6 +55,8 @@ check(equal15 "1") check(equal16 "1") check(equal17 "0") check(equal18 "1") -check(equal19 "1") -check(equal20 "0") +check(equal19 "0") +check(equal20 "1") check(equal21 "1") +check(equal22 "0") +check(equal23 "1") -- cgit v0.12