🦋 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
|
|||
MasterDuke | hm. i got t/spec/S32-num/pi.t and t/spec/S32-trig/e.t passing under RAKUDO_RAKUAST=1, but 9 other tests are now failing when they used to pass...i knew this 4 line fix was too good to be true... | 01:50 | |
timo1: cool. i've never driven an opel before (unless gran tourismo counts), but i got a polestar 2 when we moved back to the states. the acceleration is fun | 01:55 | ||
02:19
sivoais left
03:16
jacob_c joined
03:19
sivoais joined
04:38
jacob_c left
04:44
discord-raku-bot left
04:46
discord-raku-bot joined
04:47
shmup left,
shmup joined
06:00
reportable6 left,
reportable6 joined
|
|||
nine | MasterDuke: that happens to me all the time :) | 08:22 | |
timo1 | this opel corsa was extremely cheap thanks to government-given subsidies and also some extra bonus from the manufacturer on top of that | 10:28 | |
we felt some time pressure since the government-given subsidies were supposed to run out soon (counting the time it takes for the car to arrive, which was "months" already just by default, and turned out to be even more months in our particular case due to $reasons), so i didn't get to wish for the fanciest features, but it's got a good set | 10:30 | ||
it's got the "even if your battery burst into flames and the electronics shut off you can still escape" technology called "hand-cranked windows on the back seats" for instance | 10:31 | ||
i don't think it has the "vehicle to load" functionality that i just saw Technology Connections Man demonstrate | 10:33 | ||
10:38
linkable6 left,
evalable6 left
10:40
evalable6 joined
10:41
linkable6 joined
|
|||
Geth | rakudo/main: fa384e232e | (Elizabeth Mattijsen)++ | src/Raku/Actions.nqp RakuAST: make {*} an OnlyStar And not just a statementlist with a Whatever in it |
10:48 | |
Nemokosch | 🤯 | 10:51 | |
lizmat | nine: I think all of the VarDeclaration::Placeholder classes need an additional argument to their .new: the block to which they apply | 11:04 | |
otherwise there's no way to deparse / .raku an AST properly without EVALling them | 11:05 | ||
as the attachment to the block is now done at CHECK time | 11:06 | ||
also, we need to add checks in the Actions to make | 11:07 | ||
sub ($a) { $^pos } | |||
m: sub ($a) { $^pos } | |||
camelia | ===SORRY!=== Error while compiling <tmp> Placeholder variable '$^pos' cannot override existing signature at <tmp>:1 ------> sub⏏ ($a) { $^pos } |
||
lizmat | a compile time error (it currently isn't | ||
m: say Q|sub foo ($a) { $^pos }; foo 42|.AST(:run) # very confusing | 11:08 | ||
camelia | 42 | ||
lizmat | which could be done with an extra :block attribute to RakuAST::VarDeclaration::Placeholder ? | 11:11 | |
thoughts? | 11:12 | ||
in the Actions, $*BLOCK already contains the needed Block | |||
11:17
ab5tract joined
|
|||
lizmat | hmmm... maybe there are 2 things here: 1. making sure we get the right compilation error | 11:18 | |
and 2. making sure manual building of ASTs is checked properly | 11:19 | ||
ab5tract | from the backlog: "nine: should a RakuAST::Declaration::External::Constant be considered a type ??" | 11:35 | |
I used RakuAST::Declaration::External::Constant for both RakuAST::Type::Enum and RakuAST::Type::Subset | 11:36 | ||
Because it had the correct QAST | |||
but maybe the point is that some types can be designed using RakuAST::Declaration::External::Constant but you cannot assume a RakuAST::Declaration::External::Constant is a type | 11:37 | ||
lizmat | I think I got to that conclusion also :-) | 11:38 | |
ab5tract | okay, phew | ||
lizmat | so what is the class common to Block / Sub / Method / etc? | 11:39 | |
basically, anything that can have a signature | |||
for a momen I thought it would be RakuAST::ExpressionThunk | 11:41 | ||
but I'm looking for the ones that have an *explicit* signature | |||
hmmm.. maybe RakuAST::PlaceholderParameterOwner ? | 11:42 | ||
ab5tract | sounds like it would be a common role | 11:48 | |
amongst those classes that you are looking for | |||
lizmat | well, I'm looking for a way to add a method to this common role, that would visit the children and return whether any of the children has RakuAST::VarDeclaration::Placeholder object | 11:49 | |
* | 11:50 | ||
*a | |||
and this at object creation time | |||
ab5tract | Hmmm.... | ||
lizmat | so that *if* the statement list has a placeholder in it, *and* there is an explicit signature, it can fail | 11:51 | |
m: say Q|sub ($a) { $^b }|.AST | 11:52 | ||
camelia | RakuAST::StatementList.new( RakuAST::Statement::Expression.new( expression => RakuAST::Sub.new( signature => RakuAST::Signature.new( parameters => ( RakuAST::Parameter.new( target => RakuAST::Param… |
||
lizmat | m: say Q|sub ($a) { $^b }|.AST.statements.head.expression | ||
camelia | RakuAST::Sub.new( signature => RakuAST::Signature.new( parameters => ( RakuAST::Parameter.new( target => RakuAST::ParameterTarget::Var.new("\$a") ), ) ), body => RakuAST::Blockoid.new( RakuA… |
||
lizmat | so that such a manual AST building would fail | 11:53 | |
ab5tract | if its something that could be useful for other situations, maybe it makes sense to add a way to provide a custom callback to be passed to visit-chldren? | ||
lizmat | visit-children already takes a callback? that's the point, no ? | 11:54 | |
I'm just unclear about the exact semantics of visit-children: should it recurse itself, or is the recursion handled externally ? | 11:55 | ||
nine jnthn ^^ ? | |||
ab5tract | I was under the impression that visit-children is called in a handful of places that all provide their own callbacks | 11:56 | |
I was suggesting to add a way to hook into one of these locations with a custom callback provided by the common role | |||
method has-custom-visit-children { true }; method CUSTOM-VISIT-CHILDREN { &callback } | 11:58 | ||
*True | |||
but I see what you are saying | 11:59 | ||
12:00
reportable6 left,
reportable6 joined
12:03
NemokoschKiwi joined
12:13
NemokoschKiwi left
13:24
jacob_c joined
13:42
jacob_c left
|
|||
Geth | rakudo/main: 588d0f6ab7 | (Elizabeth Mattijsen)++ | 3 files RakuAST: add RakuAST::PlaceholderParameterOwner.code-has-placeholders This method intended for introspection of ASTs, such as happens with deparsing and .raku. It returns True if any placeholder variable is found in the code of the object that is a placeholder parameter owner (such as PointyBlock, or any Routine) |
13:45 | |
rakudo/main: cd21886998 | (Elizabeth Mattijsen)++ | t/12-rakuast/signature.rakutest RakuAST: remove :EVAL from RakuAST tests As EVAL is no longer necessary to be able to correctly deparse or provide a .raku representation. |
|||
nine | visit-children does (and should do) exactly what it says: call that visitor for the node's children. Not more, not less. | 15:49 | |
17:04
ab5tract left
|
|||
lizmat | so, this should be a simple loop then, with a return ? | 17:05 | |
17:05
ab5tract joined
|
|||
lizmat | ah, no, you mean it's only for that node's children... so doing the recursion in code-has-placeholders is correct | 17:06 | |
18:00
reportable6 left
18:01
reportable6 joined
|
|||
nine | yes | 18:02 | |
19:06
NemokoschKiwi joined
19:19
NemokoschKiwi left
20:44
ab5tract left
|