Viktor Söderqvist
Viktor Söderqvist
Yeah, I think we are relying on an undocumented `eep:open/5` which might have been removed. I think @gomoripeti has been involved in this part both in Gradualizer and in OTP....
Thx Peti. Interestingly, we already conditionally use `eep:open/5` or `eep:open/1`. See https://github.com/josefs/Gradualizer/blob/master/src/gradualizer_file_utils.erl#L60 @aleklisi which version of Gradualizer are you using?
OK, 0.1.3 doesn't have this logic. (See https://github.com/josefs/Gradualizer/blob/0.1.3/src/gradualizer_file_utils.erl#L35)
So you found another bug. Thanks for the report. Timeout looks like there is an infinite loop somewhere.
Great investigation! I think "which is too precise to be statically checked" is a really strange error. In other cases, we accept type variables as any() and add some constraint...
Great, yes I agree about storing the constraints now and solving them later. (I don't know if they can be solved in a sound manner though, but that's a different...
> the refined type of a char is an integer range Can we turn it into a char range? Or is it normalized here? IIRC, normalize turns chars into integers,...
OK, good findings! Why did you close #411?
It seems that throw has a spec like `-spec throw(Any) when Any :: any().`. We can probably test it using another function with a type like this, so we don't...
> The question is: after how many fun clauses should we switch from checking against `foo(bar) -> bar` to `foo(list()) -> baz | qux`? Well, once our fun clauses exhaust...