diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+1.7.5
+
+* Build against `dhall-1.38.0`, `tasty-1.4`, and `tasty-silver-3.2`
+
 1.7.4
 
 * Build against `dhall-1.37.0`
diff --git a/dhall-json.cabal b/dhall-json.cabal
--- a/dhall-json.cabal
+++ b/dhall-json.cabal
@@ -1,5 +1,5 @@
 Name: dhall-json
-Version: 1.7.4
+Version: 1.7.5
 Cabal-Version: >=1.10
 Build-Type: Simple
 Tested-With: GHC == 8.4.3, GHC == 8.6.1
@@ -44,7 +44,7 @@
         aeson-yaml                >= 1.1.0     && < 1.2 ,
         bytestring                                < 0.11,
         containers                >= 0.5.9     && < 0.7 ,
-        dhall                     >= 1.36.0    && < 1.38,
+        dhall                     >= 1.36.0    && < 1.39,
         exceptions                >= 0.8.3     && < 0.11,
         filepath                                  < 1.5 ,
         lens-family-core          >= 1.0.0     && < 2.2 ,
@@ -122,7 +122,7 @@
         bytestring         ,
         dhall              ,
         dhall-json         ,
-        tasty        <  1.4,
+        tasty        <  1.5,
         text               ,
         tasty-hunit  >= 0.2,
         tasty-silver >= 3.0
