Skip to content

Independent tasty-core library #7616

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Dec 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ val `dotty-staging` = Build.`dotty-staging`
val `dotty-language-server` = Build.`dotty-language-server`
val `dotty-bench` = Build.`dotty-bench`
val `dotty-bench-bootstrapped` = Build.`dotty-bench-bootstrapped`
val `tasty-core` = Build.`tasty-core`
val `tasty-core-bootstrapped` = Build.`tasty-core-bootstrapped`
val `tasty-core-scala2` = Build.`tasty-core-scala2`
val `scala-library` = Build.`scala-library`
val `scala-compiler` = Build.`scala-compiler`
val `scala-reflect` = Build.`scala-reflect`
Expand Down
2 changes: 1 addition & 1 deletion compiler/src/dotty/tools/backend/jvm/GenBCode.scala
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ import Decorators._

import java.io.DataOutputStream

import dotty.tools.tasty.{ TastyBuffer, TastyHeaderUnpickler }

import scala.tools.asm
import scala.tools.asm.Handle
import scala.tools.asm.tree._
import tpd._
import StdNames._
import dotty.tools.dotc.core.tasty.{TastyBuffer, TastyHeaderUnpickler}
import dotty.tools.io._

class GenBCode extends Phase {
Expand Down
6 changes: 2 additions & 4 deletions compiler/src/dotty/tools/dotc/core/NameTags.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package dotty.tools
package dotc
package core
package dotty.tools.dotc.core

import tasty.TastyFormat
import dotty.tools.tasty.TastyFormat

/** The possible tags of a NameKind */
object NameTags extends TastyFormat.NameTags {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ package dotc
package core
package classfile

import dotty.tools.tasty.{ TastyReader, TastyHeaderUnpickler }

import Contexts._, Symbols._, Types._, Names._, StdNames._, NameOps._, Scopes._, Decorators._
import SymDenotations._, unpickleScala2.Scala2Unpickler._, Constants._, Annotations._, util.Spans._
import NameKinds.DefaultGetterName
import dotty.tools.dotc.core.tasty.{TastyHeaderUnpickler, TastyReader}
import ast.tpd._
import java.io.{ ByteArrayInputStream, ByteArrayOutputStream, DataInputStream, IOException }

Expand Down Expand Up @@ -1183,4 +1184,3 @@ class ClassfileParser(
throw new RuntimeException("bad constant pool tag " + in.buf(start) + " at byte " + start)
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ import dotty.tools.dotc.core.Mode
import dotty.tools.dotc.core.Symbols._
import dotty.tools.dotc.core.Types._
import dotty.tools.dotc.core.tasty.TreePickler.Hole
import dotty.tools.dotc.core.tasty.{PositionPickler, TastyPickler, TastyPrinter, TastyString}
import dotty.tools.dotc.core.tasty.{ PositionPickler, TastyPickler, TastyPrinter }
import dotty.tools.dotc.core.tasty.TreeUnpickler.UnpickleMode
import dotty.tools.dotc.quoted.QuoteContext
import dotty.tools.dotc.tastyreflect.ReflectionImpl

import dotty.tools.tasty.TastyString

import scala.internal.quoted._
import scala.reflect.ClassTag

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import dotty.tools.dotc.core.tasty._
import dotty.tools.dotc.core.tasty.TastyUnpickler.NameTable
import dotty.tools.dotc.core.tasty.TreeUnpickler.UnpickleMode

import dotty.tools.tasty.TastyReader

object QuoteUnpickler {
class QuotedTreeSectionUnpickler(posUnpickler: Option[PositionUnpickler], splices: Seq[Any])
extends DottyUnpickler.TreeSectionUnpickler(posUnpickler, None) {
Expand Down
5 changes: 3 additions & 2 deletions compiler/src/dotty/tools/dotc/core/tasty/CommentPickler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package dotty.tools.dotc.core.tasty
import dotty.tools.dotc.ast.tpd
import dotty.tools.dotc.core.Comments.{Comment, CommentsContext, ContextDocstrings}
import dotty.tools.dotc.core.Contexts.Context
import dotty.tools.dotc.core.tasty.TastyBuffer.{Addr, NoAddr}

import dotty.tools.tasty.TastyBuffer
import TastyBuffer.{Addr, NoAddr}

import java.nio.charset.Charset

Expand Down Expand Up @@ -40,4 +42,3 @@ class CommentPickler(pickler: TastyPickler, addrOfTree: tpd.Tree => Addr)(implic
}
}
}

Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package dotty.tools.dotc.core.tasty

import dotty.tools.dotc.core.Comments.Comment
import dotty.tools.dotc.core.tasty.TastyBuffer.Addr
import dotty.tools.dotc.util.Spans.Span

import dotty.tools.tasty.{TastyReader, TastyBuffer}
import TastyBuffer.Addr

import scala.collection.mutable.HashMap

import java.nio.charset.Charset
Expand All @@ -29,4 +31,3 @@ class CommentUnpickler(reader: TastyReader) {
def commentAt(addr: Addr): Option[Comment] =
comments.get(addr)
}

2 changes: 2 additions & 0 deletions compiler/src/dotty/tools/dotc/core/tasty/DottyUnpickler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import classfile.ClassfileParser
import Names.SimpleName
import TreeUnpickler.UnpickleMode

import dotty.tools.tasty.TastyReader

object DottyUnpickler {

/** Exception thrown if classfile is corrupted */
Expand Down
4 changes: 3 additions & 1 deletion compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ package dotc
package core
package tasty

import dotty.tools.tasty.TastyBuffer
import TastyBuffer._

import collection.mutable
import Names.{Name, chrs, SimpleName, DerivedName, TypeName}
import NameKinds._
import Decorators._
import TastyBuffer._
import scala.io.Codec

class NameBuffer extends TastyBuffer(10000) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,18 @@ package dotc
package core
package tasty

import dotty.tools.tasty.TastyFormat.SOURCE
import dotty.tools.tasty.TastyBuffer
import TastyBuffer._

import ast._
import ast.Trees._
import ast.Trees.WithLazyField
import util.{SourceFile, NoSource}
import core._
import Contexts._, Symbols._, Annotations._, Decorators._
import collection.mutable
import TastyBuffer._
import util.Spans._
import TastyFormat.SOURCE

class PositionPickler(pickler: TastyPickler, addrOfTree: untpd.Tree => Addr) {
val buf: TastyBuffer = new TastyBuffer(5000)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ package dotc
package core
package tasty

import dotty.tools.tasty.{TastyFormat, TastyBuffer, TastyReader}
import TastyFormat.SOURCE
import TastyBuffer.{Addr, NameRef}

import util.Spans._
import collection.{mutable, Map}
import TastyBuffer.{Addr, NameRef}
import TastyFormat.SOURCE
import Names.TermName

/** Unpickler for tree positions */
Expand Down Expand Up @@ -61,4 +63,3 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
def spanAt(addr: Addr): Span = spans.getOrElse(addr, NoSpan)
def sourcePathAt(addr: Addr): String = sourcePaths.getOrElse(addr, "")
}

6 changes: 4 additions & 2 deletions compiler/src/dotty/tools/dotc/core/tasty/TastyClassName.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ package dotty.tools.dotc
package core
package tasty

import dotty.tools.tasty.{TastyBuffer, TastyReader}
import TastyBuffer.NameRef

import Contexts._, Decorators._
import Names.{Name, TermName}
import StdNames.nme
import TastyUnpickler._
import TastyBuffer.NameRef
import util.Spans.offsetToInt
import printing.Highlighting._

Expand All @@ -20,7 +22,7 @@ class TastyClassName(bytes: Array[Byte]) {
def readName(): Option[(TermName, TermName)] = unpickle(new TreeSectionUnpickler)

class TreeSectionUnpickler extends SectionUnpickler[(TermName, TermName)](TreePickler.sectionName) {
import TastyFormat._
import dotty.tools.tasty.TastyFormat._
def unpickle(reader: TastyReader, tastyName: NameTable): (TermName, TermName) = {
import reader._
def readName() = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ package dotty.tools.dotc
package core
package tasty

import dotty.tools.tasty.TastyBuffer.NameRef

import Contexts._, Decorators._
import Names.Name
import TastyUnpickler._
import TastyBuffer.NameRef
import util.Spans.offsetToInt
import printing.Highlighting._

Expand Down
5 changes: 3 additions & 2 deletions compiler/src/dotty/tools/dotc/core/tasty/TastyPickler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package dotc
package core
package tasty

import dotty.tools.tasty.{TastyBuffer, TastyFormat, TastyHash}
import TastyFormat._
import collection.mutable
import TastyBuffer._

import collection.mutable
import core.Symbols.{Symbol, ClassSymbol}
import ast.tpd
import Decorators._
Expand Down Expand Up @@ -78,4 +80,3 @@ class TastyPickler(val rootCls: ClassSymbol) {

val treePkl: TreePickler = new TreePickler(this)
}

6 changes: 4 additions & 2 deletions compiler/src/dotty/tools/dotc/core/tasty/TastyPrinter.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ package dotty.tools.dotc
package core
package tasty

import dotty.tools.tasty.{TastyBuffer, TastyReader}
import TastyBuffer.{Addr, NameRef}

import Contexts._, Decorators._
import Names.Name
import TastyUnpickler._
import TastyBuffer.{Addr, NameRef}
import util.Spans.offsetToInt
import printing.Highlighting._

Expand Down Expand Up @@ -49,7 +51,7 @@ class TastyPrinter(bytes: Array[Byte])(implicit ctx: Context) {
}

class TreeSectionUnpickler extends SectionUnpickler[String](TreePickler.sectionName) {
import TastyFormat._
import dotty.tools.tasty.TastyFormat._

private val sb: StringBuilder = new StringBuilder

Expand Down
3 changes: 1 addition & 2 deletions compiler/src/dotty/tools/dotc/core/tasty/TastyString.scala
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dotty.tools.dotc.core.tasty
package dotty.tools.tasty

import java.io._
import java.util.Base64
Expand All @@ -25,4 +25,3 @@ object TastyString {
Base64.getDecoder().decode(string.result().getBytes(UTF_8))
}
}

5 changes: 3 additions & 2 deletions compiler/src/dotty/tools/dotc/core/tasty/TastyUnpickler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ package dotty.tools.dotc
package core
package tasty

import scala.collection.mutable
import dotty.tools.tasty.{TastyFormat, TastyBuffer, TastyReader, TastyHeaderUnpickler}
import TastyFormat.NameTags._
import TastyBuffer.NameRef

import scala.collection.mutable
import Names.{TermName, termName, EmptyTermName}
import NameKinds._

object TastyUnpickler {
class UnpickleException(msg: String) extends RuntimeException(msg)

abstract class SectionUnpickler[R](val name: String) {
def unpickle(reader: TastyReader, nameAtRef: NameTable): R
Expand Down
5 changes: 4 additions & 1 deletion compiler/src/dotty/tools/dotc/core/tasty/TreeBuffer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ package dotc
package core
package tasty

import util.Util.{bestFit, dble}
import dotty.tools.tasty.util.Util.dble
import dotty.tools.tasty.TastyBuffer
import TastyBuffer.{Addr, NoAddr, AddrWidth}

import util.Util.bestFit
import config.Printers.pickling
import ast.untpd.Tree

Expand Down
5 changes: 3 additions & 2 deletions compiler/src/dotty/tools/dotc/core/tasty/TreePickler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ package dotc
package core
package tasty

import dotty.tools.tasty.TastyFormat._
import dotty.tools.tasty.TastyBuffer._

import ast.Trees._
import ast.{untpd, tpd}
import TastyFormat._
import Contexts._, Symbols._, Types._, Names._, Constants._, Decorators._, Annotations._, Flags._
import typer.Inliner
import NameKinds._
import StdNames.nme
import TastyBuffer._
import transform.SymUtils._
import printing.Printer
import printing.Texts._
Expand Down
7 changes: 4 additions & 3 deletions compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import ast.{TreeTypeMap, Trees, tpd, untpd}
import Trees._
import Decorators._
import transform.SymUtils._

import dotty.tools.tasty.{TastyBuffer, TastyReader}
import TastyBuffer._

import scala.annotation.{switch, tailrec}
Expand All @@ -33,6 +35,8 @@ import config.Printers.pickling
import core.quoted.PickledQuotes
import dotty.tools.dotc.quoted.QuoteContext

import dotty.tools.tasty.TastyFormat._

import scala.quoted
import scala.internal.quoted.{TastyTreeExpr, TreeType}
import scala.annotation.constructorOnly
Expand All @@ -49,7 +53,6 @@ class TreeUnpickler(reader: TastyReader,
posUnpicklerOpt: Option[PositionUnpickler],
commentUnpicklerOpt: Option[CommentUnpickler],
splices: Seq[Any]) {
import TastyFormat._
import TreeUnpickler._
import tpd._

Expand Down Expand Up @@ -1454,5 +1457,3 @@ object TreeUnpickler {

class TreeWithoutOwner extends Exception
}


7 changes: 0 additions & 7 deletions compiler/src/dotty/tools/dotc/util/Util.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
package dotty.tools.dotc.util
import reflect.ClassTag

object Util {

Expand All @@ -23,10 +22,4 @@ object Util {
else recur(0, length, initMid)
}

/** An array twice the size of given array, with existing elements copied over */
def dble[T: ClassTag](arr: Array[T]): Array[T] = {
val arr1 = new Array[T](arr.length * 2)
System.arraycopy(arr, 0, arr1, 0, arr.length)
arr1
}
}
3 changes: 3 additions & 0 deletions compiler/test/dotty/Properties.scala
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ object Properties {
/** dotty-staging jar */
def dottyStaging: String = sys.props("dotty.tests.classes.dottyStaging")

/** tasty-core jar */
def tastyCore: String = sys.props("dotty.tests.classes.tastyCore")

/** compiler-interface jar */
def compilerInterface: String = sys.props("dotty.tests.classes.compilerInterface")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class BootstrappedOnlyCompilationTests extends ParallelTesting {
compileDir("compiler/src/dotty/tools/dotc/typer", withCompilerOptions),
compileDir("compiler/src/dotty/tools/dotc/util", withCompilerOptions),
compileDir("compiler/src/dotty/tools/io", withCompilerOptions),
compileDir("tasty/src/dotty/tools/tasty", withCompilerOptions),
compileList(
"testIssue6460",
List(
Expand Down Expand Up @@ -163,7 +164,8 @@ class BootstrappedOnlyCompilationTests extends ParallelTesting {
compileFile("tests/pos/pickleinf.scala", picklingWithCompilerOptions),
compileDir("compiler/src/dotty/tools/dotc/core/classfile", picklingWithCompilerOptions),
compileDir("compiler/src/dotty/tools/dotc/core/tasty", picklingWithCompilerOptions),
compileDir("compiler/src/dotty/tools/dotc/core/unpickleScala2", picklingWithCompilerOptions)
compileDir("compiler/src/dotty/tools/dotc/core/unpickleScala2", picklingWithCompilerOptions),
compileDir("tasty/src/dotty/tools/tasty", picklingWithCompilerOptions)
).limitThreads(4).checkCompile()
}

Expand Down
Loading