[00:18] <Geth> ¦ rakudo/main: cc29209eae | (Nick Logan)++ (committed using GitHub Web editor) | 2 files

[00:18] <Geth> ¦ rakudo/main: RakuAST: Panic NYI for the variable case of enums (#6336)

[00:18] <Geth> ¦ rakudo/main: 

[00:18] <Geth> ¦ rakudo/main: Previously `enum $foo <a b c>` parsed but the action ignored the

[00:18] <Geth> ¦ rakudo/main: `<variable>` match, so the declaration silently became a no-op. The

[00:18] <Geth> ¦ rakudo/main: legacy frontend throws an X::Comp::NYI here. Detect the variable name

[00:18] <Geth> ¦ rakudo/main: and panic the same way.

[00:18] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/cc29209eae

[00:19] <Geth> ¦ rakudo/main: 48c45a70b0 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files

[00:19] <Geth> ¦ rakudo/main: RakuAST: Record a label's source line and surrounding text (#6337)

[00:19] <Geth> ¦ rakudo/main: 

[00:19] <Geth> ¦ rakudo/main: The Label meta-object was built with a stub line of 0 and empty

[00:19] <Geth> ¦ rakudo/main: prematch and postmatch, so `FOO.line` reported 0 and `FOO.gist` lost the

[00:19] <Geth> ¦ rakudo/main: surrounding source. Compute them from the declaration's origin: the line

[00:19] <Geth> ¦ rakudo/main: of the label position, the 20 characters before it, and the 20 after

[00:19] <Geth> ¦ rakudo/main: the name, matching the legacy frontend.

[00:19] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/48c45a70b0

[00:19] <Geth> ¦ rakudo/main: 314ce87a0b | (Nick Logan)++ (committed using GitHub Web editor) | 2 files

[00:19] <Geth> ¦ rakudo/main: RakuAST: Warn on a redeclared enum value (#6338)

[00:19] <Geth> ¦ rakudo/main: 

[00:19] <Geth> ¦ rakudo/main: Declaring the same enum value name twice, as in `enum Day <Mon Mon>` or

[00:19] <Geth> ¦ rakudo/main: across two enums, poisons the lexical with an X::PoisonedAlias but

[00:19] <Geth> ¦ rakudo/main: reported no redeclaration worry, unlike the legacy frontend. Collect the

[00:19] <Geth> ¦ rakudo/main: value names that clash with an existing generated lexical of a different

[00:19] <Geth> ¦ rakudo/main: value while installing them, and report a combined X::Redeclaration

[00:19] <Geth> ¦ rakudo/main: worry. A name that only clashes with a nested package is not a lexical

[00:19] <Geth> ¦ rakudo/main: here, so it stays silent.

[00:19] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/314ce87a0b

[00:19] <Geth> ¦ rakudo/main: 6db6c90628 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files

[00:19] <Geth> ¦ rakudo/main: RakuAST: Give an empty contextualizer its 6.c $/ semantics (#6339)

[00:19] <Geth> ¦ rakudo/main: 

[00:19] <Geth> ¦ rakudo/main: In 6.c an empty `$()`, `@()` or `%()` operates on $/. RakuAST built the

[00:19] <Geth> ¦ rakudo/main: contextualizer around the empty coercee instead, so `$()` was an empty

[00:19] <Geth> ¦ rakudo/main: item rather than the smartmatch result of $/.

[00:19] <Geth> ¦ rakudo/main: 

[00:19] <Geth> ¦ rakudo/main: Build the right tree at parse time when the coercee is empty and the

[00:19] <Geth> ¦ rakudo/main: language revision is less than 2 (that is, 6.c): `$()` becomes the made

[00:20] <Geth> ¦ rakudo/main: value of $/ if there is one and its matched string otherwise, while

[00:20] <Geth> ¦ rakudo/main: `@()` and `%()` coerce $/ itself. Later revisions are unchanged.

[00:20] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/6db6c90628

[00:20] <Geth> ¦ rakudo/main: 6cc0905570 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files

[00:20] <Geth> ¦ rakudo/main: RakuAST: Run NEXT phasers in a value-producing loop (#6340)

[00:20] <Geth> ¦ rakudo/main: 

[00:20] <Geth> ¦ rakudo/main: A loop used in value context compiles to a `from-loop` call whose body,

[00:20] <Geth> ¦ rakudo/main: condition and increment become thunks driven by the loop iterator. The

[00:20] <Geth> ¦ rakudo/main: iterator runs its `afterwards` thunk after each iteration and on an

[00:20] <Geth> ¦ rakudo/main: explicit `next`, which is exactly when a NEXT phaser should fire, but the

[00:20] <Geth> ¦ rakudo/main: phasers were dropped here. Only sunk loops ran them.

[00:20] <Geth> ¦ rakudo/main: <…commit message has 7 more lines…>

[00:20] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/6cc0905570

[00:20] <Geth> ¦ rakudo/main: 62a42971bb | (Nick Logan)++ (committed using GitHub Web editor) | 2 files

[00:20] <Geth> ¦ rakudo/main: RakuAST: fix hyper zen slice `>>[]` / `>>{}` / `>><>` selecting nothing (#6345)

[00:20] <Geth> ¦ rakudo/main: 

[00:20] <Geth> ¦ rakudo/main: A `>>[]`, `>>{}` or `>><>` with an empty index is a zen slice and should map

[00:20] <Geth> ¦ rakudo/main: each element to itself. The hyper QAST always passed the index to

[00:20] <Geth> ¦ rakudo/main: METAOP_HYPER_POSTFIX_ARGS, so an empty index reached the per-element op as

[00:20] <Geth> ¦ rakudo/main: `postcircumfix:<[ ]>(elem, ())` (subscript with an empty list, which selects

[00:20] <Geth> ¦ rakudo/main: nothing) instead of `postcircumfix:<[ ]>(elem)` (the zen slice). So

[00:21] <Geth> ¦ rakudo/main: <…commit message has 7 more lines…>

[00:21] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/62a42971bb

[00:21] <Geth> ¦ rakudo/main: 730917097c | (Nick Logan)++ (committed using GitHub Web editor) | 3 files

[00:21] <Geth> ¦ rakudo/main: RakuAST: apply the sigil contextualizer to `@<foo>` / `%<foo>` captures (#6346)

[00:21] <Geth> ¦ rakudo/main: 

[00:21] <Geth> ¦ rakudo/main: `@<foo>`, `%<foo>` and `$<foo>` all compiled to the same `$/<foo>` Match,

[00:21] <Geth> ¦ rakudo/main: ignoring the sigil. So `@<foo>` was the raw Match rather than its positional

[00:21] <Geth> ¦ rakudo/main: captures: `@<foo>` of a single named capture with no positional subcaptures

[00:21] <Geth> ¦ rakudo/main: yielded a one-element list holding the Match instead of an empty list, and

[00:21] <Geth> ¦ rakudo/main: mapping over it picked up the Match.

[00:21] <Geth> ¦ rakudo/main: <…commit message has 7 more lines…>

[00:21] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/730917097c

[00:22] <Geth> ¦ rakudo/main: 7f00d1e694 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files

[00:22] <Geth> ¦ rakudo/main: RakuAST: reject an adverb on an operator that can't take one (#6348)

[00:22] <Geth> ¦ rakudo/main: 

[00:22] <Geth> ¦ rakudo/main: An adverb binds tighter than most infixes, so in `EXPR OP term:adverb` it can

[00:22] <Geth> ¦ rakudo/main: bind to OP. Only an infix that compiles to a call can take the adverb as a named

[00:22] <Geth> ¦ rakudo/main: argument; a short-circuit, chaining, or thunky operator cannot.

[00:22] <Geth> ¦ rakudo/main: 

[00:22] <Geth> ¦ rakudo/main: Previously RakuAST silently dropped the adverb in that case, so `True &&

[00:22] <Geth> ¦ rakudo/main: <…commit message has 5 more lines…>

[00:22] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/7f00d1e694

[00:22] <Geth> ¦ rakudo/main: 1af73a7148 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files

[00:22] <Geth> ¦ rakudo/main: RakuAST: Don't parameterise a sub-signature's bound role by its type (#6350)

[00:22] <Geth> ¦ rakudo/main: 

[00:22] <Geth> ¦ rakudo/main: Previously `sub f(Int [$a, $b]) {}` bound its parameter to `Positional[Int]`

[00:22] <Geth> ¦ rakudo/main: and rejected a plain `Array`, while legacy bound a bare `Positional` and

[00:22] <Geth> ¦ rakudo/main: destructured it.

[00:22] <Geth> ¦ rakudo/main: 

[00:22] <Geth> ¦ rakudo/main: A sub-signature forces an `@` sigil on its parameter the same way a real array

[00:22] <Geth> ¦ rakudo/main: variable does, but RakuAST also parameterised the bound role by the leading

[00:22] <Geth> ¦ rakudo/main: type. This only parameterises the role when the sigil comes from a real

[00:22] <Geth> ¦ rakudo/main: `@`/`%`/`&` variable. `Int @a [$a, $b]` and `Int @c` keep `Positional[Int]`.

[00:22] <Geth> ¦ rakudo/main: `Int [$a, $b]` now binds and destructures a plain array on both frontends.

[00:22] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/1af73a7148

[00:22] <Geth> ¦ rakudo/main: 43758626cc | (Nick Logan)++ (committed using GitHub Web editor) | 2 files

[00:22] <Geth> ¦ rakudo/main: RakuAST: don't flag an `@`/`%`/`&` coercion parameter as coercive (#6349)

[00:22] <Geth> ¦ rakudo/main: 

[00:22] <Geth> ¦ rakudo/main: A scalar `Int() $x` parameter's type is the coercion. Behind an `@`/`%`/`&`

[00:22] <Geth> ¦ rakudo/main: sigil the parameter binds `Positional[Int()]` (a parameterized role), not a

[00:22] <Geth> ¦ rakudo/main: coercion.

[00:22] <Geth> ¦ rakudo/main: 

[00:22] <Geth> ¦ rakudo/main: Previously RakuAST set SIG_ELEM_IS_COERCIVE for the sigil case anyway, from the

[00:23] <Geth> ¦ rakudo/main: <…commit message has 8 more lines…>

[00:23] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/43758626cc

[00:23] <Geth> ¦ rakudo/main: adf549dd4d | (Nick Logan)++ (committed using GitHub Web editor) | 3 files

[00:23] <Geth> ¦ rakudo/main: RakuAST: Don't rebind a bare topic on the smartmatch RHS to the LHS (#6352)

[00:23] <Geth> ¦ rakudo/main: 

[00:23] <Geth> ¦ rakudo/main: Commit 790c7ac94 made `X ~~ $_` route through the topicalising smartmatch

[00:23] <Geth> ¦ rakudo/main: codegen so that a bare `$_` on the right would refer to the left-hand side,

[00:23] <Geth> ¦ rakudo/main: on the reasoning that `14 ~~ $_` should be an equality check returning True.

[00:23] <Geth> ¦ rakudo/main: 

[00:23] <Geth> ¦ rakudo/main: That rebinds the topic to the LHS unconditionally, so `given 99 { 14 ~~ $_ }`

[00:23] <Geth> ¦ rakudo/main: <…commit message has 8 more lines…>

[00:23] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/adf549dd4d

[00:24] <Geth> ¦ rakudo/main: 94979a5c3d | (Nick Logan)++ (committed using GitHub Web editor) | 2 files

[00:24] <Geth> ¦ rakudo/main: RakuAST: Match a CR LF grapheme with a regex \r\n (#6353)

[00:24] <Geth> ¦ rakudo/main: 

[00:24] <Geth> ¦ rakudo/main: In an NFG string a CR immediately followed by an LF is a single `\r\n`

[00:24] <Geth> ¦ rakudo/main: grapheme. A regex `\r\n` compiled to a `\r` enumcharlist followed by the

[00:24] <Geth> ¦ rakudo/main: newline character class, and neither half matches the combined grapheme, so

[00:24] <Geth> ¦ rakudo/main: `"a\r\nb" ~~ /\r\n/` failed and `.split(/\r\n/)` did not split. This broke

[00:24] <Geth> ¦ rakudo/main: modules that parse CRLF protocols such as LWP::Simple.

[00:24] <Geth> ¦ rakudo/main: 

[00:24] <Geth> ¦ rakudo/main: When a non-negated `\r` is directly followed by a non-negated `\n`, fuse the

[00:24] <Geth> ¦ rakudo/main: pair into a single `\r\n` literal so it matches the combined grapheme. This

[00:24] <Geth> ¦ rakudo/main: mirrors the legacy frontend's handling in QRegex::P6Regex::Actions.termish.

[00:24] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/94979a5c3d

[00:25] <Geth> ¦ rakudo/main: 1b77a90230 | (Nick Logan)++ (committed using GitHub Web editor) | 4 files

[00:25] <Geth> ¦ rakudo/main: RakuAST: Evaluate an expression sym for the <sym> token (#6354)

[00:25] <Geth> ¦ rakudo/main: 

[00:25] <Geth> ¦ rakudo/main: A proto regex candidate may give its sym as an expression rather than a

[00:25] <Geth> ¦ rakudo/main: literal, `token foo:sym(EXPR) {...}`. The `<sym>` token inside matches the

[00:25] <Geth> ¦ rakudo/main: candidate's sym. RakuAST built the `<sym>` literal from

[00:25] <Geth> ¦ rakudo/main: `simple-compile-time-quote-value`, which is only defined for a literal, so for

[00:25] <Geth> ¦ rakudo/main: an expression sym it matched an empty string, every candidate collapsed to the

[00:25] <Geth> ¦ rakudo/main: <…commit message has 7 more lines…>

[00:25] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/1b77a90230

[00:40] <Geth> ¦ rakudo: ugexe++ created pull request #6355: RakuAST: Join a role group declared under a setting-named package

[00:40] <Geth> ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/6355

[01:28] <Geth> ¦ rakudo: ugexe++ created pull request #6356: RakuAST: Handle a trailing :: in an indirect package lookup

[01:28] <Geth> ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/6356

[02:01] *** vrurg joined
[02:03] *** vrurg_ left
[02:08] <Geth> ¦ rakudo: ugexe++ created pull request #6357: RakuAST: Treat a parenthesized whatever `where` as a closure

[02:08] <Geth> ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/6357

[03:13] <Geth> ¦ rakudo: ugexe++ created pull request #6359: RakuAST: Handle a pod block before an `is repr(...)` class

[03:13] <Geth> ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/6359

[05:50] *** hurufu joined
[07:42] *** guifa_ left
[08:56] *** guifa left
[09:51] <lizmat> TIL you can do $ERR.say("debug info") in NQP to write to STDERR  (which is e.g. handy when debugging precomp issues)

[10:27] <timo> i normally use "note", is $ERR available more commonly than "note" is?

[10:33] <lizmat> % nqp -e 'note "foo"'

[10:33] <lizmat> ===SORRY!=== Error while compiling -e

[10:33] <lizmat> Confused at line 1, near "note \"foo\""

[10:33] <lizmat> doesn't work for me  :-(

[10:34] <lizmat> aaahhh parens

[10:34] <lizmat> % nqp -e 'note("foo")'

[10:34] <lizmat> foo

[10:34] <lizmat> TIL even more  :-(

[10:34] <lizmat> :-)

[10:39] <timo> :)

[10:39] <timo> also, maybe we should not shy away from putting stuff into nqp that we think is useful for developing nqp and rakudo

[10:39] <timo> as long as it doesn't make the compiler much more complicated

[11:33] *** guifa joined
[12:51] *** Geth left
[13:32] <Geth> ¦ rakudo: ugexe++ created pull request #6360: RakuAST: Serialize a WhateverCode role argument

[13:32] <Geth> ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/6360

[15:00] <[Coke]> would any of those rakuast commits in the last day address blin issues?

[16:09] <ugexe> Yeah 

[18:58] <[Coke]> ok. I can do another run say this weekend?

[19:18] *** hurufu left
[19:24] <ugexe> Sounds good to me 👍

[23:00] <Geth> ¦ rakudo: ugexe++ created pull request #6361: RakuAST: Flatten a Slip held in a container in `for`

[23:00] <Geth> ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/6361

[23:30] <Geth> ¦ rakudo: ugexe++ created pull request #6362: RakuAST: Decontainerize the value of an `INIT` prefix

[23:30] <Geth> ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/6362

[23:51] <Geth> ¦ rakudo: ugexe++ created pull request #6363: RakuAST: Fix the value of an INIT statement prefix

[23:51] <Geth> ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/6363

