| 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 | ||