diff --git a/src/misc1.c b/src/misc1.c
index 0898efb..90cf914 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -953,6 +953,17 @@
     return n;
 }
 
+// For overflow detection, add a digit safely to an int value.
+    static int
+vim_append_digit_int(int *value, int digit)
+{
+    int x = *value;
+    if (x > ((INT_MAX - digit) / 10))
+	return FAIL;
+    *value = x * 10 + digit;
+    return OK;
+}
+
 /*
  * Get a number from the user.
  * When "mouse_used" is not NULL allow using the mouse.
@@ -2824,17 +2835,6 @@
 #endif
 }
 
-// For overflow detection, add a digit safely to an int value.
-    int
-vim_append_digit_int(int *value, int digit)
-{
-    int x = *value;
-    if (x > ((INT_MAX - digit) / 10))
-	return FAIL;
-    *value = x * 10 + digit;
-    return OK;
-}
-
 // For overflow detection, add a digit safely to a long value.
     int
 vim_append_digit_long(long *value, int digit)
diff --git a/src/proto/misc1.pro b/src/proto/misc1.pro
index d64f961..1a053e3 100644
--- a/src/proto/misc1.pro
+++ b/src/proto/misc1.pro
@@ -53,7 +53,6 @@
 dict_T *get_v_event(save_v_event_T *sve);
 void restore_v_event(dict_T *v_event, save_v_event_T *sve);
 void may_trigger_modechanged(void);
-int vim_append_digit_int(int *value, int digit);
 int vim_append_digit_long(long *value, int digit);
 int trim_to_int(vimlong_T x);
 /* vim: set ft=c : */
diff --git a/src/proto/typval.pro b/src/proto/typval.pro
index 1edfeb4..b706183 100644
--- a/src/proto/typval.pro
+++ b/src/proto/typval.pro
@@ -53,7 +53,6 @@
 int check_for_list_or_dict_or_blob_or_string_arg(typval_T *args, int idx);
 int check_for_opt_buffer_or_dict_arg(typval_T *args, int idx);
 int check_for_object_arg(typval_T *args, int idx);
-int tv_class_alias(typval_T *tv);
 int check_for_class_or_typealias_args(typval_T *args, int idx);
 char_u *tv_get_string(typval_T *varp);
 char_u *tv_get_string_strict(typval_T *varp);
diff --git a/src/proto/userfunc.pro b/src/proto/userfunc.pro
index 32dac66..cdcf017 100644
--- a/src/proto/userfunc.pro
+++ b/src/proto/userfunc.pro
@@ -42,7 +42,6 @@
 int call_simple_func(char_u *funcname, size_t len, typval_T *rettv);
 char_u *printable_func_name(ufunc_T *fp);
 char_u *trans_function_name(char_u **pp, int *is_global, int skip, int flags);
-char_u *trans_function_name_ext(char_u **pp, int *is_global, int skip, int flags, funcdict_T *fdp, partial_T **partial, type_T **type, ufunc_T **ufunc);
 char_u *get_scriptlocal_funcname(char_u *funcname);
 char_u *alloc_printable_func_name(char_u *fname);
 char_u *save_function_name(char_u **name, int *is_global, int skip, int flags, funcdict_T *fudi);
diff --git a/src/proto/vim9class.pro b/src/proto/vim9class.pro
index c87fffb..7d11523 100644
--- a/src/proto/vim9class.pro
+++ b/src/proto/vim9class.pro
@@ -7,7 +7,6 @@
 type_T *oc_member_type(class_T *cl, int is_object, char_u *name, char_u *name_end, int *member_idx);
 type_T *oc_member_type_by_idx(class_T *cl, int is_object, int member_idx);
 void ex_enum(exarg_T *eap);
-void typealias_free(typealias_T *ta);
 void typealias_unref(typealias_T *ta);
 void ex_type(exarg_T *eap);
 int class_object_index(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int verbose);
diff --git a/src/typval.c b/src/typval.c
index 01ffef5..e57d898 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -1021,7 +1021,7 @@
 /*
  * Returns TRUE if "tv" is a type alias for a class
  */
-    int
+    static int
 tv_class_alias(typval_T *tv)
 {
     return tv->v_type == VAR_TYPEALIAS &&
diff --git a/src/userfunc.c b/src/userfunc.c
index 5d16710..5bf7e95 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -34,6 +34,7 @@
 static int func_free(ufunc_T *fp, int force);
 static char_u *untrans_function_name(char_u *name);
 static void handle_defer_one(funccall_T *funccal);
+static char_u *trans_function_name_ext(char_u **pp, int *is_global, int skip, int flags, funcdict_T *fdp, partial_T **partial, type_T **type, ufunc_T **ufunc);
 
     void
 func_init(void)
@@ -4266,7 +4267,7 @@
  * trans_function_name() with extra arguments.
  * "fdp", "partial", "type" and "ufunc" can be NULL.
  */
-    char_u *
+    static char_u *
 trans_function_name_ext(
     char_u	**pp,
     int		*is_global,
diff --git a/src/version.c b/src/version.c
index 90fc3b3..02e24d5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    818,
+/**/
     817,
 /**/
     816,
diff --git a/src/vim9class.c b/src/vim9class.c
index d8813c6..87b4d45 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -2646,7 +2646,7 @@
  * Type aliases (:type)
  */
 
-    void
+    static void
 typealias_free(typealias_T *ta)
 {
     // ta->ta_type is freed in clear_type_list()
