@@ -40,6 +40,7 @@ import util.Store
40
40
import plugins ._
41
41
import java .util .concurrent .atomic .AtomicInteger
42
42
import java .nio .file .InvalidPathException
43
+ import scala .compiletime .ops .double .Abs
43
44
44
45
object Contexts {
45
46
@@ -246,17 +247,26 @@ object Contexts {
246
247
/** Sourcefile corresponding to given abstract file, memoized */
247
248
def getSource (file : AbstractFile , codec : => Codec = Codec (settings.encoding.value)) = {
248
249
util.Stats .record(" Context.getSource" )
250
+ computeCachedSource(file)(SourceFile (_, codec))
251
+ }
252
+
253
+ /** empty Sourcefile associated to given abstract file, memoized */
254
+ def getEmptySource (file : AbstractFile ) = {
255
+ util.Stats .record(" Context.getEmptySource" )
256
+ computeCachedSource(file)(SourceFile (_, Array .empty[Char ]))
257
+ }
258
+
259
+ private inline def computeCachedSource (file : AbstractFile )(inline mkSource : AbstractFile => SourceFile ): SourceFile =
249
260
base.sources.getOrElseUpdate(file, {
250
261
val zincSources = zincInitialFiles
251
262
val cachedFile =
252
263
if zincSources != null then zincSources.lookup(file) match
253
264
case null => file
254
- case cached => cached
265
+ case cached : AbstractFile => cached
255
266
else
256
267
file
257
- SourceFile (cachedFile, codec )
268
+ mkSource (cachedFile)
258
269
})
259
- }
260
270
261
271
/** SourceFile with given path name, memoized */
262
272
def getSource (path : TermName ): SourceFile = getFile(path) match
0 commit comments