summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmReturnCommand.h14
-rw-r--r--Tests/ReturnTest/CMakeLists.txt8
-rw-r--r--Tests/ReturnTest/include_return.cmake3
3 files changed, 20 insertions, 5 deletions
diff --git a/Source/cmReturnCommand.h b/Source/cmReturnCommand.h
index d75cda5..5aee88b 100644
--- a/Source/cmReturnCommand.h
+++ b/Source/cmReturnCommand.h
@@ -57,7 +57,7 @@ public:
*/
virtual const char* GetTerseDocumentation()
{
- return "Return from a directory or function.";
+ return "Return from a file, directory or function.";
}
/**
@@ -67,10 +67,14 @@ public:
{
return
" return()\n"
- "Returns from a directory or function. When this command is "
- "encountered, it caused process of the current function or "
- "directory to stop and control is return to the caller of the "
- "function, or the parent directory if any. Note that a macro "
+ "Returns from a file, directory or function. When this command is "
+ "encountered in an included file (via include() or find_package()), "
+ "it causes processing of the current file to stop and control is "
+ "returned to the including file. If it is encountered in a file which "
+ "is not included by another file, e.g. a CMakeLists.txt, control is "
+ "returned to the parent directory if there is one. "
+ "If return is called in a function, control is returned to the caller "
+ "of the function. Note that a macro "
"is not a function and does not handle return like a function does.";
}
diff --git a/Tests/ReturnTest/CMakeLists.txt b/Tests/ReturnTest/CMakeLists.txt
index bd0966e..7c9156b 100644
--- a/Tests/ReturnTest/CMakeLists.txt
+++ b/Tests/ReturnTest/CMakeLists.txt
@@ -84,6 +84,14 @@ else ("${subdirResult}" EQUAL 1)
failed ("subdir got: ${subdirResult}")
endif ("${subdirResult}" EQUAL 1)
+# check return from a file
+include(include_return.cmake)
+if ("${include_returnResult}" EQUAL 1)
+ pass ("include_return")
+else ("${include_returnResult}" EQUAL 1)
+ failed ("include_return got: ${include_returnResult}")
+endif ("${include_returnResult}" EQUAL 1)
+
# check return from within a macro
macro (mymacro)
set (foo 1)
diff --git a/Tests/ReturnTest/include_return.cmake b/Tests/ReturnTest/include_return.cmake
new file mode 100644
index 0000000..7cea1fb
--- /dev/null
+++ b/Tests/ReturnTest/include_return.cmake
@@ -0,0 +1,3 @@
+set(include_returnResult 1)
+return()
+set(include_returnResult 0)