Files
AILang/examples/test_22b2_missing_constraint_subclass.ail.json
T

54 lines
1.4 KiB
JSON

{
"schema": "ailang/v0",
"name": "test_22b2_missing_constraint_subclass",
"imports": [],
"defs": [
{
"kind": "class", "name": "Eq", "param": "a",
"methods": [{
"name": "eq",
"type": {
"k": "fn",
"params": [{ "k": "var", "name": "a" }, { "k": "var", "name": "a" }],
"ret": { "k": "con", "name": "Bool" }, "effects": []
}
}]
},
{
"kind": "class", "name": "Ord", "param": "a",
"superclass": { "class": "Eq", "type": "a" },
"methods": [{
"name": "lt",
"type": {
"k": "fn",
"params": [{ "k": "var", "name": "a" }, { "k": "var", "name": "a" }],
"ret": { "k": "con", "name": "Bool" }, "effects": []
}
}]
},
{
"kind": "fn",
"name": "needs_ord_but_only_has_eq",
"type": {
"k": "forall",
"vars": ["a"],
"constraints": [
{ "class": "Eq", "type": { "k": "var", "name": "a" } }
],
"body": {
"k": "fn",
"params": [{ "k": "var", "name": "a" }, { "k": "var", "name": "a" }],
"ret": { "k": "con", "name": "Bool" },
"effects": []
}
},
"params": ["x", "y"],
"body": {
"t": "app",
"fn": { "t": "var", "name": "lt" },
"args": [{ "t": "var", "name": "x" }, { "t": "var", "name": "y" }]
}
}
]
}