Skip to content

Commit 0a0d7ac

Browse files
Kordyjanprolativ
authored andcommitted
Output specified tasty version
1 parent 0ef7ddf commit 0a0d7ac

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

compiler/src/dotty/tools/dotc/core/Contexts.scala

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import xsbti.AnalysisCallback
3838
import plugins._
3939
import java.util.concurrent.atomic.AtomicInteger
4040
import java.nio.file.InvalidPathException
41+
import dotty.tools.tasty.TastyFormat
4142

4243
object Contexts {
4344

@@ -480,7 +481,14 @@ object Contexts {
480481

481482
/** A new context that summarizes an import statement */
482483
def importContext(imp: Import[?], sym: Symbol): FreshContext =
483-
fresh.setImportInfo(ImportInfo(sym, imp.selectors, imp.expr))
484+
fresh.setImportInfo(ImportInfo(sym, imp.selectors, imp.expr))
485+
486+
def tastyVersion: (Int, Int, Int) =
487+
base.settings.scalaRelease.value match
488+
case "" =>
489+
import TastyFormat.*
490+
(MajorVersion, MinorVersion, ExperimentalVersion)
491+
case s"$maj.$min" => (maj.toInt + 25, min.toInt, 0)
484492

485493
/** Is the debug option set? */
486494
def debug: Boolean = base.settings.Ydebug.value

compiler/src/dotty/tools/dotc/core/tasty/TastyPickler.scala

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import dotty.tools.tasty.{TastyBuffer, TastyFormat, TastyHash}
77
import TastyFormat._
88
import TastyBuffer._
99

10+
import Contexts._
11+
1012
import collection.mutable
1113
import core.Symbols.{Symbol, ClassSymbol}
1214
import ast.tpd
@@ -30,10 +32,12 @@ class TastyPickler(val rootCls: ClassSymbol) {
3032
def newSection(name: String, buf: TastyBuffer): Unit =
3133
sections += ((nameBuffer.nameIndex(name.toTermName), buf))
3234

33-
def assembleParts(): Array[Byte] = {
35+
def assembleParts()(using Context): Array[Byte] = {
3436
def lengthWithLength(buf: TastyBuffer) =
3537
buf.length + natSize(buf.length)
3638

39+
val (majorVersion, minorVersion, experimentalVersion) = ctx.tastyVersion
40+
3741
nameBuffer.assemble()
3842
sections.foreach(_._2.assemble())
3943

@@ -48,9 +52,9 @@ class TastyPickler(val rootCls: ClassSymbol) {
4852
val headerBuffer = {
4953
val buf = new TastyBuffer(header.length + TastyPickler.versionStringBytes.length + 32)
5054
for (ch <- header) buf.writeByte(ch.toByte)
51-
buf.writeNat(MajorVersion)
52-
buf.writeNat(MinorVersion)
53-
buf.writeNat(ExperimentalVersion)
55+
buf.writeNat(majorVersion)
56+
buf.writeNat(minorVersion)
57+
buf.writeNat(experimentalVersion)
5458
buf.writeNat(TastyPickler.versionStringBytes.length)
5559
buf.writeBytes(TastyPickler.versionStringBytes, TastyPickler.versionStringBytes.length)
5660
buf.writeUncompressedLong(uuidLow)

0 commit comments

Comments
 (0)