packages feed

purescript-0.14.4: tests/purs/failing/3701.purs

-- @shouldFailWith TypesDoNotUnify
module Main where

import Prim.Row as Row

merge
  :: forall r1 r2 r3 r4
   . Row.Union r1 r2 r3
  => Row.Nub r3 r4
  => Record r1
  -> Record r2
  -> Record r4
merge r = merge r


type FooRow r =
  ( thing1 :: String
  , thing2 :: Int
  | r
  )

type AddedRow =
  ( thing3 :: String )

type AddedRow2 =
  ( thing1 :: String )

fooMerge :: forall addedRow.
  Row.Union addedRow (FooRow ()) (FooRow addedRow) =>
  Row.Nub (FooRow addedRow) (FooRow addedRow) =>
  Record addedRow ->
  Record (FooRow addedRow)
fooMerge addedRow = merge addedRow {thing1: "foo", thing2: 1}

foo1 :: Record (FooRow (AddedRow))
foo1 = fooMerge { thing3: "foo" }

foo2 :: Record (FooRow (AddedRow2))
foo2 = fooMerge { thing1: "foo" }