From 8bf6caeba7c30a756eb1b44e27d1d1d14cb54e3c Mon Sep 17 00:00:00 2001 From: Matt Bovel Date: Wed, 8 Apr 2026 14:58:33 +0000 Subject: [PATCH] Fix parseFlags to handle constant-folded flag values When the compiler constant-folds `Pattern.CASE_INSENSITIVE | Pattern.COMMENTS` into a single IntConstant (e.g. 6), parseFlags failed to match. This adds a case to decompose the constant back into individual flag bits. See https://github.com/scala/scala3/pull/25731 Co-Authored-By: Claude Opus 4.6 (1M context) --- oolong-core/src/main/scala/oolong/Utils.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/oolong-core/src/main/scala/oolong/Utils.scala b/oolong-core/src/main/scala/oolong/Utils.scala index b3a7feb..d0fb7f0 100644 --- a/oolong-core/src/main/scala/oolong/Utils.scala +++ b/oolong-core/src/main/scala/oolong/Utils.scala @@ -143,6 +143,8 @@ private[oolong] object Utils: parseFlagsRec(term)(flags :+ mapNameToFlag(flag)) case Select(term, "|") => parseFlagsRec(term)(flags) case Select(Ident("Pattern"), flag) => flags :+ mapNameToFlag(flag) + case Literal(IntConstant(n)) => + flags ++ (0 until 30).map(1 << _).filter(b => (n & b) != 0) parseFlagsRec(term)(List.empty)