|
452 | 452 | error(missing_ty_var(_, _, TyV, _)), |
453 | 453 | TyV.var_name.name = "b"). |
454 | 454 |
|
| 455 | +test("\nmodule ModFoo\nsum Foo = MkFoo Bar\nopaque NotBar", [ ]) :- |
| 456 | + ty_def_opaque("NotBar", NotBarTyDef), |
| 457 | + ty_local_ref_("Bar", BarTyRef), |
| 458 | + ntuple([BarTyRef], MkFooProd), |
| 459 | + constr("MkFoo", MkFooProd, MkFooConstr), |
| 460 | + sum([MkFooConstr], FooTyBody), |
| 461 | + ty_def_body("Foo", FooTyBody, FooTyDef), |
| 462 | + mod("ModFoo", [NotBarTyDef, FooTyDef], ModFoo), |
| 463 | + comp_input([ModFoo], CompIn), |
| 464 | + catch( |
| 465 | + kind_check(CompIn, _Solution), |
| 466 | + error(missing_ty_ref(_, _, TyRef, _)), |
| 467 | + TyRef.local_ty_ref.ty_name.name = "Bar"). |
| 468 | + |
| 469 | +test("\nmodule ModFoo\nsum Foo = MkFoo Bar\nmodule ModBar\nopaque NotBar", [ ]) :- |
| 470 | + ty_def_opaque("NotBar", NotBarTyDef), |
| 471 | + mod("ModBar", [NotBarTyDef], ModBar), |
| 472 | + ty_foreign_ref_(["ModBar"], "Bar", BarTyRef), |
| 473 | + ntuple([BarTyRef], MkFooProd), |
| 474 | + constr("MkFoo", MkFooProd, MkFooConstr), |
| 475 | + sum([MkFooConstr], FooTyBody), |
| 476 | + ty_def_body("Foo", FooTyBody, FooTyDef), |
| 477 | + mod("ModFoo", [FooTyDef], ModFoo), |
| 478 | + comp_input([ModFoo, ModBar], CompIn), |
| 479 | + catch( |
| 480 | + kind_check(CompIn, _Solution), |
| 481 | + error(missing_ty_ref(_, _, TyRef, _)), |
| 482 | + TyRef.foreign_ty_ref.ty_name.name = "Bar"). |
| 483 | + |
| 484 | + print_solution(Solution). |
| 485 | + |
455 | 486 | :- end_tests(kind_check). |
456 | 487 |
|
457 | 488 | :- multifile prolog:message//1. |
|
0 commit comments