Skip to content

Commit b329646

Browse files
committed
Merge remote-tracking branch 'dotty/master' into call-graph-wip-1
2 parents 7e53968 + 5f1a8de commit b329646

File tree

1,073 files changed

+12894
-2718
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,073 files changed

+12894
-2718
lines changed

.drone.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,24 @@ pipeline:
1111
image: lampepfl/dotty:24-04-2017
1212
pull: true
1313
commands:
14-
- ln -s /var/cache/drone/ivy2 "$HOME/.ivy2"
15-
- sbt -J-Xmx4096m -J-XX:ReservedCodeCacheSize=512m -J-XX:MaxMetaspaceSize=1024m -Ddotty.drone.mem=4096m "${CI_TEST}"
14+
- ./project/scripts/sbt "${CI_TEST}"
1615
when:
1716
branch:
1817
exclude: gh-pages
1918

19+
publish_nightly:
20+
image: lampepfl/dotty:24-04-2017
21+
pull: true
22+
commands:
23+
- ./project/scripts/sbt ";clean ;publishLocal" "${CI_PUBLISH}"
24+
- ./project/scripts/sbt "sbt-dotty/scripted source-dependencies/*" "${CI_PUBLISH}"
25+
- ./project/scripts/sbtPublish ${CI_PUBLISH} $SONATYPE_USER $SONATYPE_PW $PGP_PW
26+
volumes:
27+
- /home/drone/keys:/keys
28+
when:
29+
event: deployment
30+
environment: nightly
31+
2032
documentation:
2133
image: lampepfl/dotty:24-04-2017
2234
pull: true
@@ -38,7 +50,7 @@ matrix:
3850
CI_PUBLISH: true
3951
- CI_TEST: legacyTests
4052
CI_PUBLISH: false
41-
- CI_TEST: ;test;sbt-dotty/scripted
53+
- CI_TEST: ;test;sbt-dotty/scripted compilerReporter/*;sbt-dotty/scripted discovery/*;sbt-dotty/scripted sbt-dotty/*
4254
CI_PUBLISH: false
4355
- CI_TEST: dotty-bootstrapped/test
4456
CI_PUBLISH: false

.drone.yml.sig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
eyJhbGciOiJIUzI1NiJ9.IyBBZnRlciB1cGRhdGluZyB0aGlzIGZpbGUsIHlvdSBuZWVkIHRvIHJlLXNpZ24gaXQ6CiMKIyAtIEluc3RhbGwgW2Ryb25lLWNsaV0oaHR0cDovL3JlYWRtZS5kcm9uZS5pby91c2FnZS9nZXR0aW5nLXN0YXJ0ZWQtY2xpLykKIyAtIENvcHkgeW91ciB0b2tlbiBmcm9tICBodHRwOi8vZG90dHktY2kuZXBmbC5jaC9hY2NvdW50IChDbGljayBTSE9XIFRPS0VOKQojIC0gKGV4cG9ydCBEUk9ORV9UT0tFTj15b3VyLXRva2VuOyBleHBvcnQgRFJPTkVfU0VSVkVSPWh0dHA6Ly9kb3R0eS1jaS5lcGZsLmNoOyBkcm9uZSBzaWduIGxhbXBlcGZsL2RvdHR5KQojCiMgUGxlYXNlIG5vdGUgdGhhdCB0aGUgc2lnbmluZyBjYW4gb25seSBiZSBkb25lIGJ5IGNvbGxhYm9yYXRvcnMuCgpwaXBlbGluZToKICB0ZXN0OgogICAgaW1hZ2U6IGxhbXBlcGZsL2RvdHR5OjI0LTA0LTIwMTcKICAgIHB1bGw6IHRydWUKICAgIGNvbW1hbmRzOgogICAgICAtIGxuIC1zIC92YXIvY2FjaGUvZHJvbmUvaXZ5MiAiJEhPTUUvLml2eTIiCiAgICAgIC0gc2J0IC1KLVhteDQwOTZtIC1KLVhYOlJlc2VydmVkQ29kZUNhY2hlU2l6ZT01MTJtIC1KLVhYOk1heE1ldGFzcGFjZVNpemU9MTAyNG0gLURkb3R0eS5kcm9uZS5tZW09NDA5Nm0gIiR7Q0lfVEVTVH0iCiAgICB3aGVuOgogICAgICBicmFuY2g6CiAgICAgICAgZXhjbHVkZTogZ2gtcGFnZXMKCiAgZG9jdW1lbnRhdGlvbjoKICAgIGltYWdlOiBsYW1wZXBmbC9kb3R0eToyNC0wNC0yMDE3CiAgICBwdWxsOiB0cnVlCiAgICBjb21tYW5kczoKICAgICAgLSAuL3Byb2plY3Qvc2NyaXB0cy9nZW5Eb2NzICIke0NJX1BVQkxJU0h9IiAkQk9UX1BBU1MKICAgIHdoZW46CiAgICAgIGJyYW5jaDogbWFzdGVyCgogIHNsYWNrOgogICAgaW1hZ2U6IHBsdWdpbnMvc2xhY2sKICAgIGNoYW5uZWw6IGRvdHR5CiAgICB3aGVuOgogICAgICBicmFuY2g6IG1hc3RlcgogICAgICBzdGF0dXM6IGNoYW5nZWQKCm1hdHJpeDoKICBpbmNsdWRlOgogICAgLSBDSV9URVNUOiBkb3R0eS1iaW4tdGVzdHMvdGVzdAogICAgICBDSV9QVUJMSVNIOiB0cnVlCiAgICAtIENJX1RFU1Q6IGxlZ2FjeVRlc3RzCiAgICAgIENJX1BVQkxJU0g6IGZhbHNlCiAgICAtIENJX1RFU1Q6IDt0ZXN0O3NidC1kb3R0eS9zY3JpcHRlZAogICAgICBDSV9QVUJMSVNIOiBmYWxzZQogICAgLSBDSV9URVNUOiBkb3R0eS1ib290c3RyYXBwZWQvdGVzdAogICAgICBDSV9QVUJMSVNIOiBmYWxzZQo.Ib2LCIvmphRVXRKdsgpf8MiRlNwZmtE7d0dRv7u_aMo
1+
eyJhbGciOiJIUzI1NiJ9.IyBBZnRlciB1cGRhdGluZyB0aGlzIGZpbGUsIHlvdSBuZWVkIHRvIHJlLXNpZ24gaXQ6CiMKIyAtIEluc3RhbGwgW2Ryb25lLWNsaV0oaHR0cDovL3JlYWRtZS5kcm9uZS5pby91c2FnZS9nZXR0aW5nLXN0YXJ0ZWQtY2xpLykKIyAtIENvcHkgeW91ciB0b2tlbiBmcm9tICBodHRwOi8vZG90dHktY2kuZXBmbC5jaC9hY2NvdW50IChDbGljayBTSE9XIFRPS0VOKQojIC0gKGV4cG9ydCBEUk9ORV9UT0tFTj15b3VyLXRva2VuOyBleHBvcnQgRFJPTkVfU0VSVkVSPWh0dHA6Ly9kb3R0eS1jaS5lcGZsLmNoOyBkcm9uZSBzaWduIGxhbXBlcGZsL2RvdHR5KQojCiMgUGxlYXNlIG5vdGUgdGhhdCB0aGUgc2lnbmluZyBjYW4gb25seSBiZSBkb25lIGJ5IGNvbGxhYm9yYXRvcnMuCgpwaXBlbGluZToKICB0ZXN0OgogICAgaW1hZ2U6IGxhbXBlcGZsL2RvdHR5OjI0LTA0LTIwMTcKICAgIHB1bGw6IHRydWUKICAgIGNvbW1hbmRzOgogICAgICAtIC4vcHJvamVjdC9zY3JpcHRzL3NidCAiJHtDSV9URVNUfSIKICAgIHdoZW46CiAgICAgIGJyYW5jaDoKICAgICAgICBleGNsdWRlOiBnaC1wYWdlcwoKICBwdWJsaXNoX25pZ2h0bHk6CiAgICBpbWFnZTogbGFtcGVwZmwvZG90dHk6MjQtMDQtMjAxNwogICAgcHVsbDogdHJ1ZQogICAgY29tbWFuZHM6CiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvc2J0ICI7Y2xlYW4gO3B1Ymxpc2hMb2NhbCIgIiR7Q0lfUFVCTElTSH0iCiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvc2J0ICJzYnQtZG90dHkvc2NyaXB0ZWQgc291cmNlLWRlcGVuZGVuY2llcy8qIiAiJHtDSV9QVUJMSVNIfSIKICAgICAgLSAuL3Byb2plY3Qvc2NyaXB0cy9zYnRQdWJsaXNoICR7Q0lfUFVCTElTSH0gJFNPTkFUWVBFX1VTRVIgJFNPTkFUWVBFX1BXICRQR1BfUFcKICAgIHZvbHVtZXM6CiAgICAgIC0gL2hvbWUvZHJvbmUva2V5czova2V5cwogICAgd2hlbjoKICAgICAgZXZlbnQ6IGRlcGxveW1lbnQKICAgICAgZW52aXJvbm1lbnQ6IG5pZ2h0bHkKCiAgZG9jdW1lbnRhdGlvbjoKICAgIGltYWdlOiBsYW1wZXBmbC9kb3R0eToyNC0wNC0yMDE3CiAgICBwdWxsOiB0cnVlCiAgICBjb21tYW5kczoKICAgICAgLSAuL3Byb2plY3Qvc2NyaXB0cy9nZW5Eb2NzICIke0NJX1BVQkxJU0h9IiAkQk9UX1BBU1MKICAgIHdoZW46CiAgICAgIGJyYW5jaDogbWFzdGVyCgogIHNsYWNrOgogICAgaW1hZ2U6IHBsdWdpbnMvc2xhY2sKICAgIGNoYW5uZWw6IGRvdHR5CiAgICB3aGVuOgogICAgICBicmFuY2g6IG1hc3RlcgogICAgICBzdGF0dXM6IGNoYW5nZWQKCm1hdHJpeDoKICBpbmNsdWRlOgogICAgLSBDSV9URVNUOiBkb3R0eS1iaW4tdGVzdHMvdGVzdAogICAgICBDSV9QVUJMSVNIOiB0cnVlCiAgICAtIENJX1RFU1Q6IGxlZ2FjeVRlc3RzCiAgICAgIENJX1BVQkxJU0g6IGZhbHNlCiAgICAtIENJX1RFU1Q6IDt0ZXN0O3NidC1kb3R0eS9zY3JpcHRlZCBjb21waWxlclJlcG9ydGVyLyo7c2J0LWRvdHR5L3NjcmlwdGVkIGRpc2NvdmVyeS8qO3NidC1kb3R0eS9zY3JpcHRlZCBzYnQtZG90dHkvKgogICAgICBDSV9QVUJMSVNIOiBmYWxzZQogICAgLSBDSV9URVNUOiBkb3R0eS1ib290c3RyYXBwZWQvdGVzdAogICAgICBDSV9QVUJMSVNIOiBmYWxzZQo.jkK92hXwTlQ5DGTdeZfSCcyYC-cQT_5bYb6Qa0O-M5o

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ project/local-plugins.sbt
1717
.ensime
1818
.ensime_cache/
1919

20+
# npm
21+
node_modules
22+
2023
# Scala-IDE specific
2124
.scala_dependencies
2225
.cache
@@ -28,6 +31,11 @@ project/local-plugins.sbt
2831
classes/
2932
*/bin/
3033