diff --git a/src/Dhall/JSON.hs b/src/Dhall/JSON.hs
--- a/src/Dhall/JSON.hs
+++ b/src/Dhall/JSON.hs
@@ -500,18 +500,18 @@
                     return (Aeson.toJSON (Dhall.Map.toMap a'))
         Core.App (Core.Field (Core.Union _) _) b -> loop b
         Core.Field (Core.Union _) (FA k) -> return (Aeson.toJSON k)
-        Core.Lam (Core.functionBindingAnnotation -> Core.Const Core.Type)
-            (Core.Lam (Core.functionBindingAnnotation ->
+        Core.Lam _ (Core.functionBindingAnnotation -> Core.Const Core.Type)
+            (Core.Lam _ (Core.functionBindingAnnotation ->
                 (Core.Record
-                    [ ("array" , Core.recordFieldValue -> Core.Pi _ (Core.App Core.List (V 0)) (V 1))
-                    , ("bool"  , Core.recordFieldValue -> Core.Pi _ Core.Bool (V 1))
+                    [ ("array" , Core.recordFieldValue -> Core.Pi _ _ (Core.App Core.List (V 0)) (V 1))
+                    , ("bool"  , Core.recordFieldValue -> Core.Pi _ _ Core.Bool (V 1))
                     , ("null"  , Core.recordFieldValue -> V 0)
-                    , ("number", Core.recordFieldValue -> Core.Pi _ Core.Double (V 1))
+                    , ("number", Core.recordFieldValue -> Core.Pi _ _ Core.Double (V 1))
                     , ("object", Core.recordFieldValue ->
-                        Core.Pi _ (Core.App Core.List (Core.Record
+                        Core.Pi _ _ (Core.App Core.List (Core.Record
                         [ ("mapKey", Core.recordFieldValue -> Core.Text)
                         , ("mapValue", Core.recordFieldValue -> V 0)])) (V 1))
-                    , ("string", Core.recordFieldValue -> Core.Pi _ Core.Text (V 1))
+                    , ("string", Core.recordFieldValue -> Core.Pi _ _ Core.Text (V 1))
                     ]
                 ))
                 value
@@ -542,20 +542,20 @@
                     outer _ = Left (Unsupported e)
 
                 outer value
-        Core.Lam (Core.functionBindingAnnotation -> Core.Const Core.Type)
-            (Core.Lam (Core.functionBindingAnnotation ->
+        Core.Lam _ (Core.functionBindingAnnotation -> Core.Const Core.Type)
+            (Core.Lam _ (Core.functionBindingAnnotation ->
                 (Core.Record
-                    [ ("array" , Core.recordFieldValue -> Core.Pi _ (Core.App Core.List (V 0)) (V 1))
-                    , ("bool"  , Core.recordFieldValue -> Core.Pi _ Core.Bool (V 1))
-                    , ("double", Core.recordFieldValue -> Core.Pi _ Core.Double (V 1))
-                    , ("integer", Core.recordFieldValue -> Core.Pi _ Core.Integer (V 1))
+                    [ ("array" , Core.recordFieldValue -> Core.Pi _ _ (Core.App Core.List (V 0)) (V 1))
+                    , ("bool"  , Core.recordFieldValue -> Core.Pi _ _ Core.Bool (V 1))
+                    , ("double", Core.recordFieldValue -> Core.Pi _ _ Core.Double (V 1))
+                    , ("integer", Core.recordFieldValue -> Core.Pi _ _ Core.Integer (V 1))
                     , ("null"  , Core.recordFieldValue -> V 0)
                     , ("object", Core.recordFieldValue ->
-                        Core.Pi _ (Core.App Core.List (Core.Record
+                        Core.Pi _ _ (Core.App Core.List (Core.Record
                         [ ("mapKey", Core.recordFieldValue -> Core.Text)
                         , ("mapValue", Core.recordFieldValue -> V 0)
                         ])) (V 1))
-                    , ("string", Core.recordFieldValue -> Core.Pi _ Core.Text (V 1))
+                    , ("string", Core.recordFieldValue -> Core.Pi _ _ Core.Text (V 1))
                     ]
                 ))
                 value
@@ -728,11 +728,11 @@
            case we do *not* want to perform this rewrite since it will
            interfere with decoding the value.
         -}
-        Core.Lam a b ->
-            Core.Lam a b
+        Core.Lam cs a b ->
+            Core.Lam cs a b
 
-        Core.Pi a b c ->
-            Core.Pi a b' c'
+        Core.Pi cs a b c ->
+            Core.Pi cs a b' c'
           where
             b' = loop b
             c' = loop c
@@ -988,20 +988,20 @@
           where
             a' = fmap (fmap loop) a
 
-        Core.Combine a b c ->
-            Core.Combine a b' c'
+        Core.Combine cs a b c ->
+            Core.Combine cs a b' c'
           where
             b' = loop b
             c' = loop c
 
-        Core.CombineTypes a b ->
-            Core.CombineTypes a' b'
+        Core.CombineTypes cs a b ->
+            Core.CombineTypes cs a' b'
           where
             a' = loop a
             b' = loop b
 
-        Core.Prefer a b c ->
-            Core.Prefer a b' c'
+        Core.Prefer cs a b c ->
+            Core.Prefer cs a b' c'
           where
             b' = loop b
             c' = loop c
diff --git a/src/Dhall/JSONToDhall.hs b/src/Dhall/JSONToDhall.hs
--- a/src/Dhall/JSONToDhall.hs
+++ b/src/Dhall/JSONToDhall.hs
@@ -768,20 +768,20 @@
 schemaToDhallType (Record r) = recordSchemaToDhallType r
 schemaToDhallType (Union u) = unionSchemaToDhallType u
 schemaToDhallType ArbitraryJSON =
-    D.Pi "_" (D.Const D.Type)
-        (D.Pi "_"
+    D.Pi mempty "_" (D.Const D.Type)
+        (D.Pi mempty "_"
             (D.Record
-                [ ("array" , D.makeRecordField $ D.Pi "_" (D.App D.List (V 0)) (V 1))
-                , ("bool"  , D.makeRecordField $ D.Pi "_" D.Bool (V 1))
-                , ("double", D.makeRecordField $ D.Pi "_" D.Double (V 1))
-                , ("integer", D.makeRecordField $ D.Pi "_" D.Integer (V 1))
+                [ ("array" , D.makeRecordField $ D.Pi mempty "_" (D.App D.List (V 0)) (V 1))
+                , ("bool"  , D.makeRecordField $ D.Pi mempty "_" D.Bool (V 1))
+                , ("double", D.makeRecordField $ D.Pi mempty "_" D.Double (V 1))
+                , ("integer", D.makeRecordField $ D.Pi mempty "_" D.Integer (V 1))
                 , ("null"  , D.makeRecordField $ V 0)
                 , ("object", D.makeRecordField $
-                    D.Pi "_" (D.App D.List (D.Record
+                    D.Pi mempty "_" (D.App D.List (D.Record
                         [ ("mapKey", D.makeRecordField D.Text)
                         , ("mapValue", D.makeRecordField $ V 0)
                         ])) (V 1))
-                , ("string", D.makeRecordField $ D.Pi "_" D.Text (V 1))
+                , ("string", D.makeRecordField $ D.Pi mempty "_" D.Text (V 1))
                 ]
             )
             (V 1)
@@ -942,19 +942,19 @@
     -- Arbitrary JSON ~> https://prelude.dhall-lang.org/JSON/Type (< v13.0.0)
     loop
       _
-      (D.Pi _ (D.Const D.Type)
-          (D.Pi _
+      (D.Pi _ _ (D.Const D.Type)
+          (D.Pi _ _
               (D.Record
-                  [ ("array" , D.recordFieldValue -> D.Pi _ (D.App D.List (V 0)) (V 1))
-                  , ("bool"  , D.recordFieldValue -> D.Pi _ D.Bool (V 1))
+                  [ ("array" , D.recordFieldValue -> D.Pi _ _ (D.App D.List (V 0)) (V 1))
+                  , ("bool"  , D.recordFieldValue -> D.Pi _ _ D.Bool (V 1))
                   , ("null"  , D.recordFieldValue -> V 0)
-                  , ("number", D.recordFieldValue -> D.Pi _ D.Double (V 1))
+                  , ("number", D.recordFieldValue -> D.Pi _ _ D.Double (V 1))
                   , ("object", D.recordFieldValue ->
-                      D.Pi _ (D.App D.List (D.Record
+                      D.Pi _ _ (D.App D.List (D.Record
                       [ ("mapKey", D.recordFieldValue -> D.Text)
                       , ("mapValue", D.recordFieldValue -> V 0)
                       ])) (V 1))
-                  , ("string", D.recordFieldValue -> D.Pi _ D.Text (V 1))
+                  , ("string", D.recordFieldValue -> D.Pi _ _ D.Text (V 1))
                   ]
               )
               (V 1)
@@ -1007,19 +1007,19 @@
                   D.Field "json" $ FA "null"
 
           let result =
-                D.Lam (D.makeFunctionBinding "JSON" (D.Const D.Type))
-                    (D.Lam (D.makeFunctionBinding "json"
+                D.Lam mempty (D.makeFunctionBinding "JSON" (D.Const D.Type))
+                    (D.Lam mempty (D.makeFunctionBinding "json"
                         (D.Record
-                            [ ("array" , D.makeRecordField $ D.Pi "_" (D.App D.List "JSON") "JSON")
-                            , ("bool"  , D.makeRecordField $ D.Pi "_" D.Bool "JSON")
+                            [ ("array" , D.makeRecordField $ D.Pi mempty "_" (D.App D.List "JSON") "JSON")
+                            , ("bool"  , D.makeRecordField $ D.Pi mempty "_" D.Bool "JSON")
                             , ("null"  , D.makeRecordField "JSON")
-                            , ("number", D.makeRecordField $ D.Pi "_" D.Double "JSON")
+                            , ("number", D.makeRecordField $ D.Pi mempty "_" D.Double "JSON")
                             , ("object", D.makeRecordField $
-                                D.Pi "_" (D.App D.List (D.Record
+                                D.Pi mempty "_" (D.App D.List (D.Record
                                     [ ("mapKey", D.makeRecordField D.Text)
                                     , ("mapValue", D.makeRecordField "JSON")
                                     ])) "JSON")
-                            , ("string", D.makeRecordField $ D.Pi "_" D.Text "JSON")
+                            , ("string", D.makeRecordField $ D.Pi mempty "_" D.Text "JSON")
                             ]
                         ))
                         (outer value)
@@ -1030,20 +1030,20 @@
     -- Arbitrary JSON ~> https://prelude.dhall-lang.org/JSON/Type (v13.0.0 <=)
     loop
       _
-      (D.Pi _ (D.Const D.Type)
-          (D.Pi _
+      (D.Pi _ _ (D.Const D.Type)
+          (D.Pi _ _
               (D.Record
-                  [ ("array" , D.recordFieldValue -> D.Pi _ (D.App D.List (V 0)) (V 1))
-                  , ("bool"  , D.recordFieldValue -> D.Pi _ D.Bool (V 1))
-                  , ("double", D.recordFieldValue -> D.Pi _ D.Double (V 1))
-                  , ("integer", D.recordFieldValue -> D.Pi _ D.Integer (V 1))
+                  [ ("array" , D.recordFieldValue -> D.Pi _ _ (D.App D.List (V 0)) (V 1))
+                  , ("bool"  , D.recordFieldValue -> D.Pi _ _ D.Bool (V 1))
+                  , ("double", D.recordFieldValue -> D.Pi _ _ D.Double (V 1))
+                  , ("integer", D.recordFieldValue -> D.Pi _ _ D.Integer (V 1))
                   , ("null"  , D.recordFieldValue -> V 0)
                   , ("object", D.recordFieldValue ->
-                      D.Pi _ (D.App D.List (D.Record
+                      D.Pi _ _ (D.App D.List (D.Record
                         [ ("mapKey", D.recordFieldValue -> D.Text)
                         , ("mapValue", D.recordFieldValue -> V 0)
                         ])) (V 1))
-                  , ("string", D.recordFieldValue -> D.Pi _ D.Text (V 1))
+                  , ("string", D.recordFieldValue -> D.Pi _ _ D.Text (V 1))
                   ]
               )
               (V 1)
@@ -1097,19 +1097,19 @@
                   D.Field "json" (FA "null")
 
           let result =
-                D.Lam (D.makeFunctionBinding "JSON" (D.Const D.Type))
-                    (D.Lam (D.makeFunctionBinding "json"
+                D.Lam mempty (D.makeFunctionBinding "JSON" (D.Const D.Type))
+                    (D.Lam mempty (D.makeFunctionBinding "json"
                         (D.Record
-                            [ ("array" , D.makeRecordField $ D.Pi "_" (D.App D.List "JSON") "JSON")
-                            , ("bool"  , D.makeRecordField $ D.Pi "_" D.Bool "JSON")
-                            , ("double", D.makeRecordField $ D.Pi "_" D.Double "JSON")
-                            , ("integer", D.makeRecordField $ D.Pi "_" D.Integer "JSON")
+                            [ ("array" , D.makeRecordField $ D.Pi mempty "_" (D.App D.List "JSON") "JSON")
+                            , ("bool"  , D.makeRecordField $ D.Pi mempty "_" D.Bool "JSON")
+                            , ("double", D.makeRecordField $ D.Pi mempty "_" D.Double "JSON")
+                            , ("integer", D.makeRecordField $ D.Pi mempty "_" D.Integer "JSON")
                             , ("null"  , D.makeRecordField "JSON")
-                            , ("object", D.makeRecordField $ D.Pi "_"
+                            , ("object", D.makeRecordField $ D.Pi mempty "_"
                                 (D.App D.List (D.Record
                                     [ ("mapKey", D.makeRecordField D.Text)
                                     , ("mapValue", D.makeRecordField "JSON")])) "JSON")
-                            , ("string", D.makeRecordField $ D.Pi "_" D.Text "JSON")
+                            , ("string", D.makeRecordField $ D.Pi mempty "_" D.Text "JSON")
                             ]
                         ))
                         (outer value)
