@@ -24,7 +24,9 @@ RIDDL (Reactive Interface to Domain Definition Language) is a specification lang
2424## Critical Build Information
2525
2626### Scala Version & Syntax
27- - ** Scala 3.3.7 LTS** (not Scala 2!)
27+ - ** Scala 3.7.4** (not Scala 2!) — overrides sbt-ossuminc's 3.3.7 LTS
28+ default due to a compiler infinite loop bug in 3.3.x with opaque
29+ types and intersection types (see ` build.sbt ` header comment)
2830- ** ALWAYS use Scala 3 syntax** :
2931 - ` while i < end do ... end while ` (NOT ` while (i < end) { ... } ` )
3032 - No ` null ` checks - use ` Option(x) ` instead
@@ -41,8 +43,9 @@ RIDDL (Reactive Interface to Domain Definition Language) is a specification lang
4143
4244#### Common Configurations:
4345``` scala
44- // Scala 3.3. 7 LTS (recommended for projects )
46+ // Scala 3.7.4 (overridden from sbt-ossuminc's 3.3. 7 LTS default )
4547.configure(With .scala3) // Sets scalaVersion to 3.3.7 LTS
48+ // Then override: scalaVersion := "3.7.4"
4649
4750// Scala.js configuration
4851.jsConfigure(With .ScalaJS (
@@ -231,18 +234,19 @@ sbt-ossuminc updates its default), the following files **MUST** be updated:
231234** sbt-ossuminc Version Policy** :
232235- sbt-ossuminc always defaults to the latest Scala LTS version
233236- When sbt-ossuminc is updated, check if its default Scala version changed
234- - Current LTS: ** 3.3.7** (3.3.x series)
237+ - Current LTS: ** 3.3.7** (3.3.x series), but riddl uses ** 3.7.4**
238+ due to compiler bug (see build.sbt)
235239- Next LTS expected: ** 3.9.x** (Q2 2026)
236240
237241** Quick Search to Find All References** :
238242``` bash
239243grep -r " scala-3\." .github/workflows/
240244```
241245
242- ** Example Fix** (3.3.7 → 3.9.0):
246+ ** Example Fix** (3.7.4 → 3.9.0):
243247``` bash
244248# In each workflow file, replace all occurrences:
245- sed -i ' s/scala-3.3.7 /scala-3.9.0/g' .github/workflows/* .yml
249+ sed -i ' s/scala-3.7.4 /scala-3.9.0/g' .github/workflows/* .yml
246250```
247251
248252## Testing Patterns
@@ -614,7 +618,7 @@ Then add to root aggregation: `.aggregate(..., mymodule, mymoduleJS, mymoduleNat
61461810 . ** Share code via utils/shared/** - For code used by both JVM and JS variants
61561911 . ** BAST code lives in language module** - ` language/shared/.../bast/ ` , NOT standalone directory
61662012 . ** BAST readNode() vs readTypeExpression()** - Disjoint tag sets; mixing causes byte misalignment
617- 13 . ** Use ` With.scala3 ` for Scala version** - Sets Scala 3.3.7 LTS; don't hardcode ` scalaVersion `
621+ 13 . ** Scala version is 3.7.4 ** - Each module overrides ` scalaVersion := "3.7.4" ` (3.3.x has compiler bug with opaque types)
61862214 . ** BAST location comparisons use offsets** - Compare offset/endOffset, not line/col
61962315 . ** Scala version changes require workflow updates** - Update ` scala-X.Y.Z ` paths in workflows
62062416 . ** All RIDDL documentation goes to ossum.tech** - Don't add docs to this repo's ` doc/ ` directory
0 commit comments