lcompilers / lpython

Python compiler
https://lpython.org/
Other
1.51k stars 164 forks source link

[Bug] Confusing Type Inference #2702

Open Vipul-Cariappa opened 6 months ago

Vipul-Cariappa commented 6 months ago

Type inference fails while converting between types and assigning. Example

>>> x: i32 = i32("123")
semantic error: Type mismatch in annotation-assignment, the types must be compatible
 --> input:1:1
  |
1 | x: i32 = i32("123")
  | ^            ^^^^^ type mismatch ('i32' and 'str')

Note: Please report unclear or confusing messages as bugs at
https://github.com/lcompilers/lpython/issues.

But it works while printing.

❯ lp
>>> print(i32("123"))
123

Can i32 function type cast?

If someone can suggest a more meaningful title for this issue, I would appreciate it.

certik commented 6 months ago

I think this might be a duplicated of https://github.com/lcompilers/lpython/issues/2554.

Also discussed at https://lfortran.zulipchat.com/#narrow/stream/311866-LPython/topic/Int.20to.20string.20conversion.