Skip to content

Commit abbd237

Browse files
committed
Fix sbt-test/source-dependencies/binary
1 parent 968cc56 commit abbd237

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ object Symbols {
150150
* symbols defined by the user in a prior run of the REPL, that are still valid.
151151
*/
152152
final def isDefinedInSource(using Context): Boolean =
153-
span.exists && isValidInCurrentRun && associatedFileMatches(_.extension != "class")
153+
span.exists && isValidInCurrentRun
154+
&& associatedFileMatches(file => file.extension != "class" && file.extension != "tasty")
154155

155156
/** Is symbol valid in current run? */
156157
final def isValidInCurrentRun(using Context): Boolean =
@@ -284,7 +285,7 @@ object Symbols {
284285

285286
final def source(using Context): SourceFile = {
286287
def valid(src: SourceFile): SourceFile =
287-
if (src.exists && src.file.extension != "class") src
288+
if (src.exists && src.file.extension != "class" && src.file.extension != "tasty") src
288289
else NoSource
289290

290291
if (!denot.exists) NoSource

compiler/src/dotty/tools/dotc/sbt/ExtractDependencies.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,13 @@ class ExtractDependencies extends Phase {
144144
if (depFile.extension == "class") {
145145
// Dependency is external -- source is undefined
146146
processExternalDependency(depFile, dep.to.binaryClassName)
147+
} else if (depFile.extension == "tasty") {
148+
val parent = depFile match // TODO: simplify when #3552 is fixed
149+
case depFile: io.ZipArchive#Entry => depFile.parent
150+
case _ => depFile.container
151+
val depClassFile = parent.lookupName(dep.to.binaryClassName + ".class", directory = false)
152+
if depClassFile != null then
153+
processExternalDependency(depClassFile, dep.to.binaryClassName)
147154
} else if (allowLocal || depFile.file != sourceFile) {
148155
// We cannot ignore dependencies coming from the same source file because
149156
// the dependency info needs to propagate. See source-dependencies/trait-trait-211.

sbt-test/source-dependencies/binary/test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
$ sleep 2000
44

55
$ copy-file changes/Break.scala dep/A.scala
6-
# FIXME -> use/compile
6+
-> use/compile

0 commit comments

Comments
 (0)