patch 8.0.0654: no warning for text after :endfunction

Problem:    Text found after :endfunction is silently ignored.
Solution:   Give a warning if 'verbose' is set.  When | or \n are used,
            execute the text as a command.
diff --git a/src/testdir/test_vimscript.vim b/src/testdir/test_vimscript.vim
index f4d2cd0..6f5a73f 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -1363,6 +1363,33 @@
     call assert_fails("call invert({})", 'E728:')
 endfunc
 
+" Test trailing text after :endfunction				    {{{1
+func Test_endfunction_trailing()
+    call assert_false(exists('*Xtest'))
+
+    exe "func Xtest()\necho 'hello'\nendfunc\nlet done = 'yes'"
+    call assert_true(exists('*Xtest'))
+    call assert_equal('yes', done)
+    delfunc Xtest
+    unlet done
+
+    exe "func Xtest()\necho 'hello'\nendfunc|let done = 'yes'"
+    call assert_true(exists('*Xtest'))
+    call assert_equal('yes', done)
+    delfunc Xtest
+    unlet done
+
+    set verbose=1
+    exe "func Xtest()\necho 'hello'\nendfunc \" garbage"
+    call assert_true(exists('*Xtest'))
+    delfunc Xtest
+
+    call assert_fails("func Xtest()\necho 'hello'\nendfunc garbage", 'E946')
+    call assert_true(exists('*Xtest'))
+    delfunc Xtest
+    set verbose=0
+endfunc
+
 "-------------------------------------------------------------------------------
 " Modelines								    {{{1
 " vim: ts=8 sw=4 tw=80 fdm=marker
diff --git a/src/userfunc.c b/src/userfunc.c
index 859e6eb..de089bb 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2130,6 +2130,14 @@
 	    /* Check for "endfunction". */
 	    if (checkforcmd(&p, "endfunction", 4) && nesting-- == 0)
 	    {
+		if (*p == '|')
+		    /* Another command follows. */
+		    eap->nextcmd = vim_strsave(p + 1);
+		else if (line_arg != NULL && *skipwhite(line_arg) != NUL)
+		    /* Another command follows. */
+		    eap->nextcmd = line_arg;
+		else if (*p != NUL && *p != '"' && p_verbose > 0)
+		    EMSG2((char_u *)_("E946: Text found after :endfunction: %s"), p);
 		if (line_arg == NULL)
 		    vim_free(theline);
 		break;
diff --git a/src/version.c b/src/version.c
index 149a83f..1e7d648 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    654,
+/**/
     653,
 /**/
     652,