Skip to content

Commit ea1116d

Browse files
authored
fix: semanticdb symbol creation when targetName set (#20950)
scalameta/metals#6558
2 parents 06c6a71 + 05f45b1 commit ea1116d

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

compiler/src/dotty/tools/dotc/semanticdb/SemanticSymbolBuilder.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ class SemanticSymbolBuilder:
9191
case _ =>
9292
end find
9393
val sig = sym.signature
94-
find(_.signature == sig)
94+
val targetName = sym.targetName
95+
find(sym => sym.signature == sig && sym.targetName == targetName)
9596

9697
def addDescriptor(sym: Symbol): Unit =
9798
if sym.is(ModuleClass) then
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package example
2+
3+
object TargetName/*<-example::TargetName.*/:
4+
@annotation.targetName/*->scala::annotation::targetName#*/("m1")
5+
def m/*<-example::TargetName.m().*/(i/*<-example::TargetName.m().(i)*/: Int/*->scala::Int#*/) = 1
6+
@annotation.targetName/*->scala::annotation::targetName#*/("m2")
7+
def m/*<-example::TargetName.m(+1).*/(i/*<-example::TargetName.m(+1).(i)*/: Int/*->scala::Int#*/) = 1
8+
def m1/*<-example::TargetName.m1().*/(i/*<-example::TargetName.m1().(i)*/: String/*->scala::Predef.String#*/) = 1
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package example
2+
3+
object TargetName:
4+
@annotation.targetName("m1")
5+
def m(i: Int) = 1
6+
@annotation.targetName("m2")
7+
def m(i: Int) = 1
8+
def m1(i: String) = 1

tests/semanticdb/metac.expect

+37
Original file line numberDiff line numberDiff line change
@@ -3799,6 +3799,43 @@ Synthetics:
37993799
.map => *[Int]
38003800
[3:1..3:5):List => *.apply[Int]
38013801

3802+
expect/TargetName.scala
3803+
-----------------------
3804+
3805+
Summary:
3806+
Schema => SemanticDB v4
3807+
Uri => TargetName.scala
3808+
Text => empty
3809+
Language => Scala
3810+
Symbols => 7 entries
3811+
Occurrences => 15 entries
3812+
3813+
Symbols:
3814+
example/TargetName. => final object TargetName extends Object { self: TargetName.type => +4 decls }
3815+
example/TargetName.m(). => @targetName method m (param i: Int): Int
3816+
example/TargetName.m().(i) => param i: Int
3817+
example/TargetName.m(+1). => @targetName method m (param i: Int): Int
3818+
example/TargetName.m(+1).(i) => param i: Int
3819+
example/TargetName.m1(). => method m1 (param i: String): Int
3820+
example/TargetName.m1().(i) => param i: String
3821+
3822+
Occurrences:
3823+
[0:8..0:15): example <- example/
3824+
[2:7..2:17): TargetName <- example/TargetName.
3825+
[3:3..3:13): annotation -> scala/annotation/
3826+
[3:14..3:24): targetName -> scala/annotation/targetName#
3827+
[4:6..4:7): m <- example/TargetName.m().
3828+
[4:8..4:9): i <- example/TargetName.m().(i)
3829+
[4:11..4:14): Int -> scala/Int#
3830+
[5:3..5:13): annotation -> scala/annotation/
3831+
[5:14..5:24): targetName -> scala/annotation/targetName#
3832+
[6:6..6:7): m <- example/TargetName.m(+1).
3833+
[6:8..6:9): i <- example/TargetName.m(+1).(i)
3834+
[6:11..6:14): Int -> scala/Int#
3835+
[7:6..7:8): m1 <- example/TargetName.m1().
3836+
[7:9..7:10): i <- example/TargetName.m1().(i)
3837+
[7:12..7:18): String -> scala/Predef.String#
3838+
38023839
expect/Traits.scala
38033840
-------------------
38043841

0 commit comments

Comments
 (0)