check_repl ["id": "RECEIVER-ANNOTATIONS", "name": "Receiver-dependent method signatures", "steps": [
["fn Array::push(\$v: \$self.value_type) { \$self = [\$v,\$self...] }; fn Array::push_many(\$v: \$self.value_type...) { \$self = [\$v.reverse...,\$self...] }; fn Array::pop(): \$self.value_type | () { if \$self.count == 0 { return () }; let \$v = \$self[0]; \$self = \$self[1..]; \$v }", "quiet", ""],
["let \$a: [Float] = []; \$a.push 1; \$a.push_many 2 3; echo \$a...", "output", "3.0 2.0 1.0"],
["\$a.push \"wrong\"", "error", "Expected Float, got String"],
["\$a.push_many 4 \"wrong\"", "error", "Expected Float, got String"],
["echo \$a...", "output", "3.0 2.0 1.0"],
["let \$bad: String = \$a.pop", "error", "Expected String"],
["echo \$a.pop \$a...", "output", "3.0 2.0 1.0"],
["echo \$a.pop \$a.pop \$a.pop", "output", "2.0 1.0 ()"],
["fn HashMap::put(\$k: \$self.key_type, \$v: \$self.value_type) { \$self[\$k] = \$v }; fn HashMap::get(\$k: \$self.key_type): \$self.value_type | () { \$self[\$k] }", "quiet", ""],
["let \$h: [String: Integer] = [:]; \$h.put \"x\" 1; echo (\$h.get \"x\") (\$h.get \"absent\")", "output", "1 ()"],
["\$h.put 2 3", "error", "Expected String, got Integer"],
["\$h.put \"x\" \"wrong\"", "error", "Expected Integer, got String"],
["echo \$h[\"x\"] \$h.key_type \$h.value_type", "output", "1 String Integer"],
["fn Array::accept(\$v: \$self.value_type): \$self.value_type { \$v }; let \$dynamic = [1]; let \$accept = `\$dynamic.accept; echo (\$accept 2)", "output", "2"],
["\$dynamic = [\"s\"]; echo (\$accept \"x\")", "output", "x"],
["\$accept 2", "error", "Expected String, got Integer"],
["echo \$dynamic...", "output", "s"],
["let \$typed: fn(String): String = `\$dynamic.accept; echo (\$typed \"typed\")", "output", "typed"],
["fn Array::accept(\$v: \$self.value_type): \$self.value_type { \"changed\" }; echo (\$accept \"original\")", "output", "original"],
["fn Array::bad(): \$self.value_type { \$self = []; return \"wrong\" }; let \$ints = [1]", "quiet", ""],
["\$ints.bad", "error", "Expected Integer, got String"],
["echo \$ints.count \$ints.value_type", "output", "0 any"],
["fn ordinary(\$v: \$self.value_type) {}", "error", "compatible collection method receiver"],
["echo (\$h.get \"x\")", "output", "1"]
], "exit": 0]