🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm
Set by lizmat on 8 June 2022.
00:00 reportable6 left 00:02 reportable6 joined 06:00 reportable6 left, reportable6 joined 06:09 codesections left 06:11 codesections joined 09:24 ab5tract joined
Geth rakudo/main: 9db0bc973c | (Brian Duggan)++ (committed using GitHub Web editor) | 7 files
RakuAST: implement recursive regexes

This adds RakuAST support for the recursive regex token, <~~>.
09:59 gfldex left 10:00 gfldex joined
lizmat nine: I'm looking at making: sub () { $^a } fail properly at compile time 10:39
it looks like I need a way to ask $*BLOCK whether it has seen a real signature
when the signature is parsed, it is already "attach"ed to the $*BLOCK 10:40
I just don't see a way to introspect that
nine Wait, $*BLOCK is only known by the grammar and actions. But surely such a check should be done by the node at CHECK time? 10:53
lizmat hmmm... I guess I should learn that CHECK time is not too late to do a compile time error, right ? 10:57
nine Well the name should kinda give it away, shouldn't it? :) 10:58
lizmat well, no, not to me... CHECK time to me is at a time you *can* report errors , but have lost the position in the code where they occurred 11:01
ok, so RakuAST::VarDeclaration::Placeholder is not a CheckTime, so that would have to change
nine But nodes still have an origin? 11:10
lizmat I guess that's something I need to burn into my brain :-) 11:13
ok, so I added a CheckTime check, yet the error does *not* show the location in the source 11:21
ah, and it always fails :-( 11:22
I guess I could check for any parameters, but then: sub () { $^a } would still succeed 11:24
nine AFAIK error reporting is not fully integrated yet 11:27
12:00 reportable6 left 12:01 reportable6 joined
lizmat ok, so I basically got the PERFORM-CHECK logic in there, but have no reliable way to distinguish from: 12:23
a. no signature specified at all (an empty Signature object is always created)
b. a signature without parameters (an empty parameters list is always created) 12:24
c. parameters that have been added by placeholders
not setting up an empty parameters list, seems the most logic thing to do 12:25
but then there's a *lot* of places that are iterating over it and assume that there's something to iterate 12:26
which feels meh
vrurg lizmat: I'm out of context, but let me a wild guess for a: a subclass? NoSignature is Signature. 13:36
MasterDuke a lot of the remaining spectest fails are error related, e.g., the one fail in t/spec/S32-array/push.t is: 14:39
    # Expected: X::TypeCheck::Argument
    # Got:      X::AdHoc
[Coke] Ooh, that seems low-hanging. 14:55
nine I've been saying for months that there is a _lot_ of low hanging fruit like that :) 15:04
lizmat: what if you phrase the condition differently? "if there are placeholder parameters, there must not be any other parameters" 15:05
Ah, that still doesn't cover sub () { $^a }
[Coke] to test, build as normal, then set the env var to run tests/roast? 15:13
nine yes 15:14
[Coke] for roast, is there a special target, or just 'spectest' ok? 15:33
any pointers on the unicode symbols in the --target=ast output? 15:46
Statement::Expression ⚓▪𝄞 -e:1 ⎡3.say⎤
Nemokosch > <vrurg> 'sunk', 'block', and 'key' 15:53
I guess it's applicable again
16:12 discord-raku-bot left, discord-raku-bot joined
[Coke] would something like gist.github.com/coke/2786e14b70166...bda6e80367 be helpful? 16:15
anyone have a pointer to a vim wrapper that lets you drop it in a pipeline? I've lost my old link to such a thing. 16:19
nine [Coke]: I'm not sure what you mean with that gist? 16:30
[Coke] starting a list of places in tests for rakuast where the only error is the expected exception type, showing the file, the snippet, and the types 16:41
I was putting a list together for me to work on, but if it's helpful for anyone else... great, I guess?
16:52 squashable6 left
[Coke] (vim wrapper) now called "vipe" and part of moreutils in brew. 16:52
16:54 squashable6 joined 18:00 reportable6 left, reportable6 joined 18:20 Xliff joined 18:22 ab5tract left 19:34 RakuIRCLogger left, RakuIRCLogger joined
Geth rakudo/main: 6d9c4c7694 | (Elizabeth Mattijsen)++ | 2 files
RakuAST: add sorry for using placeholder when not allowed

When a placeholder is encountered, check whether the signature of the placeholder owner already has an instantiated parameters list. If it has, then add a X::Signature::Placeholder sorry. Except if the placeholder name is '@_' or '%_': if *these* occur in the parameters list, then they're ok: ... (19 more lines)
19:53 nine left, nine joined
Geth rakudo/main: 5 commits pushed by (Elizabeth Mattijsen)++ 19:59
rakudo/main: 1dcf6452a5 | (Elizabeth Mattijsen)++ | src/Raku/ast/variable-declaration.rakumod
RakuAST: use variable instead of calling the method (again)
rakudo/main: b583c33317 | (Elizabeth Mattijsen)++ | t/12-rakuast/placeholder.rakutest
RakuAST: test RakuAST::VarDeclaration::Placeholder::Slurpy(Array|Hash)