Pārlūkot izejas kodu

Merge topic 'genex-REMOVE_DUPLICATES-empty'

861dd60ecf Genex: Restore REMOVE_DUPLICATES preservation of empty elements

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !8623
Brad King 2 gadi atpakaļ
vecāks
revīzija
a0056a96d5

+ 3 - 1
Source/cmGeneratorExpressionNode.cxx

@@ -384,7 +384,9 @@ static const struct RemoveDuplicatesNode : public cmGeneratorExpressionNode
         "$<REMOVE_DUPLICATES:...> expression requires one parameter");
     }
 
-    return cmList{ parameters.front() }.remove_duplicates().to_string();
+    return cmList{ parameters.front(), cmList::EmptyElements::Yes }
+      .remove_duplicates()
+      .to_string();
   }
 
 } removeDuplicatesNode;

+ 6 - 0
Tests/RunCMake/GeneratorExpression/REMOVE_DUPLICATES-empty-element-check.cmake

@@ -0,0 +1,6 @@
+file(READ "${RunCMake_TEST_BINARY_DIR}/REMOVE_DUPLICATES-generated.txt" content)
+
+set(expected "1;;2;3")
+if(NOT content STREQUAL expected)
+  set(RunCMake_TEST_FAILED "actual content:\n [[${content}]]\nbut expected:\n [[${expected}]]")
+endif()

+ 3 - 0
Tests/RunCMake/GeneratorExpression/REMOVE_DUPLICATES-empty-element.cmake

@@ -0,0 +1,3 @@
+cmake_policy(VERSION 3.11)
+
+file(GENERATE OUTPUT "REMOVE_DUPLICATES-generated.txt" CONTENT "$<REMOVE_DUPLICATES:1$<SEMICOLON>$<SEMICOLON>2$<SEMICOLON>$<SEMICOLON>3>")

+ 1 - 0
Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake

@@ -36,6 +36,7 @@ run_cmake(TARGET_NAME_IF_EXISTS-alias-target)
 run_cmake(TARGET_NAME_IF_EXISTS-imported-target)
 run_cmake(TARGET_NAME_IF_EXISTS-imported-global-target)
 run_cmake(REMOVE_DUPLICATES-empty)
+run_cmake(REMOVE_DUPLICATES-empty-element)
 run_cmake(REMOVE_DUPLICATES-1)
 run_cmake(REMOVE_DUPLICATES-2)
 run_cmake(REMOVE_DUPLICATES-3)