Merge topic 'doc-list-non-existent'

b573a732dc Tests: add tests to check claims in the documentation
b151db01f9 Help: mention non-existent case for list(PREPEND)
b3a249c2cb Help: clarify range for list(INSERT), mention nonexistent / empty case
b6fdcb3df0 Help: clarify description of list(INSERT)
e55f473ea9 Help: clarify that list(APPEND) on a non-existent list creates it

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6824
This commit is contained in:
Brad King
2021-12-22 13:52:41 +00:00
committed by Kitware Robot
3 changed files with 60 additions and 3 deletions

View File

@@ -128,7 +128,9 @@ Modification
list(APPEND <list> [<element> ...])
Appends elements to the list.
Appends elements to the list. If no variable named ``<list>`` exists in the
current scope its value is treated as empty and the elements are appended to
that empty list.
.. _FILTER:
@@ -150,7 +152,12 @@ For more information on regular expressions look under
list(INSERT <list> <element_index> <element> [<element> ...])
Inserts elements to the list to the specified location.
Inserts elements to the list to the specified index. It is an
error to specify an out-of-range index. Valid indexes are 0 to `N`
where `N` is the length of the list, inclusive. An empty list
has length 0. If no variable named ``<list>`` exists in the
current scope its value is treated as empty and the elements are
inserted in that empty list.
.. _POP_BACK:
@@ -186,7 +193,9 @@ to the given variables and then remove the first `N` values from
.. versionadded:: 3.15
Insert elements to the 0th position in the list.
Insert elements to the 0th position in the list. If no variable named
``<list>`` exists in the current scope its value is treated as empty and
the elements are prepended to that empty list.
.. _REMOVE_ITEM:

View File

@@ -0,0 +1,45 @@
# Various list operations should treat non-existent variables as empty
# - APPEND
# - PREPEND
# - INSERT (only valid index is 0)
set(nex_l0 "")
list(APPEND nex_l0 a)
list(APPEND nex_l0 b)
if(NOT nex_l0 STREQUAL "a;b")
message(FATAL_ERROR "a;b expected, got ${nex_l0}")
endif()
unset(nex_l1)
list(APPEND nex_l1 c)
list(APPEND nex_l1 d)
if(NOT nex_l1 STREQUAL "c;d")
message(FATAL_ERROR "c;d expected, got ${nex_l1}")
endif()
set(nex_l2 "")
list(PREPEND nex_l2 E)
list(PREPEND nex_l2 f)
if(NOT nex_l2 STREQUAL "f;E")
message(FATAL_ERROR "f;E expected, got ${nex_l2}")
endif()
unset(nex_l3)
list(PREPEND nex_l3 hi)
list(PREPEND nex_l3 G)
if(NOT nex_l3 STREQUAL "G;hi")
message(FATAL_ERROR "G;hi expected, got ${nex_l3}")
endif()
set(nex_l4 "")
list(INSERT nex_l4 0 j)
list(INSERT nex_l4 0 kl)
if(NOT nex_l4 STREQUAL "kl;j")
message(FATAL_ERROR "kl;j expected, got ${nex_l4}")
endif()
unset(nex_l5)
list(INSERT nex_l5 0 M)
list(INSERT nex_l5 0 noP)
if(NOT nex_l5 STREQUAL "noP;M")
message(FATAL_ERROR "noP;M expected, got ${nex_l5}")
endif()

View File

@@ -116,3 +116,6 @@ run_cmake(POP_FRONT-NoArgs)
# Successful tests
run_cmake(POP_BACK)
run_cmake(POP_FRONT)
# Nonexistent variables treated as empty
run_cmake(LIST-nonexistent)