{"atom":"regression/data-dump-cluster","family":"regression","slug":"data-dump-cluster","header":{"atom":"regression/data-dump-cluster","kind":"whole-program — a minimal repro, not yet reduced to an atom","source":"curated"},"axes":null,"cols":null,"engines":["rakudo-2026.07","rakupp-3.14.0"],"kinds":["ref","pp"],"defFrom":"rakupp:t/regression/data-dump-cluster.raku","counts":{"a":1,"f":0,"d":0,"c":0,"r":0,"n":0},"files":["atoms/regression/data-dump-cluster.grid"],"records":[["0001","","# Regression: six general faults found by running Data::Dump's own suite\n# (the dist ends 9/9). Every expectation checked against Rakudo.\n\nmy $fails = 0;\nsub ck($got, $want, $desc) {\n    if $got eqv $want { say \"ok - $desc\" }\n    else { $fails++; say \"FAIL: $desc — {$got.raku} vs {$want.raku}\" }\n}\n\n# --- a quoted brace inside a string's code block ----------------------------\nsub sym($x) { $x }\nck \"A{sym('{')}B\", 'A{B', Q[a quoted open brace inside an interpolated call stays text];\nck \"A{sym('}')}B\", 'A}B', Q[and a close brace];\nck \"A{ '{' }B\", 'A{B', 'a bare quoted brace too';\n\n# --- reflection: methods, attributes, signatures ----------------------------\nclass E {\n    has $.public;\n    has Int $!private = 5;\n    method r(Str $a) { }\n    method !p(Int $x) { }\n}\nmy @names = E.^methods.map(*.name).sort;\nck ('public' ∈ @names), True, 'a public attr accessor is in ^methods';\nck ('p' ∈ @names || '!p' ∈ @names), False, 'a private method is not';\nck ('r' ∈ @names), True, 'declared methods are';\n\n# a method's reflected params carry the implicit invocant and *%_\nmy @ps = E.^lookup('r').signature.params;\nck @ps[0].invocant, True, 'params[0] is the invocant';\nck @ps[*-1].name, '%_', 'params[*-1] is the implicit *%_';\nck @ps[1 .. *-2].map(*.name).List, ('$a',), 'the middle is the real signature';\n\n# an Attribute stringifies as its declaration, not its guts\nmy $attr = E.^attributes.grep(*.name eq '$!private').head;\nck (~$attr).contains('$!private'), True, '~$attr names the attribute';\n\n# get_value on a TYPE object throws (Data::Dump relies on the try-chain)\nck (try { $attr.get_value(E); True } // False), False, 'get_value(TypeObject) dies';\n\n# --- .^methods/.^attributes on a builtin type answer, not die ---------------\nck (try { Any.^methods; True } // False), True, 'Any.^methods does not die';\n\n# --- .^can on a builtin value probes ----------------------------------------\nmy $m = 'hello world' ~~ /'o w'/;\nck (?$m.^can('orig')), True, 'a Match can orig';\nck (?$m.^can('nosuchmethod')), False, 'but not an invented name';\n\nsay $fails ?? \"\\n$fails FAILED\" !! \"\\nPASS\";\nexit $fails ?? 1 !! 0;","output ok - a quoted open brace inside an interpolated call stays text\nok - and a close brace\nok - a bare quoted brace too\nok - a public attr accessor is in ^methods\nok - a private method is not\nok - declared methods are\nok - params[0] is the invocant\nok - params[*-1] is the implicit *%_\nok - the middle is the real signature\nok - ~$attr names the attribute\nok - get_value(TypeObject) dies\nok - Any.^methods does not die\nok - a Match can orig\nok - but not an invented name\n\nPASS","a",["ok - a quoted open brace inside an interpolated call stays text …(16 lines)","ok - a quoted open brace inside an interpolated call stays text …(16 lines)"],0,[["budget","20s"]]]]}