This commit also simplifies the method check_pi in the type_checker and type_inferer.
It also fixes process_meta_app in the elaborator.
The problem was in the method process_meta_app and process_meta_inst.
They were processing convertability constrains as equality constraints.
For example, process_meta_app would handle
ctx |- Type << ?f b
as
ctx |- Type =:= ?f b
This is not correct because a ?f that returns (Type U) for b satisfies the first but not the second.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
|
||
|---|---|---|
| .. | ||
| CMakeLists.txt | ||
| environment.cpp | ||
| expr.cpp | ||
| free_vars.cpp | ||
| instantiate.cpp | ||
| level.cpp | ||
| metavar.cpp | ||
| normalizer.cpp | ||
| occurs.cpp | ||
| replace.cpp | ||
| threads.cpp | ||
| type_checker.cpp | ||