deeplang-org / deeplang-type-system

DeepLang type system based on Ocaml
7 stars 1 forks source link

常数literal无法赋值给U32/U64变量 #68

Open MMZK1526 opened 2 months ago

MMZK1526 commented 2 months ago

例如: fun main() { let x: U32 = 3; -- [Pattern Error] declared type doesn't match with the given expr }

三种解决方案:

  1. 允许unsigned和signed类型自动转换(简单动一下semantic checker)
  2. 引入新的格式表示unsigned literal,例如区分1和1U(简单动一下parser)
  3. 一般不允许自动转换,但是当识别到literal的时候,可以根据情况判断是不是unsigned(Haskell的做法,但是最复杂)