diff --git a/src/nvim/decoration.c b/src/nvim/decoration.c
index 7cce6b3ad175fea49ffbc213af7c86eb074b4a4f..5224a07fd9bc84cbbc5f3041f7a24306b105a38a 100644
--- a/src/nvim/decoration.c
+++ b/src/nvim/decoration.c
@@ -975,19 +975,19 @@ void decor_to_dict_legacy(Dictionary *dict, DecorInline decor, bool hl_name)
   if (sh_hl.hl_id) {
     PUT(*dict, "hl_group", hl_group_name(sh_hl.hl_id, hl_name));
     PUT(*dict, "hl_eol", BOOLEAN_OBJ(sh_hl.flags & kSHHlEol));
-    if (sh_hl.flags & kSHConceal) {
-      char buf[MAX_SCHAR_SIZE];
-      schar_get(buf, sh_hl.text[0]);
-      PUT(*dict, "conceal", CSTR_TO_OBJ(buf));
-    }
+    priority = sh_hl.priority;
+  }
 
-    if (sh_hl.flags & kSHSpellOn) {
-      PUT(*dict, "spell", BOOLEAN_OBJ(true));
-    } else if (sh_hl.flags & kSHSpellOff) {
-      PUT(*dict, "spell", BOOLEAN_OBJ(false));
-    }
+  if (sh_hl.flags & kSHConceal) {
+    char buf[MAX_SCHAR_SIZE];
+    schar_get(buf, sh_hl.text[0]);
+    PUT(*dict, "conceal", CSTR_TO_OBJ(buf));
+  }
 
-    priority = sh_hl.priority;
+  if (sh_hl.flags & kSHSpellOn) {
+    PUT(*dict, "spell", BOOLEAN_OBJ(true));
+  } else if (sh_hl.flags & kSHSpellOff) {
+    PUT(*dict, "spell", BOOLEAN_OBJ(false));
   }
 
   if (sh_hl.flags & kSHUIWatched) {
diff --git a/test/functional/api/extmark_spec.lua b/test/functional/api/extmark_spec.lua
index 19ad26fa861b1d80239789e7aaa0fc82aa829cb4..cb16f49e7cd77d6c01d43989d3fdd6f5ba7b25e7 100644
--- a/test/functional/api/extmark_spec.lua
+++ b/test/functional/api/extmark_spec.lua
@@ -1639,6 +1639,40 @@ describe('API/extmarks', function()
         right_gravity = true,
       },
     }, get_extmark_by_id(ns, marks[3], { details = true }))
+    set_extmark(ns, marks[4], 0, 0, {
+      end_col = 1,
+      conceal = 'a',
+      spell = true,
+    })
+    eq({
+      0,
+      0,
+      {
+        conceal = 'a',
+        end_col = 1,
+        end_right_gravity = false,
+        end_row = 0,
+        ns_id = 1,
+        right_gravity = true,
+        spell = true,
+      },
+    }, get_extmark_by_id(ns, marks[4], { details = true }))
+    set_extmark(ns, marks[5], 0, 0, {
+      end_col = 1,
+      spell = false,
+    })
+    eq({
+      0,
+      0,
+      {
+        end_col = 1,
+        end_right_gravity = false,
+        end_row = 0,
+        ns_id = 1,
+        right_gravity = true,
+        spell = false,
+      },
+    }, get_extmark_by_id(ns, marks[5], { details = true }))
     api.nvim_buf_clear_namespace(0, ns, 0, -1)
     -- legacy sign mark includes sign name
     command('sign define sign1 text=s1 texthl=Title linehl=LineNR numhl=Normal culhl=CursorLine')