diff --git a/src/errors.h b/src/errors.h
index 7344e2e..5a59f7f 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -3422,4 +3422,8 @@
 	INIT(= N_("E1348: Member \"%s\" of interface \"%s\" not implemented"));
 EXTERN char e_function_str_of_interface_str_not_implemented[]
 	INIT(= N_("E1349: Function \"%s\" of interface \"%s\" not implemented"));
+EXTERN char e_duplicate_implements[]
+	INIT(= N_("E1350: Duplicate \"implements\""));
+EXTERN char e_duplicate_interface_after_implements_str[]
+	INIT(= N_("E1351: Duplicate interface after \"implements\": %s"));
 #endif
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 2f2f62a..ef9ef55 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -627,6 +627,19 @@
           echo nr
         enddef
       endclass
+
+      interface Another
+        this.member: string
+      endinterface
+
+      class SomeImpl implements Some, Another
+        this.member = 'abc'
+        static count: number
+        def Method(nr: number)
+          echo nr
+        enddef
+      endclass
+
   END
   v9.CheckScriptSuccess(lines)
 
@@ -635,6 +648,32 @@
 
       interface Some
         static counter: number
+      endinterface
+
+      class SomeImpl implements Some implements Some
+        static count: number
+      endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1350:')
+
+  lines =<< trim END
+      vim9script
+
+      interface Some
+        static counter: number
+      endinterface
+
+      class SomeImpl implements Some, Some
+        static count: number
+      endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1351: Duplicate interface after "implements": Some')
+
+  lines =<< trim END
+      vim9script
+
+      interface Some
+        static counter: number
         def Method(nr: number)
       endinterface
 
diff --git a/src/version.c b/src/version.c
index f30cdfd..d2efc12 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1157,
+/**/
     1156,
 /**/
     1155,
diff --git a/src/vim9class.c b/src/vim9class.c
index 92e3c63..4a8dd7c 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -245,22 +245,45 @@
 	//    specifies SomeInterface
 	if (STRNCMP(arg, "implements", 10) == 0 && IS_WHITE_OR_NUL(arg[10]))
 	{
+	    if (ga_impl.ga_len > 0)
+	    {
+		emsg(_(e_duplicate_implements));
+		goto early_ret;
+	    }
 	    arg = skipwhite(arg + 10);
-	    char_u *impl_end = find_name_end(arg, NULL, NULL, FNE_CHECK_START);
-	    if (!IS_WHITE_OR_NUL(*impl_end))
+
+	    for (;;)
 	    {
-		semsg(_(e_white_space_required_after_name_str), arg);
-		goto early_ret;
+		char_u *impl_end = find_name_end(arg, NULL, NULL,
+							      FNE_CHECK_START);
+		if (!IS_WHITE_OR_NUL(*impl_end) && *impl_end != ',')
+		{
+		    semsg(_(e_white_space_required_after_name_str), arg);
+		    goto early_ret;
+		}
+		char_u *iname = vim_strnsave(arg, impl_end - arg);
+		if (iname == NULL)
+		    goto early_ret;
+		for (int i = 0; i < ga_impl.ga_len; ++i)
+		    if (STRCMP(((char_u **)ga_impl.ga_data)[i], iname) == 0)
+		    {
+			semsg(_(e_duplicate_interface_after_implements_str),
+									iname);
+			vim_free(iname);
+			goto early_ret;
+		    }
+		if (ga_add_string(&ga_impl, iname) == FAIL)
+		{
+		    vim_free(iname);
+		    goto early_ret;
+		}
+		if (*impl_end != ',')
+		{
+		    arg = skipwhite(impl_end);
+		    break;
+		}
+		arg = skipwhite(impl_end + 1);
 	    }
-	    char_u *iname = vim_strnsave(arg, impl_end - arg);
-	    if (iname == NULL)
-		goto early_ret;
-	    if (ga_add_string(&ga_impl, iname) == FAIL)
-	    {
-		vim_free(iname);
-		goto early_ret;
-	    }
-	    arg = skipwhite(impl_end);
 	}
 	else
 	{
