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