{ "schema": "ailang/v0", "name": "test_22b3_shadow_class_method", "imports": [], "defs": [ { "kind": "class", "name": "Show", "param": "a", "methods": [{ "name": "show", "type": { "k": "fn", "params": [{ "k": "var", "name": "a" }], "ret": { "k": "con", "name": "Str" }, "effects": [] } }] }, { "kind": "class", "name": "Foo", "param": "a", "methods": [{ "name": "foo", "type": { "k": "fn", "params": [{ "k": "var", "name": "a" }], "ret": { "k": "con", "name": "Str" }, "effects": [] } }] }, { "kind": "instance", "class": "Show", "type": { "k": "con", "name": "Int" }, "methods": [{ "name": "show", "body": { "t": "lam", "params": ["x"], "paramTypes": [{ "k": "var", "name": "a" }], "retType": { "k": "con", "name": "Str" }, "body": { "t": "lit", "lit": { "kind": "str", "value": "s" } } } }] }, { "kind": "instance", "class": "Foo", "type": { "k": "con", "name": "Int" }, "methods": [{ "name": "foo", "body": { "t": "lam", "params": ["x"], "paramTypes": [{ "k": "var", "name": "a" }], "retType": { "k": "con", "name": "Str" }, "body": { "t": "lit", "lit": { "kind": "str", "value": "f" } } } }] }, { "kind": "fn", "name": "main", "type": { "k": "fn", "params": [], "ret": { "k": "con", "name": "Str" }, "effects": [] }, "params": [], "body": { "t": "let", "name": "_t", "value": { "t": "app", "fn": { "t": "var", "name": "show" }, "args": [{ "t": "lit", "lit": { "kind": "int", "value": 5 } }] }, "body": { "t": "let", "name": "show", "value": { "t": "lit", "lit": { "kind": "str", "value": "shadow" } }, "body": { "t": "let", "name": "_u", "value": { "t": "var", "name": "show" }, "body": { "t": "app", "fn": { "t": "var", "name": "foo" }, "args": [{ "t": "lit", "lit": { "kind": "int", "value": 7 } }] } } } } } ] }