diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index f7a5f5c..b1c9ed6 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -4557,6 +4557,35 @@
 }
 
 /*
+ * "getcompletiontype()" function
+ */
+    void
+f_getcompletiontype(typval_T *argvars, typval_T *rettv)
+{
+    char_u	*pat;
+    expand_T	xpc;
+    int		cmdline_len;
+
+    rettv->v_type = VAR_STRING;
+    rettv->vval.v_string = NULL;
+
+    if (check_for_string_arg(argvars, 0) == FAIL)
+	return;
+
+    pat = tv_get_string(&argvars[0]);
+    ExpandInit(&xpc);
+
+    cmdline_len = (int)STRLEN(pat);
+    set_cmd_context(&xpc, pat, cmdline_len, cmdline_len, FALSE);
+    xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern);
+    xpc.xp_col = cmdline_len;
+
+    rettv->vval.v_string = get_cmdline_completion(&xpc);
+
+    ExpandCleanup(&xpc);
+}
+
+/*
  * "cmdcomplete_info()" function
  */
     void
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 6ba698d..ec21087 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2264,7 +2264,7 @@
 			ret_string,	    f_getcharstr},
     {"getcmdcomplpat",	0, 0, 0,	    NULL,
 			ret_string,	    f_getcmdcomplpat},
-    {"getcmdcompltype",	0, 1, FEARG_1,	    NULL,
+    {"getcmdcompltype",	0, 0, 0,	    NULL,
 			ret_string,	    f_getcmdcompltype},
     {"getcmdline",	0, 0, 0,	    NULL,
 			ret_string,	    f_getcmdline},
@@ -2280,6 +2280,8 @@
 			ret_string,	    f_getcmdwintype},
     {"getcompletion",	2, 3, FEARG_1,	    arg3_string_string_bool,
 			ret_list_string,    f_getcompletion},
+    {"getcompletiontype", 1, 1, FEARG_1,    arg1_string,
+			ret_string,	    f_getcompletiontype},
     {"getcurpos",	0, 1, FEARG_1,	    arg1_number,
 			ret_list_number,    f_getcurpos},
     {"getcursorcharpos", 0, 1, FEARG_1,	    arg1_number,
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 044f389..f2a51ea 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4303,9 +4303,9 @@
 }
 
 /*
- * Get the current command-line completion type.
+ * Get the command-line completion type.
  */
-    static char_u *
+    char_u *
 get_cmdline_completion(expand_T *xpc)
 {
     int		xp_context;
@@ -4354,40 +4354,16 @@
     void
 f_getcmdcompltype(typval_T *argvars UNUSED, typval_T *rettv)
 {
-    if (check_for_opt_string_arg(argvars, 0) == FAIL)
-	 return;
+    cmdline_info_T *p;
 
     rettv->v_type = VAR_STRING;
+    rettv->vval.v_string = NULL;
 
-    if (argvars[0].v_type != VAR_UNKNOWN)
-    {
-	 char_u		*pat;
-	 expand_T	xpc;
-	 int		cmdline_len;
+    p = get_ccline_ptr();
+    if (cmdline_star > 0 || p == NULL || p->xpc == NULL)
+	return;
 
-	pat = tv_get_string(&argvars[0]);
-	ExpandInit(&xpc);
-
-	cmdline_len = (int)STRLEN(pat);
-	set_cmd_context(&xpc, pat, cmdline_len, cmdline_len, FALSE);
-	xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern);
-	xpc.xp_col = cmdline_len;
-
-	rettv->v_type = VAR_STRING;
-	rettv->vval.v_string = get_cmdline_completion(&xpc);
-
-	ExpandCleanup(&xpc);
-    }
-    else
-    {
-	 cmdline_info_T *p;
-
-	 p = get_ccline_ptr();
-	 if (cmdline_star > 0 || p == NULL || p->xpc == NULL)
-	     return;
-
-	 rettv->vval.v_string = get_cmdline_completion(p->xpc);
-    }
+    rettv->vval.v_string = get_cmdline_completion(p->xpc);
 }
 
 /*
diff --git a/src/proto/cmdexpand.pro b/src/proto/cmdexpand.pro
index 92e9dcb..2b2cc23 100644
--- a/src/proto/cmdexpand.pro
+++ b/src/proto/cmdexpand.pro
@@ -24,5 +24,6 @@
 int wildmenu_process_key(cmdline_info_T *cclp, int key, expand_T *xp);
 void wildmenu_cleanup(cmdline_info_T *cclp);
 void f_getcompletion(typval_T *argvars, typval_T *rettv);
+void f_getcompletiontype(typval_T *argvars, typval_T *rettv);
 void f_cmdcomplete_info(typval_T *argvars UNUSED, typval_T *rettv);
 /* vim: set ft=c : */
diff --git a/src/proto/ex_getln.pro b/src/proto/ex_getln.pro
index 6c93ac7..9087c83 100644
--- a/src/proto/ex_getln.pro
+++ b/src/proto/ex_getln.pro
@@ -30,6 +30,7 @@
 void escape_fname(char_u **pp);
 void tilde_replace(char_u *orig_pat, int num_files, char_u **files);
 cmdline_info_T *get_cmdline_info(void);
+char_u *get_cmdline_completion(expand_T *xpc);
 void f_getcmdcomplpat(typval_T *argvars, typval_T *rettv);
 void f_getcmdcompltype(typval_T *argvars, typval_T *rettv);
 void f_getcmdline(typval_T *argvars, typval_T *rettv);
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 9ebeb0f..844f589 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -877,6 +877,17 @@
   call assert_fails('call getcompletion("abc", [])', 'E1174:')
 endfunc
 
+func Test_getcompletiontype()
+  call assert_fails('call getcompletiontype()', 'E119:')
+  call assert_fails('call getcompletiontype({})', 'E1174:')
+  call assert_equal(getcompletiontype(''), 'command')
+  call assert_equal(getcompletiontype('dummy '), '')
+  call assert_equal(getcompletiontype('cd '), 'dir_in_path')
+  call assert_equal(getcompletiontype('let v:n'), 'var')
+  call assert_equal(getcompletiontype('call tag'), 'function')
+  call assert_equal(getcompletiontype('help '), 'help')
+endfunc
+
 func Test_multibyte_expression()
   " Get a dialog in the GUI
   CheckNotGui
@@ -4589,14 +4600,4 @@
   set wildcharm=0
 endfunc
 
-func Test_getcmdcompltype_with_pat()
-  call assert_fails('call getcmdcompltype({})', 'E1174:')
-  call assert_equal(getcmdcompltype(''), 'command')
-  call assert_equal(getcmdcompltype('dummy '), '')
-  call assert_equal(getcmdcompltype('cd '), 'dir_in_path')
-  call assert_equal(getcmdcompltype('let v:n'), 'var')
-  call assert_equal(getcmdcompltype('call tag'), 'function')
-  call assert_equal(getcmdcompltype('help '), 'help')
-endfunc
-
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index a4545da..3f0b661 100644
--- a/src/version.c
+++ b/src/version.c
@@ -720,6 +720,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1509,
+/**/
     1508,
 /**/
     1507,
