Perl 6 - the future is here, just unevenly distributed

IRC log for #p6dev, 2016-03-24

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:58 dalek rakudo/nom: c168e7c | coke++ | docs/release_guide.pod:
00:58 dalek rakudo/nom: Note actual release date.
00:58 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c168e7c27e
00:58 dalek rakudo/nom: 143283b | coke++ | docs/announce/2016.03.md:
00:58 dalek rakudo/nom: fix release name.
00:58 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/143283b25e
01:02 timotimo \o/
01:06 dalek rakudo/nom: bff6430 | coke++ | docs/release_guide.pod:
01:06 dalek rakudo/nom: Breaking 6.c-errata is bad
01:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bff6430012
01:11 skids joined #p6dev
01:40 Ben_Goldberg joined #p6dev
01:44 BenGoldberg_ joined #p6dev
01:51 * [Coke] wonders why MANIFEST is generated with "make manifest"
01:52 timotimo so that you don't have to do it by hand?
01:53 [Coke] ... as opposed to "make MANIFEST"
01:56 timotimo oh
02:06 dalek rakudo/nom: 9a6d7f0 | coke++ | docs/release_guide.pod:
02:06 dalek rakudo/nom: run things in the right order.
02:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9a6d7f051a
02:06 dalek rakudo/nom: 6732d2e | coke++ | docs/release_guide.pod:
02:06 dalek rakudo/nom: recent 'Test.pm' changes require this...
02:06 dalek rakudo/nom:
02:06 dalek rakudo/nom: ... at least in the test of the tarball. Seems to not
02:06 dalek rakudo/nom: matter in the build directory.
02:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6732d2eac7
02:11 colomon joined #p6dev
02:32 [Coke] 2016.03 tarballs and tags available.
02:33 synopsebot6 joined #p6dev
02:46 timotimo \o/
02:46 timotimo thank you so much for doing this for the umpteenth time in a row
02:47 ilbot3 joined #p6dev
02:47 Topic for #p6dev is now Perl 6 language and compiler development
07:42 [Tux] test            21.101
07:42 [Tux] test-t          12.214
07:42 [Tux] csv-parser      24.843
08:12 sortiz joined #p6dev
08:14 FROGGS joined #p6dev
08:44 Hotkeys joined #p6dev
09:03 RabidGravy joined #p6dev
09:07 [Tux] joined #p6dev
09:32 dalek rakudo/nom: 7cc37b3 | lizmat++ | src/core/Str.pm:
09:32 dalek rakudo/nom: Nativy needles and lengths of needles
09:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7cc37b3b66
09:32 dalek rakudo/nom: f3fe819 | lizmat++ | src/core/Iterator.pm:
09:32 dalek rakudo/nom: Slightly optimize default Iterator.push-all
09:32 dalek rakudo/nom:
09:32 dalek rakudo/nom: Fewer calls, and no need to keep a counter as well.
09:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f3fe819621
09:32 dalek rakudo/nom: c85e036 | lizmat++ | src/core/Mu.pm:
09:32 dalek rakudo/nom: Give gimme back to the world
09:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c85e036ca3
09:37 nine gimme gimme gimme :)
10:03 jnthn Apparently, we don't giyou any more :)
10:04 moritz .oO( gimme gimme gimme more huhn... https://encrypted.google.com/search?hl=en&q=gimme+more+huhn&spell=1&sa=X&ved=0ahUKEwjd9q2DidnLAhXMORQKHcgkCnwQvwUIGSgA)
10:04 moritz whoops, should have been this link: https://www.youtube.com/watch?v=LdserZX7Bns
10:08 nine That is....disturbing. Why do I click such links?
10:09 moritz nine: because I terribly abused your trust in my personality :-)
12:15 lizmat nine hoelzro : I guess now would be the best time to merge your branches, if you're ready of course  :-)
12:17 nine I will merge the nqp branch for source names and maybe the corresponding commit in rakudo. That will give us useable backtraces at least while I continue shaving my yak.
12:20 lizmat nine++  :-)
12:25 hoelzro lizmat: thanks for the heads-up; I'll wait until after nine has finished merging
12:30 AlexDaniel joined #p6dev
12:31 dalek nqp/relocateable-precomp: bd39fe2 | (Stefan Seifert)++ | src/HLL/Compiler.nqp:
12:31 dalek nqp/relocateable-precomp: Option for a source-name different from the actual source file
12:31 dalek nqp/relocateable-precomp:
12:31 dalek nqp/relocateable-precomp: While absolute paths are useful for reading source files reliably, we don't
12:31 dalek nqp/relocateable-precomp: want to save those absolute paths in precompiled files as the source files
12:31 dalek nqp/relocateable-precomp: may move after precompilation. This happens when modules are packaged for
12:31 dalek nqp/relocateable-precomp: Linux distributions and the build process runs with an unprivileged user
12:31 dalek nqp/relocateable-precomp: while the result should be installed in a system location.
12:31 dalek nqp/relocateable-precomp:
12:31 dalek nqp/relocateable-precomp: The source-name option allows for specifying a different string to use for
12:31 dalek nqp/relocateable-precomp: the $?FILES variable and thus for the path to the source file in backtraces.
12:31 dalek nqp/relocateable-precomp: review: https://github.com/perl6/nqp/commit/bd39fe2006
12:42 sortiz Can reproduce _nadim report: "Internal error: unhandled target type in sub nativecast at [NativeCall line 394] in ... at t/04-nativecall/19-function-pointers.t line 17"
12:43 lizmat sortiz: what OS are you on
12:43 lizmat ?
12:43 sortiz Linux
12:44 lizmat hmmm...  /me on OS X
12:44 jnthn If I had to guess that error, I'd first guess version screw
12:44 jnthn um, skew
12:44 lizmat yeah, feels like it...
12:44 jnthn As the func pointer stuff was a recent addition in Moar
12:44 lizmat sortiz: could you try running configure again ?
12:44 jnthn It could of course be a bug in that too
12:44 lizmat but then an OS dependent one ...
12:44 jnthn Well, or just check your moar version too
12:45 jnthn lizmat: Stranger things have happened ;)
12:45 lizmat jnthn: true that  :)
12:46 sortiz "This is Rakudo version 2016.02-214-gc85e036 built on MoarVM version 2016.03"
12:46 dalek nqp: bd39fe2 | (Stefan Seifert)++ | src/HLL/Compiler.nqp:
12:46 dalek nqp: Option for a source-name different from the actual source file
12:46 dalek nqp:
12:46 dalek nqp: While absolute paths are useful for reading source files reliably, we don't
12:46 dalek nqp: want to save those absolute paths in precompiled files as the source files
12:46 dalek nqp: may move after precompilation. This happens when modules are packaged for
12:46 dalek nqp: Linux distributions and the build process runs with an unprivileged user
12:46 dalek nqp: while the result should be installed in a system location.
12:46 dalek nqp:
12:46 dalek nqp: The source-name option allows for specifying a different string to use for
12:46 dalek nqp: the $?FILES variable and thus for the path to the source file in backtraces.
12:46 dalek nqp: review: https://github.com/perl6/nqp/commit/bd39fe2006
12:48 jnthn sortiz: OK, then not version skew.
12:48 jnthn As I'm sure the fp stuff was in 2016.03
12:48 sortiz The problem seems that the tested nativecast argument ':(--> int32)' isn't Callable (is Signature), unexpected to nativecast
12:52 sortiz And somehow my pull don't seem to include FROGGS's commit 5221023
12:58 dalek Heuristic branch merge: pushed 32 commits to rakudo/nom by hoelzro
12:59 sortiz Nuking ./install...
13:02 sortiz Ok, NativeCall is a lib, so a realclean, perl Configure..., make, make test fails. Need first 'make install'. All pass now.
13:06 nine That's odd. We've never had to make install before the make test
13:06 nine And we shouldn't have to.
13:07 nine I think commit 3e2e7f9cbe5b9d7eb53aa880992482f4e2e9fac3 broke that
13:07 sortiz NativeCall isn't in settings, so it's changes now need to be "installed" first.
13:08 lizmat aaahh... that would make sense...
13:09 nine Only since commit 3e2e7f9cbe5b9d7eb53aa880992482f4e2e9fac3 since we now use the installed NativeCall instead of the bundled one.
13:09 nine Better fix would have been to move the use lib 'lib'; to before the use CompileTestLib;
13:10 lizmat nine: or combine them ?
13:12 jnthn Combine?
13:12 jnthn Can you use lib 'foo', 'bar'?
13:12 lizmat use lib <foo bar> essentially, yes ?
13:12 Ven joined #p6dev
13:12 jnthn I dunno, if it works ;)
13:12 jnthn m: use lib <foo bar>
13:12 camelia rakudo-moar 7e8c9c: ( no output )
13:13 jnthn :)
13:13 jnthn Guess somebody++ made that work :)
13:13 jnthn TIL ;)
13:13 skids joined #p6dev
13:14 Ven is nom known to be broken ATM?
13:21 lizmat no?
13:25 Ven I can't `use Test;` on nom ATM, fails with "EVAL is a very dangerous function" (ie no monkey pragma there)
13:27 dalek rakudo/nom: 984d24a | lizmat++ | t/0 (24 files):
13:27 dalek rakudo/nom: Make sure "make test" works without "make install"
13:27 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/984d24a2c1
13:27 lizmat Ven: no idea...  :-(
13:28 jnthn m: use Test;
13:28 camelia rakudo-moar 7e8c9c: ( no output )
13:30 sortiz Ven, do you "install" your new rakudo before your tests?
13:34 dalek rakudo/nom: e2ac3dc | (Stefan Seifert)++ | / (7 files):
13:34 dalek rakudo/nom: Store logical file names in precomp files
13:34 dalek rakudo/nom:
13:34 dalek rakudo/nom: We now use logical file names for annotating sources and construct absolute
13:34 dalek rakudo/nom: paths when printing stack traces. This avoids storing absolute paths in
13:34 dalek rakudo/nom: precompiled files which is a problem for packaging modules for Linux
13:34 dalek rakudo/nom: distributions. It also allows for us to add the name of the requested
13:35 dalek rakudo/nom: module to the backtrace output, alleviating the problem with the undeciferable
13:35 dalek rakudo/nom: SHA-1 file names.
13:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e2ac3dc879
13:36 lizmat nine++  :-)
13:36 jnthn nine++ \o/
13:37 jnthn Nice to see lots of polishing, opt, etc. going in these days :)
13:37 sortiz nine++
13:37 jnthn btw, if somebody wants to RT something
13:37 jnthn m: enum Foo << :Bar(1), :Baz >>
13:37 camelia rakudo-moar 984d24: OUTPUT«===SORRY!===␤Incompatible MROs in P6opaque rebless␤»
13:37 jnthn That's a crappy error :)
13:38 jnthn That was about the only icky thing I hit yesterday when writing the heap analyzer
13:38 jnthn m: enum Foo << :Bar(1) Baz >> # this is what I meant
13:38 camelia rakudo-moar 984d24: ( no output )
13:38 lizmat is "make spectest" supposed to run with or without "make install" ?
13:38 jnthn lizmat: I always run it without locally, fwiw
13:38 lizmat well, not recently you don't  :-)
13:38 jnthn I do, and it may explain some failures :D
13:39 lizmat well, I just nuked my install dir, made from scratch, and now all tests fail in "make spectest"
13:39 jnthn all?!
13:39 lizmat because it cannot find "use Test"
13:39 jnthn wowza, I've not seen that happen
13:39 jnthn Odd
13:39 lizmat Files=1096, Tests=0, 47 wallclock secs ( 3.76 usr  2.99 sys + 276.13 cusr 51.26 csys = 334.14 CPU)
13:39 lizmat it *is* a lot faster this way  :-)
13:41 lizmat probably because it found an older "Test" in a precomp somewhere ?
13:41 sortiz Test is also a lib, so should be installed :-)
13:42 lizmat well, hence my question: do we expect "make spectest" to be run after "make install" or not ?
13:44 sortiz I don't. "make test" yes, "make spectest" no.
13:48 sortiz otoh, I'm thinking that all lib modules should be versionized and it's version tested to avoid this problems.
13:48 FROGGS nine++
13:55 lizmat ok, so, do I go about adding "use lib" to all files in roast that do "use Test" ?
13:57 lizmat jnthn: ^^  ??
13:59 jnthn lizmat: Surely not, we'd just make the harness set PERL6LIB or pass -Ilib
13:59 nine lizmat: make spectest needs a make install since commit 1bbef9894156d7d326704069ca3c031ca5b96fce
13:59 nine i.e. we _did_ set PERL6LIB in harness before :)
13:59 jnthn That commit claims we "don't need" it
14:00 jnthn I'm not sure I agree ;)
14:00 nine Well such is the nature of development
14:03 Ven joined #p6dev
14:03 Ven nine++
14:03 Ven sortiz: I do make install
14:04 lizmat nine:
14:04 lizmat aha... ok, so my fault  :-(
14:05 RabidGravy joined #p6dev
14:10 nine lizmat: you could as easily blame jnthn who didn't write a comment on why the PERL6LIB was actually needed in commit 1917a7a2. That said, I don't see a reason to blame anyone.
14:11 dalek rakudo/nom: 8df1a69 | lizmat++ | t/harness:
14:11 dalek rakudo/nom: Make "make spectest" work without "make install"
14:11 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8df1a69703
14:11 lizmat well, I blame myself  :-(
14:12 lizmat Files=1096, Tests=52141, 263 wallclock secs (13.88 usr  4.36 sys + 1587.43 cusr 147.51 csys = 1753.18 CPU)  # fwiw, without make install
14:14 [Coke] nine: (make install vs. make test). it was a commit of lizmat's, I can find it if you like.
14:15 [Coke] ... sounds like folks are already on it.
14:15 [Coke] note that it required a chance to the release instructions as well.
14:25 Ven fwiw, make spectest seems to run. but ./perl6 -e "use Test;" not :o
14:26 Ven can't quite investigate at all, just wanted to run a script at $work :). if there's a problem reproducing it, ping me
14:26 lizmat Ven: that's to be expected
14:26 lizmat as "make spectest" uses t/harness, which sets PERL6LIB=lib
14:27 lizmat (again)
14:35 lizmat Files=1107, Tests=52216, 267 wallclock secs (14.12 usr  4.21 sys + 1618.44 cusr 150.67 csys = 1787.44 CPU)  # with Inline::Perl5 installed
14:58 sortiz enough for today, o/ #p6dev
15:05 lizmat sortiz /o
15:20 stmuk joined #p6dev
15:31 lizmat jnthn timotimo: I'm considering changing the interface of nqp::p6sort: instead of taking a list of indices, it would take number of indices, and return the sorted indices
15:32 lizmat any objections against that ?
15:34 jnthn lizmat: No but remember you'll need to update the JVM impl too
15:42 lizmat ah, good point
15:47 lizmat ok, so much for that idea  :-(
15:52 lizmat jnthn: maybe it is an idea to move the whole p6sort logic into Rakudo::Internals ?
15:53 lizmat provided it would mean an efficiency improvement, of course :-)
15:53 jnthn Well, yeah, are you going to come out ahead is an interesting question :)
15:54 jnthn It's possible that being smarter will overcome any NQP -> Perl 6 switch slowdown :)
15:54 jnthn And you could maybe eliminate the different code paths for JVM and Moar also
16:02 lizmat which would be helpful for the JS backend as well  :-)
16:02 lizmat anyways, first afk for a few hours&
16:02 jnthn aye
17:10 geekosaur joined #p6dev
17:15 Skarsnik joined #p6dev
17:44 dalek rakudo/relocateable-precomp: f55e28b | (Stefan Seifert)++ | src/core/CompUnit/Repository/Installation.pm:
17:44 dalek rakudo/relocateable-precomp: Turn short-name lookup files into directories
17:44 dalek rakudo/relocateable-precomp:
17:44 dalek rakudo/relocateable-precomp: This may become part of CompUnit::Repository::Installation format v1.
17:44 dalek rakudo/relocateable-precomp: Having to change any already existing files on installation of a module makes
17:45 dalek joined #p6dev
17:55 AlexDaniel joined #p6dev
18:15 dalek joined #p6dev
19:14 masak so, a method is a QAST::Block, right?
19:14 geekosaur joined #p6dev
19:14 masak but not all QAST::Block nodes are methods. what can I ask a QAST::Block to find out whether it's a method?
19:16 nine Interesting read: https://lwn.net/SubscriberLink/680985/f0dc962f283dd854/
19:27 jnthn masak: $block.ann('code_object') ~~ Method
19:27 jnthn QAST itself doesn't care
19:27 jnthn But it's annotated with the thing that does :)
19:29 FROGGS joined #p6dev
19:30 masak jnthn: thanks :)
19:36 nine jnthn: do you have any idea for me on what could cause this message? QAST -> MAST failed while compiling op callmethod: Code ref '' does not exist in serialization context
19:37 nine jnthn: I've got the EVAL to compile with an almost completely shared World. This error now comes when serializing the outer comp unit
19:46 nine I guess the empty name is just because the CODE object is not a named sub or method
19:52 jnthn nine: Yeah, it must be some anon code block
19:53 nine Maybe the EVAL's comp_unit itself? How _does_ that get pushed into the sc?
19:55 jnthn nine: I don't have a guess, sorry. But I could as my next step I'd get that message to output the cuid
19:55 jnthn nine: Oh, you can also gets its .node to get a line/file I guess
19:55 jnthn Well, file you know
19:55 jnthn But line can tell you which block it is
19:55 nine Oh, that'd be lovely!
19:55 jnthn Either of those can help you figure out which block it is, which may make the bug a bit less opaque
19:56 jnthn I thought <unit> went in the same as any other code ref...
19:56 jnthn I may be misremembering
19:57 nine It probably should. I just can't find the code that actually does it.
19:58 jnthn nine: iirc it gets a code object build in the comp_unit action method.
19:58 jnthn Again, totally from memory :)
19:58 jnthn So may be wildly off :)
19:59 nine Trust your memory :)
20:12 dalek joined #p6dev
20:18 dalek joined #p6dev
20:28 [Coke] any developers going to be at baltimore perl workshop? (I'd only expect semi-locals, I guess)
20:29 jnthn .oO( I can't remember the last time I forgot something... )
20:44 dalek nqp: 642013d | (Pawel Murias)++ | src/vm/js/ (4 files):
20:44 dalek nqp: [js] Optimize joining Chunks by writing them to a file and reading it back in.
20:44 dalek nqp:
20:44 dalek nqp: Also add a ChunkEscape to optimize generating quoted code.
20:44 dalek nqp: Source map support needs to be fixed in subsequent commits.
20:44 dalek nqp: Pass gen/t/qregex.t again.
20:44 dalek nqp: review: https://github.com/perl6/nqp/commit/642013df0f
20:52 [Coke] adding file io seems like a weird optimization. :)
21:10 [Tux] joined #p6dev
21:17 masak ok, next question: it would seem I'm getting multiple hits per method
21:18 masak I'm also getting QAST::Block nodes that are annotated with a Method but that have no .name -- and I don't see that in my class
21:18 masak why is this?
21:19 masak more exactly, I seem to be getting my list of methods twice. the first copy of the list is mixed up with those anon methods.
21:20 dalek nqp: a5232c5 | jnthn++ | src/vm/moar/QAST/QASTCompilerMAST.nqp:
21:20 dalek nqp: Fix failure to pop compiling SC for non-precomp.
21:20 dalek nqp:
21:20 dalek nqp: This was one cause of EVAL in Perl 6 leaking. Similar fixes are likely
21:20 dalek nqp: needed for other backends if they have a similar code path to this.
21:20 dalek nqp: review: https://github.com/perl6/nqp/commit/a5232c5e99
21:20 jnthn masak: Maybe you're walking both the default and void of a QAST::Want node, which mostly refer to the same sub-tree?
21:21 jnthn No idea where the anon ones come from...though, do you have accessors?
21:21 masak no. this happens to be an Actions method, with no state.
21:21 masak I do have subs in my methods, though.
21:21 masak I thought it might be them.
21:22 jnthn m: say Method.^methods
21:22 camelia rakudo-moar 8df1a6: OUTPUT«(gist <anon> <anon> <anon> soft <anon> <anon> yada perl <anon> onlystar candidates unwrap wrap <anon> <anon> package leave <anon> <anon> cando <anon> <anon> <anon> <anon> multi <anon> <anon> add_phaser has-phaser phasers assuming WHY set_why perl of <anon>…»
21:22 jnthn Hm, I think there's a way to ask for the location
21:22 jnthn So you could maybe work out what the anon things are
21:22 jnthn Do you have any regexes?
21:22 jnthn Those are methods too
21:22 jnthn Well, Regex to be specific
21:23 jnthn You could .WHAT === Method to rule that out
21:23 jnthn (You'll rule submethods out along with them)
21:23 masak *nod*
21:24 masak yeah, they're Regex object
21:24 masak s*
21:27 masak ended up only caring about those that ~~ Method and have a .name
21:28 masak that'll make me still see submethods
21:28 masak and if I never descend into QAST::Want, I don't get the list twice
21:29 masak where can I read more about QAST::Want? I found the source, but it doesn't tell me much.
21:35 * masak makes the mistake of looking at the commit log for that file. finds his own name a couple of times. blinks.
21:35 stmuk joined #p6dev
21:36 masak QAST::Want... has something to do with compile-time values?
21:36 dalek joined #p6dev
21:39 moritz masak: yes
21:39 moritz for allomorphic things
21:39 moritz that ca either be a str or a Str, for example
21:40 timotimo the optimizer can also turn some things into want nodes
21:40 timotimo mostly (only?) when something has been constant-folded
21:41 masak any idea why it's happening to my class? or at least to all the methods in it.
21:47 jnthn masak: We use it to avoid taking closures when methods are in void context.
21:51 masak aha.
21:51 masak in methods, there seems to always be a header/preamble (with variables and stuff)
21:51 jnthn The optimizer looks if the second child of want is 'v' and avoids walking any further ones
21:51 masak and then there's a QAST::Op p6typecheckrv
21:51 masak with a QAST::Stmts
21:51 masak and under that, all of the method body follows
21:51 jnthn Right
21:51 masak I guess I can count on this being true always?
21:52 jnthn um
21:52 masak heh
21:52 jnthn Well, it's well within the stuff we might refactor at some point :)
21:52 masak ok, I should state my goal, too
21:52 masak given a method, I want to iterate through its statements
21:52 masak so first I need to find them
21:53 masak and under the *current* regime, they seem to be under the QAST::Stmts under the QAST::Op p6typecheckrv
21:53 masak I'm fine with things changing with future refactors of QAST
21:53 masak I'm curious how things are today
21:54 jnthn Well, you can rely on it today :)
21:54 jnthn But that op is a little too "late bound"
21:55 jnthn So it'll be an optimization target at some point
21:55 masak *nod*
21:55 masak I'll take my chances
21:55 masak if I write tests for this, then they will simply break when that day comes
21:55 masak which is goodenuf
21:56 jnthn :)
21:56 Skarsnik joined #p6dev
21:56 MadcapJake joined #p6dev
21:56 jnthn Enough for today, time to rest o/
21:56 masak 'night, jnthn
21:57 masak what's a QAST::SpecialArg?
21:57 timotimo named arguments, or slurpies
21:57 timotimo i think the latter, actually
21:57 timotimo at least i think that's what it is?
21:57 timotimo gotta run now :S
21:58 masak :)
21:58 masak yeah, that makes sense
21:58 masak it has properties 'named' and 'flat'
22:10 * lizmat decides she's too tired to do any more hacking
22:10 moritz regular named args are just QAST nodes with .named set, iirc
22:10 lizmat so good night, #p6dev!
22:10 moritz lizmat: good night, sensible decision :-)
22:10 * moritz also goees to sleep
22:10 lizmat good night, moritz
22:13 masak good night lizmat; moritz
22:13 stmuk_ joined #p6dev
22:15 masak this is what I have so far: a method has a .[1] which is a p6typecheckrv, which has a .[0] which is a QAST::Stmts, which has a .[0] which is a lexotic, which has a .[0] which is a p6decontrv
22:15 masak below that node, the actual statements are found
22:15 masak (excpet for a spurious first node which seems to always be a QAST::WVal)
22:15 masak except*
22:16 masak the really nice news is that the statements are actual QAST::Stmt nodes
22:19 skids joined #p6dev
22:20 geekosaur joined #p6dev
22:23 masak oh, it continues down for two more levels. never mind.
22:23 masak yay, it's working
22:23 masak TIL: if statements and for loops are QAST::Stmt, but while loops are QAST::Op
22:24 masak nested subs are QAST::Want
23:20 timotimo moritz: afaik when you call .named on a regular qast to set a name, it'll mix in SpecialArg to store the named
23:23 masak this seems true, from reading QAST::Node
23:23 masak ditto .flat

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary