diff options
author | Stephen Kelly <steveire@gmail.com> | 2012-10-03 22:34:03 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2012-10-09 12:26:43 (GMT) |
commit | b3d8f5dab7f33dba4f327ab7ef4bd7ea90d6b651 (patch) | |
tree | 10345c74b3bc115a0115fd8489827ababbc07e4c /Tests | |
parent | a4985a9af9ed9762c1a51c369981609dd24f7425 (diff) | |
download | CMake-b3d8f5dab7f33dba4f327ab7ef4bd7ea90d6b651.zip CMake-b3d8f5dab7f33dba4f327ab7ef4bd7ea90d6b651.tar.gz CMake-b3d8f5dab7f33dba4f327ab7ef4bd7ea90d6b651.tar.bz2 |
GenEx: Parse comma after colon tokens specially
Otherwise the comma is treated as plain text by ParseContent.
$<STREQUAL:,> should be valid and true.
$<STREQUAL:,something> should be valid and false.
$<STREQUAL:,,> should be non-valid as it is 3 parameters.
$<STREQUAL:something,,> should be non-valid as it is 3 parameters.
Additionally, this allows reporting the correct error for other
expressions. For example $<TARGET_PROPERTY:,> should be invalid
because it has an empty target and empty property. It shouldn't
attempt to read the property ',' on the 'implicit this' target.
Diffstat (limited to 'Tests')
7 files changed, 51 insertions, 1 deletions
diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt index 79a8abb..6494107 100644 --- a/Tests/GeneratorExpression/CMakeLists.txt +++ b/Tests/GeneratorExpression/CMakeLists.txt @@ -37,6 +37,8 @@ add_custom_target(check ALL -Dtest_strequal_angle_r=$<STREQUAL:$<ANGLE-R>,$<ANGLE-R>> -Dtest_strequal_comma=$<STREQUAL:$<COMMA>,$<COMMA>> -Dtest_strequal_angle_r_comma=$<STREQUAL:$<ANGLE-R>,$<COMMA>> + -Dtest_strequal_both_empty=$<STREQUAL:,> + -Dtest_strequal_one_empty=$<STREQUAL:something,> -Dtest_angle_r=$<ANGLE-R> -Dtest_comma=$<COMMA> -P ${CMAKE_CURRENT_SOURCE_DIR}/check.cmake diff --git a/Tests/GeneratorExpression/check.cmake b/Tests/GeneratorExpression/check.cmake index 6fb87a2..7192470 100644 --- a/Tests/GeneratorExpression/check.cmake +++ b/Tests/GeneratorExpression/check.cmake @@ -38,5 +38,7 @@ check(test_strequal_no_yes "0") check(test_strequal_angle_r "1") check(test_strequal_comma "1") check(test_strequal_angle_r_comma "0") +check(test_strequal_both_empty "1") +check(test_strequal_one_empty "0") check(test_angle_r ">") check(test_comma ",") diff --git a/Tests/RunCMake/GeneratorExpression/BadNOT-stderr.txt b/Tests/RunCMake/GeneratorExpression/BadNOT-stderr.txt index 32169c5..e5e628c 100644 --- a/Tests/RunCMake/GeneratorExpression/BadNOT-stderr.txt +++ b/Tests/RunCMake/GeneratorExpression/BadNOT-stderr.txt @@ -20,7 +20,7 @@ CMake Error at BadNOT.cmake:1 \(add_custom_target\): \$<NOT:,> - \$<NOT> parameter must resolve to exactly one '0' or '1' value. + \$<NOT> expression requires exactly one parameter. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) + diff --git a/Tests/RunCMake/GeneratorExpression/BadStrEqual-result.txt b/Tests/RunCMake/GeneratorExpression/BadStrEqual-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/GeneratorExpression/BadStrEqual-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/GeneratorExpression/BadStrEqual-stderr.txt b/Tests/RunCMake/GeneratorExpression/BadStrEqual-stderr.txt new file mode 100644 index 0000000..dd0d931 --- /dev/null +++ b/Tests/RunCMake/GeneratorExpression/BadStrEqual-stderr.txt @@ -0,0 +1,38 @@ +CMake Error at BadStrEqual.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<STREQUAL> + + \$<STREQUAL> expression requires 2 comma separated parameters, but got 0 + instead. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++CMake Error at BadStrEqual.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<STREQUAL:> + + \$<STREQUAL> expression requires 2 comma separated parameters, but got 1 + instead. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadStrEqual.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<STREQUAL:,,> + + \$<STREQUAL> expression requires 2 comma separated parameters, but got 3 + instead. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at BadStrEqual.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<STREQUAL:something,,> + + \$<STREQUAL> expression requires 2 comma separated parameters, but got 3 + instead. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/GeneratorExpression/BadStrEqual.cmake b/Tests/RunCMake/GeneratorExpression/BadStrEqual.cmake new file mode 100644 index 0000000..56eb458 --- /dev/null +++ b/Tests/RunCMake/GeneratorExpression/BadStrEqual.cmake @@ -0,0 +1,6 @@ +add_custom_target(check ALL COMMAND check + $<STREQUAL> + $<STREQUAL:> + $<STREQUAL:,,> + $<STREQUAL:something,,> + VERBATIM) diff --git a/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake b/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake index ed18f25..18a47ae 100644 --- a/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake +++ b/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake @@ -4,3 +4,4 @@ run_cmake(BadCONFIG) run_cmake(BadOR) run_cmake(BadAND) run_cmake(BadNOT) +run_cmake(BadStrEqual) |