Geth rakudo/main: cc29209eae | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Panic NYI for the variable case of enums (#6336)

Previously `enum $foo <a b c>` parsed but the action ignored the
  `<variable>` match, so the declaration silently became a no-op. The
legacy frontend throws an X::Comp::NYI here. Detect the variable name and panic the same way.
00:18
rakudo/main: 48c45a70b0 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Record a label's source line and surrounding text (#6337)

The Label meta-object was built with a stub line of 0 and empty prematch and postmatch, so `FOO.line` reported 0 and `FOO.gist` lost the surrounding source. Compute them from the declaration's origin: the line of the label position, the 20 characters before it, and the 20 after the name, matching the legacy frontend.
00:19
rakudo/main: 314ce87a0b | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Warn on a redeclared enum value (#6338)

Declaring the same enum value name twice, as in `enum Day <Mon Mon>` or across two enums, poisons the lexical with an X::PoisonedAlias but reported no redeclaration worry, unlike the legacy frontend. Collect the value names that clash with an existing generated lexical of a different value while installing them, and report a combined X::Redeclaration worry. A name that only clashes with a nested package is not a lexical here, so it stays silent.
rakudo/main: 6db6c90628 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: Give an empty contextualizer its 6.c $/ semantics (#6339)

In 6.c an empty `$()`, `@()` or `%()` operates on $/. RakuAST built the contextualizer around the empty coercee instead, so `$()` was an empty item rather than the smartmatch result of $/.
Build the right tree at parse time when the coercee is empty and the language revision is less than 2 (that is, 6.c): `$()` becomes the made value of $/ if there is one and its matched string otherwise, while
  `@()` and `%()` coerce $/ itself. Later revisions are unchanged.
rakudo/main: 6cc0905570 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: Run NEXT phasers in a value-producing loop (#6340)

A loop used in value context compiles to a `from-loop` call whose body, condition and increment become thunks driven by the loop iterator. The iterator runs its `afterwards` thunk after each iteration and on an explicit `next`, which is exactly when a NEXT phaser should fire, but the phasers were dropped here. Only sunk loops ran them. ... (7 more lines)
rakudo/main: 62a42971bb | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: fix hyper zen slice `>>[]` / `>>{}` / `>><>` selecting nothing (#6345)

A `>>[]`, `>>{}` or `>><>` with an empty index is a zen slice and should map each element to itself. The hyper QAST always passed the index to METAOP_HYPER_POSTFIX_ARGS, so an empty index reached the per-element op as
  `postcircumfix:<[ ]>(elem, ())` (subscript with an empty list, which selects
nothing) instead of `postcircumfix:<[ ]>(elem)` (the zen slice). So ... (7 more lines)
rakudo/main: 730917097c | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: apply the sigil contextualizer to `@<foo>` / `%<foo>` captures (#6346)

  `@<foo>`, `%<foo>` and `$<foo>` all compiled to the same `$/<foo>` Match,
ignoring the sigil. So `@<foo>` was the raw Match rather than its positional captures: `@<foo>` of a single named capture with no positional subcaptures yielded a one-element list holding the Match instead of an empty list, and mapping over it picked up the Match. ... (7 more lines)
rakudo/main: 7f00d1e694 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: reject an adverb on an operator that can't take one (#6348)

An adverb binds tighter than most infixes, so in `EXPR OP term:adverb` it can bind to OP. Only an infix that compiles to a call can take the adverb as a named argument; a short-circuit, chaining, or thunky operator cannot.
Previously RakuAST silently dropped the adverb in that case, so `True && ... (5 more lines)
00:22
rakudo/main: 1af73a7148 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Don't parameterise a sub-signature's bound role by its type (#6350)

Previously `sub f(Int [$a, $b]) {}` bound its parameter to `Positional[Int]` and rejected a plain `Array`, while legacy bound a bare `Positional` and destructured it.
A sub-signature forces an `@` sigil on its parameter the same way a real array variable does, but RakuAST also parameterised the bound role by the leading type. This only parameterises the role when the sigil comes from a real
  `@`/`%`/`&` variable. `Int @a [$a, $b]` and `Int @c` keep `Positional[Int]`.
  `Int [$a, $b]` now binds and destructures a plain array on both frontends.
rakudo/main: 43758626cc | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: don't flag an `@`/`%`/`&` coercion parameter as coercive (#6349)

A scalar `Int() $x` parameter's type is the coercion. Behind an `@`/`%`/`&` sigil the parameter binds `Positional[Int()]` (a parameterized role), not a coercion.
Previously RakuAST set SIG_ELEM_IS_COERCIVE for the sigil case anyway, from the ... (8 more lines)
rakudo/main: adf549dd4d | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: Don't rebind a bare topic on the smartmatch RHS to the LHS (#6352)

Commit 790c7ac94 made `X ~~ $_` route through the topicalising smartmatch codegen so that a bare `$_` on the right would refer to the left-hand side, on the reasoning that `14 ~~ $_` should be an equality check returning True.
That rebinds the topic to the LHS unconditionally, so `given 99 { 14 ~~ $_ }` ... (8 more lines)
rakudo/main: 94979a5c3d | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Match a CR LF grapheme with a regex \r\n (#6353)

In an NFG string a CR immediately followed by an LF is a single `\r\n` grapheme. A regex `\r\n` compiled to a `\r` enumcharlist followed by the newline character class, and neither half matches the combined grapheme, so
  `"a\r\nb" ~~ /\r\n/` failed and `.split(/\r\n/)` did not split. This broke
modules that parse CRLF protocols such as LWP::Simple.
When a non-negated `\r` is directly followed by a non-negated `\n`, fuse the pair into a single `\r\n` literal so it matches the combined grapheme. This mirrors the legacy frontend's handling in QRegex::P6Regex::Actions.termish.
00:24
rakudo/main: 1b77a90230 | (Nick Logan)++ (committed using GitHub Web editor) | 4 files
RakuAST: Evaluate an expression sym for the <sym> token (#6354)

A proto regex candidate may give its sym as an expression rather than a literal, `token foo:sym(EXPR) {...}`. The `<sym>` token inside matches the candidate's sym. RakuAST built the `<sym>` literal from
  `simple-compile-time-quote-value`, which is only defined for a literal, so for
an expression sym it matched an empty string, every candidate collapsed to the ... (7 more lines)
00:25
rakudo: ugexe++ created pull request #6355:
RakuAST: Join a role group declared under a setting-named package
00:40
rakudo: ugexe++ created pull request #6356:
RakuAST: Handle a trailing :: in an indirect package lookup
01:28
02:01 vrurg joined 02:03 vrurg_ left
Geth rakudo: ugexe++ created pull request #6357:
RakuAST: Treat a parenthesized whatever `where` as a closure
02:08
rakudo: ugexe++ created pull request #6359:
RakuAST: Handle a pod block before an `is repr(...)` class
03:13
05:50 hurufu joined 07:42 guifa_ left 08:56 guifa left
lizmat TIL you can do $ERR.say("debug info") in NQP to write to STDERR (which is e.g. handy when debugging precomp issues) 09:51
timo i normally use "note", is $ERR available more commonly than "note" is? 10:27
lizmat % nqp -e 'note "foo"' 10:33
===SORRY!=== Error while compiling -e
Confused at line 1, near "note \"foo\""
doesn't work for me :-(
aaahhh parens 10:34
% nqp -e 'note("foo")'
foo
TIL even more :-(
:-)
timo :) 10:39
also, maybe we should not shy away from putting stuff into nqp that we think is useful for developing nqp and rakudo
as long as it doesn't make the compiler much more complicated
11:33 guifa joined 12:51 Geth left
Geth rakudo: ugexe++ created pull request #6360:
RakuAST: Serialize a WhateverCode role argument
13:32
[Coke] would any of those rakuast commits in the last day address blin issues? 15:00
ugexe Yeah 16:09
[Coke] ok. I can do another run say this weekend? 18:58
19:18 hurufu left
ugexe Sounds good to me 👍 19:24
Geth rakudo: ugexe++ created pull request #6361:
RakuAST: Flatten a Slip held in a container in `for`
23:00
rakudo: ugexe++ created pull request #6362:
RakuAST: Decontainerize the value of an `INIT` prefix
23:30
rakudo: ugexe++ created pull request #6363:
RakuAST: Fix the value of an INIT statement prefix
23:51