@@ -245,8 +245,11 @@ infer' v@(Literal (BooleanLiteral _)) = return $ TypedValue True v tyBoolean
245infer' (Literal (ArrayLiteral vals)) = do
245infer' (Literal (ArrayLiteral vals)) = do
246 ts <- traverse infer vals
246 ts <- traverse infer vals
247 els <- freshType
247 els <- freshType
248+ ts' <- forM ts $ \(TypedValue ch val t) -> do
249+ (val', t') <- instantiatePolyTypeWithUnknowns val t
248− forM_ ts $ \(TypedValue _ _ t) -> unifyTypes els t
250+ unifyTypes els t'
251+ return (TypedValue ch val' t')
249− return $ TypedValue True (Literal (ArrayLiteral ts)) (TypeApp tyArray els)
252+ return $ TypedValue True (Literal (ArrayLiteral ts')) (TypeApp tyArray els)
250infer' (Literal (ObjectLiteral ps)) = do
253infer' (Literal (ObjectLiteral ps)) = do
251 ensureNoDuplicateProperties ps
254 ensureNoDuplicateProperties ps
252 ts <- traverse (infer . snd) ps
255 ts <- traverse (infer . snd) ps