34+
# Dotty IDE
35+
/.dotty-ide-dev-port
36+
/.dotty-ide-artifact
37+
/.dotty-ide.json
38+
3139
# idea
3240
.idea
3341
.idea_modules
File renamed without changes.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Dotty
22
=====
33
[![Build Status](http://dotty-ci.epfl.ch/api/badges/lampepfl/dotty/status.svg)](http://dotty-ci.epfl.ch/lampepfl/dotty)
4+
[![Community Build Status](https://travis-ci.org/lampepfl/dotty-community-build.svg?branch=master)](https://travis-ci.org/lampepfl/dotty-community-build)
45
[![Join the chat at https://gitter.im/lampepfl/dotty](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/lampepfl/dotty?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
56

67
* [Homepage](http://dotty.epfl.ch)

bin/common

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ else
115115
echo "Failed to parse .packages file"
116116
build_all
117117
fi
118+
119+
if [ ! -f "$INTERFACES_JAR" -o ! -f "$MAIN_JAR" -o ! -f "$DOTTY_LIB_JAR" -o ! -f "$TEST_JAR" ]; then
120+
echo ".packages file corrupted, rebuilding"
121+
build_all
122+
fi
118123
fi
119124

120125
################# After this point, jar variables will be set #################
@@ -142,10 +147,6 @@ if [ "$SCALA_LIBRARY_JAR" == "" ]; then
142147
SCALA_LIBRARY_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang/scala-library/jars" "scala-library-$SCALA_VERSION.jar")
143148
fi
144149

145-
if [ "$SCALA_REFLECT_JAR" == "" ]; then
146-
SCALA_REFLECT_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang/scala-reflect/jars" "scala-reflect-$SCALA_VERSION.jar")
147-
fi
148-
149150
if [ "$SCALA_ASM_JAR" == "" ]; then
150151
SCALA_ASM_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles" "scala-asm-$SCALA_ASM_VERSION.jar")
151152
fi

bin/dotc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@ CompilerMain=dotty.tools.dotc.Main
2020
FromTasty=dotty.tools.dotc.FromTasty
2121
ReplMain=dotty.tools.dotc.repl.Main
2222

23-
if [ ! -f "$SCALA_LIBRARY_JAR" -o ! -f "$SCALA_REFLECT_JAR" -o ! -f "$SCALA_ASM_JAR" -o ! -f "$SBT_INTERFACE_JAR" ]
23+
if [ ! -f "$SCALA_LIBRARY_JAR" -o ! -f "$SCALA_ASM_JAR" -o ! -f "$SBT_INTERFACE_JAR" ]
2424
then
2525
echo To use this script please set
2626
echo SCALA_LIBRARY_JAR to point to scala-library-$SCALA_VERSION.jar "(currently $SCALA_LIBRARY_JAR)"
27-
echo SCALA_REFLECT_JAR to point to scala-reflect-$SCALA_VERSION.jar "(currently $SCALA_REFLECT_JAR)"
2827
echo SCALA_ASM_JAR to point to scala-asm-$SCALA_ASM_VERSION.jar "(currently $SCALA_ASM_JAR)"
2928
echo SBT_INTERFACE_JAR to point to interface-$SBT_VERSION.jar "(currently $SBT_INTERFACE_JAR)"
3029
fi
@@ -116,9 +115,9 @@ trap onExit INT
116115
classpathArgs () {
117116
if [[ "true" == "$bootstrapped" ]]; then
118117
check_jar "dotty-bootstrapped" "$DOTTY_JAR" "target" 'build_jar "test:runMain dotc.build" target' &> /dev/null
119-
toolchain="$DOTTY_JAR:$DOTTY_LIB_JAR:$SCALA_LIBRARY_JAR:$SCALA_REFLECT_JAR:$SCALA_ASM_JAR:$SBT_INTERFACE_JAR"
118+
toolchain="$DOTTY_JAR:$DOTTY_LIB_JAR:$SCALA_LIBRARY_JAR:$SCALA_ASM_JAR:$SBT_INTERFACE_JAR"
120119
else
121-
toolchain="$SCALA_LIBRARY_JAR:$DOTTY_LIB_JAR:$SCALA_REFLECT_JAR:$SCALA_ASM_JAR:$SBT_INTERFACE_JAR"
120+
toolchain="$SCALA_LIBRARY_JAR:$DOTTY_LIB_JAR:$SCALA_ASM_JAR:$SBT_INTERFACE_JAR"
122121
fi
123122
bcpJars="$INTERFACES_JAR:$MAIN_JAR:$DOTTY_LIB_JAR"
124123
cpJars="$INTERFACES_JAR:$MAIN_JAR:$DOTTY_LIB_JAR:$TEST_JAR"

bin/test/TestScripts.scala

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ class TestScripts {
1717

1818
private def executeScript(script: String): (Int, String) = {
1919
val sb = new StringBuilder
20-
val ret = Process(script) ! ProcessLogger { line => println(line); sb.append(line) }
20+
val ret = Process(script) ! ProcessLogger { line => println(line); sb.append(line + "\n") }
2121
val output = sb.toString
22-
println(output) // For CI, otherwise "terminal inactive for 5m0s, build cancelled"
2322
(ret, output)
2423
}
2524

@@ -59,7 +58,7 @@ class TestScripts {
5958

6059
val (retDotr, dotrOutput) = executeScript("./bin/dotr HelloWorld")
6160
assert(
62-
retDotr == 0 && dotrOutput == "hello world",
61+
retDotr == 0 && dotrOutput == "hello world\n",
6362
s"Running hello world exited with status: $retDotr and output: $dotrOutput"
6463
)
6564
}
@@ -93,8 +92,19 @@ class TestScripts {
9392

9493
/** dotc script should work after corrupting .packages */
9594
@Test def reCreatesPackagesIfNecessary = doUnlessWindows {
96-
executeScript("sed -i.old 's/2.1/2.X/' ./.packages") // That's going to replace 2.11 with 2.X1
97-
val (retFirstBuild, _) = executeScript("./bin/dotc ./tests/pos/HelloWorld.scala")
95+
import java.nio.file.{Paths, Files}
96+
import java.nio.charset.StandardCharsets
97+
val contents =
98+
"""|/Users/fixel/Projects/dotty/interfaces/target/dotty-interfaces-0.1.1-bin-SNAPSHOT-X.jar
99+
|/Users/fixel/Projects/dotty/compiler/target/scala-2.11/dotty-compiler_2.1X-0.1.1-bin-SNAPSHOT.jar
100+
|/Users/fixel/Projects/dotty/library/target/scala-2.11/dotty-library_2.1X-0.1.1-bin-SNAPSHOT.jar
101+
|/Users/fixel/Projects/dotty/doc-tool/target/scala-2.11/dotty-doc_2.1X-0.1.1-bin-SNAPSHOT-tests.jar"""
102+
.stripMargin
103+
104+
Files.write(Paths.get("./.packages"), contents.getBytes(StandardCharsets.UTF_8))
105+
106+
val (retFirstBuild, output) = executeScript("./bin/dotc ./tests/pos/HelloWorld.scala")
107+
assert(output.contains(".packages file corrupted"))
98108
assert(retFirstBuild == 0, "building dotc failed")
99109
}
100110
}

build.sbt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@ val `dotty-library` = Build.`dotty-library`
1111
val `dotty-library-bootstrapped` = Build.`dotty-library-bootstrapped`
1212
val `dotty-sbt-bridge` = Build.`dotty-sbt-bridge`
1313
val `dotty-sbt-bridge-bootstrapped` = Build.`dotty-sbt-bridge-bootstrapped`
14-
val `dotty-sbt-scripted-tests` = Build.`dotty-sbt-scripted-tests`
14+
val `dotty-language-server` = Build.`dotty-language-server`
1515
val sjsSandbox = Build.sjsSandbox
1616
val `dotty-bench` = Build.`dotty-bench`
1717
val `scala-library` = Build.`scala-library`
1818
val `scala-compiler` = Build.`scala-compiler`
1919
val `scala-reflect` = Build.`scala-reflect`
2020
val scalap = Build.scalap
21+
val dist = Build.dist
2122

2223
val `sbt-dotty` = Build.`sbt-dotty`
24+
val `vscode-dotty` = Build.`vscode-dotty`
2325

2426
inThisBuild(Build.thisBuildSettings)

compiler/sjs/backend/sjs/JSCodeGen.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class JSCodeGen()(implicit ctx: Context) {
182182

183183
private def getFileFor(cunit: CompilationUnit, sym: Symbol,
184184
suffix: String) = {
185-
import scala.reflect.io._
185+
import dotty.tools.io._
186186

187187
val outputDirectory: AbstractFile = // TODO Support virtual files
188188
new PlainDirectory(new Directory(new java.io.File(ctx.settings.d.value)))

compiler/src/dotty/tools/backend/jvm/CollectEntryPoints.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import java.io.{File => JFile}
1515
import scala.collection.generic.Clearable
1616
import scala.collection.mutable
1717
import scala.reflect.ClassTag
18-
import scala.reflect.io.{Directory, PlainDirectory, AbstractFile}
18+
import dotty.tools.io.{Directory, PlainDirectory, AbstractFile}
1919
import scala.tools.asm.{ClassVisitor, FieldVisitor, MethodVisitor}
2020
import scala.tools.nsc.backend.jvm.{BCodeHelpers, BackendInterface}
2121
import dotty.tools.dotc.core._

compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import scala.collection.generic.Clearable
1212
import scala.collection.mutable
1313
import scala.reflect.ClassTag
1414
import scala.reflect.internal.util.WeakHashSet
15-
import scala.reflect.io.{AbstractFile, Directory, PlainDirectory}
15+
import dotty.tools.io.{AbstractFile, Directory, PlainDirectory}
1616
import scala.tools.asm.{AnnotationVisitor, ClassVisitor, FieldVisitor, MethodVisitor}
1717
import scala.tools.nsc.backend.jvm.{BCodeHelpers, BackendInterface}
1818
import dotty.tools.dotc.core._

compiler/src/dotty/tools/backend/jvm/GenBCode.scala

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ import Symbols._
2525
import Denotations._
2626
import Phases._
2727
import java.lang.AssertionError
28-
import java.io.{FileOutputStream, File => JFile}
28+
import java.io.{DataOutputStream, File => JFile}
2929

3030
import scala.tools.asm
3131
import scala.tools.asm.tree._
3232
import dotty.tools.dotc.util.{DotClass, Positions}
3333
import tpd._
3434
import StdNames._
3535

36-
import scala.reflect.io.{AbstractFile, Directory, PlainDirectory}
36+
import dotty.tools.io.{AbstractFile, Directory, PlainDirectory}
3737

3838
class GenBCode extends Phase {
3939
def phaseName: String = "genBCode"
@@ -62,10 +62,10 @@ class GenBCodePipeline(val entryPoints: List[Symbol], val int: DottyBackendInter
6262

6363
val sourceFile = ctx.compilationUnit.source
6464

65-
/** Convert a `scala.reflect.io.AbstractFile` into a
65+
/** Convert a `dotty.tools.io.AbstractFile` into a
6666
* `dotty.tools.dotc.interfaces.AbstractFile`.
6767
*/
68-
private[this] def convertAbstractFile(absfile: scala.reflect.io.AbstractFile): interfaces.AbstractFile =
68+
private[this] def convertAbstractFile(absfile: dotty.tools.io.AbstractFile): interfaces.AbstractFile =
6969
new interfaces.AbstractFile {
7070
override def name = absfile.name
7171
override def path = absfile.path
@@ -206,12 +206,16 @@ class GenBCodePipeline(val entryPoints: List[Symbol], val int: DottyBackendInter
206206
val dataAttr = new CustomAttr(nme.TASTYATTR.mangledString, binary)
207207
val store = if (mirrorC ne null) mirrorC else plainC
208208
store.visitAttribute(dataAttr)
209+
val outTastyFile = getFileForClassfile(outF, store.name, ".tasty")
209210
if (ctx.settings.emitTasty.value) {
210-
val outTastyFile = getFileForClassfile(outF, store.name, ".tasty").file
211-
val fos = new FileOutputStream(outTastyFile, false)
212-
fos.write(binary)
213-
fos.close()
214-
211+
val outstream = new DataOutputStream(outTastyFile.bufferedOutput)
212+
213+
try outstream.write(binary)
214+
finally outstream.close()
215+
} else if (!outTastyFile.isVirtual) {
216+
// Create an empty file to signal that a tasty section exist in the corresponding .class
217+
// This is much cheaper and simpler to check than doing classfile parsing
218+
outTastyFile.create()
215219
}
216220
}
217221

compiler/src/dotty/tools/backend/jvm/LabelDefs.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import scala.collection.generic.Clearable
1616
import scala.collection.mutable
1717
import scala.collection.mutable.{ListBuffer, ArrayBuffer}
1818
import scala.reflect.ClassTag
19-
import scala.reflect.io.{Directory, PlainDirectory, AbstractFile}
19+
import dotty.tools.io.{Directory, PlainDirectory, AbstractFile}
2020
import scala.tools.asm.{ClassVisitor, FieldVisitor, MethodVisitor}
2121
import scala.tools.nsc.backend.jvm.{BCodeHelpers, BackendInterface}
2222
import dotty.tools.dotc.core._

compiler/src/dotty/tools/dotc/Compiler.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class Compiler {
5252
List(new FirstTransform, // Some transformations to put trees into a canonical form
5353
new CheckReentrant), // Internal use only: Check that compiled program has no data races involving global vars
5454
List(new CheckStatic, // Check restrictions that apply to @static members
55+
new CheckPhantomCast, // Checks that no Phantom types in are in casts
5556
new ElimRepeated, // Rewrite vararg parameters and arguments
5657
new RefChecks, // Various checks mostly related to abstract members and overriding
5758
new NormalizeFlags, // Rewrite some definition flags
@@ -135,7 +136,7 @@ class Compiler {
135136
val start = bootstrap.fresh
136137
.setOwner(defn.RootClass)
137138
.setTyper(new Typer)
138-
.setMode(Mode.ImplicitsEnabled)
139+
.addMode(Mode.ImplicitsEnabled)
139140
.setTyperState(new MutableTyperState(ctx.typerState, ctx.typerState.reporter, isCommittable = true))
140141
.setFreshNames(new FreshNameCreator.Default)
141142
ctx.initialize()(start) // re-initialize the base context with start

compiler/src/dotty/tools/dotc/FromTasty.scala

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,15 @@ object FromTasty extends Driver {
8383
case clsd: ClassDenotation =>
8484
clsd.infoOrCompleter match {
8585
case info: ClassfileLoader =>
86-
info.load(clsd) match {
87-
case Some(unpickler: DottyUnpickler) =>
88-
val List(unpickled) = unpickler.body(ctx.addMode(Mode.ReadPositions))
86+
info.load(clsd)
87+
val unpickled = clsd.symbol.asClass.tree
88+
if (unpickled != null) {
8989
val unit1 = new CompilationUnit(new SourceFile(clsd.symbol.sourceFile, Seq()))
9090
unit1.tpdTree = unpickled
91-
unit1.unpicklers += (clsd.classSymbol -> unpickler.unpickler)
9291
force.traverse(unit1.tpdTree)
9392
unit1
94-
case _ =>
93+
} else
9594
cannotUnpickle(s"its class file ${info.classfile} does not have a TASTY attribute")
96-
}
9795
case info =>
9896
cannotUnpickle(s"its info of type ${info.getClass} is not a ClassfileLoader")
9997
}

compiler/src/dotty/tools/dotc/Run.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import java.io.{BufferedWriter, OutputStreamWriter}
1818
import printing.XprintMode
1919

2020
import scala.annotation.tailrec
21-
import scala.reflect.io.VirtualFile
21+
import dotty.tools.io.VirtualFile
2222
import scala.util.control.NonFatal
2323

2424
/** A compiler run. Exports various methods to compile source files */

0 commit comments

Comments
 (0)