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

Indicate expected versus actual types in type errors #3399

Open
i-am-the-slime opened this issue Jul 10, 2018 · 10 comments
Open

Indicate expected versus actual types in type errors #3399

i-am-the-slime opened this issue Jul 10, 2018 · 10 comments

Comments

@i-am-the-slime
Copy link
Contributor

I never know what the compiler wants from me when it says:

Could not match type A with type B

Which one does it expect? Which one is the one I supply?
For people like me it's not always obvious which type I am supplying.
I don't really see any downside to changing this to:

Could not match expected type A with actual type B

I don't know about any tooling that might depend on this exact message.

@i-am-the-slime
Copy link
Contributor Author

I think it could be even nicer if the compiler could insert a little (?helpme (thingOfTheWrongType)) and suggest possible fixes but that's most probably out of scope.

@garyb
Copy link
Member

garyb commented Jul 10, 2018

We've had issues about this previously, and did attempt to change the error to work this way... but unfortunately the type checker isn't able to know for sure whether A or B is the type that is actually desired.

@hdgarrood
Copy link
Contributor

Yeah, I’m certain there is already an issue for exactly this, possibly even open.

@i-am-the-slime
Copy link
Contributor Author

I see. Sorry guys!

@i-am-the-slime
Copy link
Contributor Author

Actually maybe we could make that explicit in the message? I remember trying to find the order by making some minimal example. Since there is no order this could be misleading. I know there is nothing in the message suggests that there is an order but still. The message could have a little "in no particular order" disclaimer.

@hdgarrood
Copy link
Contributor

Previously: #3111 #1577 #1583

@hdgarrood
Copy link
Contributor

Actually sorry, I take back what I said before: while we do have discussion which notes that identifying expected vs actual types would be useful, there doesn’t appear to be an open issue for actually doing so.

@hdgarrood
Copy link
Contributor

So we might want to reopen this perhaps?

@JordanMartinez
Copy link
Contributor

I think this should be reopened. At the very least, it would track that the issue does exist.

@hdgarrood hdgarrood reopened this Jul 25, 2019
@hdgarrood hdgarrood changed the title Improve error message for non-matching types Indicate expected versus actual types in type errors Jul 25, 2019
@ajnsit
Copy link

ajnsit commented Aug 19, 2021

I wrote this on discord, but thought I would add it as a suggestion here as well -

Looking at the error message in this issue #1577 - Some very useful information is partly present but buried - "checking that expression 4 has type String". Is it possible to put that information up front?

For example the error messages could say something like -

Error occurred while checking that
expression
    4
  has type
    String

Could not match type
    Int
  with type
    String
while trying to match type Int
  with type String

in value declaration foo

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

5 participants