@@ -283,14 +283,22 @@ destructHelp path (A.At region pattern) revDs =
283 Can.PInt _ ->
283 Can.PInt _ ->
284 pure revDs
284 pure revDs
286− Can.PCtor _ _ _ _ _ args ->
286+ Can.PCtor _ _ (Can.Union _ _ _ opts) _ _ args ->
287− case path of
287+ case args of
288− Opt.Root _ ->
288+ [Can.PatternCtorArg i _ arg] ->
289− foldM (destructCtorArg path) revDs args
289+ case opts of
290+ Can.Normal -> destructHelp (Opt.Index i path) arg revDs
291+ Can.Unbox -> destructHelp (Opt.Unbox path) arg revDs
292+ Can.Enum -> destructHelp (Opt.Index i path) arg revDs
297+ foldM (destructCtorArg path) revDs args
292− do name <- Names.generate
300+ do name <- Names.generate
293− foldM (destructCtorArg (Opt.Root name)) (Opt.Destructor name path : revDs) args
301+ foldM (destructCtorArg (Opt.Root name)) (Opt.Destructor name path : revDs) args
296destructTwo :: Opt.Path -> Can.Pattern -> Can.Pattern -> [Opt.Destructor] -> Names.Tracker [Opt.Destructor]
304destructTwo :: Opt.Path -> Can.Pattern -> Can.Pattern -> [Opt.Destructor] -> Names.Tracker [Opt.Destructor]