Skip to content

Commit 5ea698a

Browse files
committed
fix: range may have no end
1 parent 517e310 commit 5ea698a

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

packages/transpiler/src/matcher.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,11 @@ export class MatcherPrinter {
6060

6161
*printRangePatternMatcher(pat: SyntaxNode, target: string): Code {
6262
const [start, end] = pat.namedChildren;
63-
yield `(${target} >= ${start.text} && ${target} <= ${end.text})`;
63+
yield `(${target} >= ${start.text}`;
64+
if (end) {
65+
yield ` && ${target} <= ${end.text}`;
66+
}
67+
yield ")";
6468
}
6569

6670
*printSlicePatternMatcher(pat: SyntaxNode, target: string): Code {

packages/transpiler/src/nodes.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -604,12 +604,15 @@ export class Printer {
604604
}
605605

606606
*printRange(range: SyntaxNode): Code {
607+
const [start, op, end] = range.children;
607608
yield ["_r.range(", range.startPosition];
608-
yield* this.printExpr(range.child(0)!);
609+
yield* this.printExpr(start);
609610
yield [",", range.endPosition];
610-
yield* this.printExpr(range.child(2)!);
611-
if (range.child(1)!.type === "..=") {
612-
yield ["+1", range.endPosition];
611+
if (end) {
612+
yield* this.printExpr(end);
613+
if (op.type === "..=") {
614+
yield ["+1", range.endPosition];
615+
}
613616
}
614617
yield [")", range.endPosition];
615618
}

0 commit comments

Comments
 (0)