From 4be27c839c7088d26dfab0eb517fd775249c5ee8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Hamal=20Dvo=C5=99=C3=A1k?= <mordae@anilinux.org>
Date: Thu, 29 Apr 2021 13:53:41 +0200
Subject: [PATCH] Do not warn about unreachable partial code
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Jan Hamal Dvořák <mordae@anilinux.org>
---
 lib/Hikaru/Form.hs | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/Hikaru/Form.hs b/lib/Hikaru/Form.hs
index 713764c..9624adf 100644
--- a/lib/Hikaru/Form.hs
+++ b/lib/Hikaru/Form.hs
@@ -683,7 +683,10 @@ where
   placeholder :: (Monad m) => l -> ControlT 'InputFieldTag l o v m ()
   placeholder ph = ControlT do
     modify \s@ControlState{..} ->
-      s { csField = csField { fieldPlacehold = Just ph } }
+      s { csField = case csField of
+                      InputField{..} -> InputField{fieldPlacehold = Just ph, ..}
+                      SelectField{} -> error "BUG: Unreachable"
+        }
 
 
   -- |
@@ -724,7 +727,10 @@ where
       let opts' = case csValue of
                     Nothing  -> opts
                     Just val -> selectOptions val opts
-       in s { csField = csField { fieldOptions = opts' } }
+       in s { csField = case csField of
+                          SelectField{} -> SelectField{fieldOptions = opts', ..}
+                          InputField{} -> error "BUG: Unreachable"
+            }
 
 
   -- |
@@ -793,7 +799,9 @@ where
 
     modify \s@ControlState{csField} ->
       s { csValue = value'
-        , csField = csField { fieldValue = maybe "" toParam value' }
+        , csField = case csField of
+                      InputField{..} -> InputField{fieldValue = maybe "" toParam value', ..}
+                      SelectField{} -> error "BUG: Unreachable"
         }
 
 
-- 
GitLab