Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect overload analysis when the input is a "sum" type, but individual type would succeed #189

Open
Fuco1 opened this issue Feb 11, 2023 · 0 comments

Comments

@Fuco1
Copy link
Member

Fuco1 commented Feb 11, 2023

In case x is int, the first overload could be used, in case x is float, the second could be used. We can't determine the return type (it's int or float) but the call can definitely happen.

image

;; (a :: (and (function (int) int) (function (float) float)))
(defun a (x)
  "asd"
  (cond
   (nil (1+ x))
   ((integerp x) (1+ x))
   ((floatp x) (1+ x))
   (t (error "Impossible"))))


(integerp (a 1.0))
(stringp (a 1))


;; (a :: (and (function (int) int) (function (float) float)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant