File tree Expand file tree Collapse file tree 2 files changed +16
-15
lines changed
compiler/src/dotty/tools/dotc Expand file tree Collapse file tree 2 files changed +16
-15
lines changed Original file line number Diff line number Diff line change @@ -335,21 +335,7 @@ class PostTyper extends MacroTransform with IdentityDenotTransformer { thisPhase
335
335
&& ctx.compilationUnit.source.exists
336
336
&& sym != defn.SourceFileAnnot
337
337
then
338
- def sourcerootPath =
339
- java.nio.file.Paths .get(ctx.settings.sourceroot.value)
340
- .toAbsolutePath
341
- .normalize
342
- val file = ctx.compilationUnit.source.file
343
- val jpath = file.jpath
344
- val relativePath =
345
- if jpath eq null then file.path // repl and other custom tests use abstract files with no path
346
- else if jpath.isAbsolute then
347
- val cunitPath = jpath.normalize
348
- // On Windows we can only relativize paths if root component matches
349
- // (see implementation of sun.nio.fs.WindowsPath#relativize)
350
- try sourcerootPath.relativize(cunitPath).toString
351
- catch case _ : IllegalArgumentException => cunitPath.toString
352
- else jpath.normalize.toString
338
+ val relativePath = util.SourceFile .relativePath(ctx.compilationUnit.source)
353
339
sym.addAnnotation(Annotation .makeSourceFile(relativePath))
354
340
else (tree.rhs, sym.info) match
355
341
case (rhs : LambdaTypeTree , bounds : TypeBounds ) =>
Original file line number Diff line number Diff line change @@ -209,6 +209,21 @@ object SourceFile {
209
209
val src = new SourceFile (new VirtualFile (name, content.getBytes(StandardCharsets .UTF_8 )), scala.io.Codec .UTF8 )
210
210
src._maybeInComplete = maybeIncomplete
211
211
src
212
+
213
+ def relativePath (source : SourceFile )(using Context ): String = {
214
+ def sourcerootPath =
215
+ java.nio.file.Paths .get(ctx.settings.sourceroot.value)
216
+ .toAbsolutePath
217
+ .normalize
218
+ val file = source.file
219
+ val jpath = file.jpath
220
+ if jpath eq null then
221
+ file.path // repl and other custom tests use abstract files with no path
222
+ else if jpath.isAbsolute then
223
+ sourcerootPath.relativize(jpath.normalize).toString
224
+ else
225
+ jpath.normalize.toString
226
+ }
212
227
}
213
228
214
229
@ sharable object NoSource extends SourceFile (NoAbstractFile , Array [Char ]()) {
You can’t perform that action at this time.
0 commit comments