@@ -11,7 +11,7 @@ import Prim hiding (Type)
11import Control.Alt ((<|>))
11import Control.Alt ((<|>))
12import Data.Array ((!!))
12import Data.Array ((!!))
13import Data.Array as Array
13import Data.Array as Array
14−import Data.Foldable (foldr)
14+import Data.Foldable (foldl, foldr)
15import Data.List (List, (:))
15import Data.List (List, (:))
16import Data.List as List
16import Data.List as List
17import Data.Maybe (Maybe(..), fromMaybe)
17import Data.Maybe (Maybe(..), fromMaybe)
@@ -244,8 +244,33 @@ mkChildInfo
244 (SearchResult { info: parentInfo, moduleName, name: resultName })
244 (SearchResult { info: parentInfo, moduleName, name: resultName })
245 (ChildDeclaration { info } )
245 (ChildDeclaration { info } )
247− | ChildDeclDataConstructor <- info.declType =
247+ | ChildDeclDataConstructor <- info.declType
248+ , DataResult { dataDeclType, typeArguments } <- parentInfo =
250+ parentTypeCtor :: Type
251+ parentTypeCtor = TypeConstructor
252+ $ QualifiedName { moduleNameParts:
253+ String.split (wrap ".") (unwrap moduleName)
254+ , name: resultName }
256+ parentTypeArgs :: Array Type
257+ parentTypeArgs = typeArguments <#> unwrap >>> \{ name } -> TypeVar name
260+ parentType = foldl TypeApp parentTypeCtor parentTypeArgs
262+ typeArrow :: Type -> Type
264+ TypeApp (TypeConstructor (QualifiedName { moduleNameParts: [ "Prim" ]
265+ , name: Identifier "Function" }))
267+ makeType :: Array Type -> Type
268+ makeType = foldr (\a b -> TypeApp (typeArrow a) b) parentType
248− info.arguments <#> \arguments -> DataConstructorResult { arguments }
270+ info.arguments <#> \arguments ->
271+ DataConstructorResult { dataDeclType
272+ , "type": makeType arguments
250 | ChildDeclTypeClassMember <- info.declType
275 | ChildDeclTypeClassMember <- info.declType
251 , TypeClassResult { arguments } <- parentInfo =
276 , TypeClassResult { arguments } <- parentInfo =