diff --git a/src/parser_yang.c b/src/parser_yang.c
index b47ef1b..31b7365 100644
--- a/src/parser_yang.c
+++ b/src/parser_yang.c
@@ -4285,8 +4285,6 @@
         d_dflts = &d_del->dflts;
         d_musts = &d_del->musts;
         d_flags = &d_del->flags;
-        d_min = &d_del->min;
-        d_max = &d_del->max;
         break;
     default:
         assert(0);
@@ -4309,6 +4307,7 @@
         case YANG_CONFIG:
             switch (dev_mod) {
             case LYS_DEV_NOT_SUPPORTED:
+            case LYS_DEV_DELETE:
                 LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INDEV, ly_devmod2str(dev_mod), ly_stmt2str(kw));
                 return LY_EVALID;
             default:
@@ -4332,6 +4331,7 @@
         case YANG_MANDATORY:
             switch (dev_mod) {
             case LYS_DEV_NOT_SUPPORTED:
+            case LYS_DEV_DELETE:
                 LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INDEV, ly_devmod2str(dev_mod), ly_stmt2str(kw));
                 return LY_EVALID;
             default:
@@ -4342,6 +4342,7 @@
         case YANG_MAX_ELEMENTS:
             switch (dev_mod) {
             case LYS_DEV_NOT_SUPPORTED:
+            case LYS_DEV_DELETE:
                 LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INDEV, ly_devmod2str(dev_mod), ly_stmt2str(kw));
                 return LY_EVALID;
             default:
@@ -4352,6 +4353,7 @@
         case YANG_MIN_ELEMENTS:
             switch (dev_mod) {
             case LYS_DEV_NOT_SUPPORTED:
+            case LYS_DEV_DELETE:
                 LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INDEV, ly_devmod2str(dev_mod), ly_stmt2str(kw));
                 return LY_EVALID;
             default:
@@ -4362,6 +4364,7 @@
         case YANG_MUST:
             switch (dev_mod) {
             case LYS_DEV_NOT_SUPPORTED:
+            case LYS_DEV_REPLACE:
                 LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INDEV, ly_devmod2str(dev_mod), ly_stmt2str(kw));
                 return LY_EVALID;
             default:
diff --git a/src/tree_schema.h b/src/tree_schema.h
index c780078..1b33060 100644
--- a/src/tree_schema.h
+++ b/src/tree_schema.h
@@ -364,8 +364,6 @@
     const char **uniques;            /**< list of uniques specifications (NULL-terminated) */
     const char **dflts;              /**< list of default values (NULL-terminated) */
     uint16_t flags;                  /**< [schema node flags](@ref snodeflags) */
-    uint32_t min;                    /**< min-elements constraint */
-    uint32_t max;                    /**< max-elements constraint, 0 means unbounded */
 };
 
 struct lysp_deviate_rpl {
