Skip to content

Commit aab4701

Browse files
committed
exclude top level wrapper objects
fixes #11693, remove top level definition wrapper objects appearing as a definition occurrence in semanticdb, still record them as a symbol
1 parent f0aa7a9 commit aab4701

12 files changed

+35
-26
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ class ExtractSemanticDB extends Phase:
7979
|| sym.isLocalDummy
8080
|| sym.is(Synthetic)
8181
|| sym.isSetter
82+
|| sym.isTopLevelWrapperObject
8283
|| excludeDefOrUse(sym)
8384

8485
private def excludeDefOrUse(sym: Symbol)(using Context): Boolean =

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import core.Names.Name
88
import core.Types.Type
99
import core.Flags._
1010
import core.NameKinds
11-
import core.StdNames.nme
11+
import core.StdNames.{nme, str}
1212

1313
import java.lang.Character.{isJavaIdentifierPart, isJavaIdentifierStart}
1414

@@ -81,6 +81,13 @@ object Scala3:
8181
case NameKinds.ModuleClassName(original) => original.isScala2PackageObjectName
8282
case _ => false
8383

84+
def isTopLevelWrapperObjectName: Boolean = name match
85+
case name: Names.TermName => name.endsWith(str.TOPLEVEL_SUFFIX)
86+
case name: Names.TypeName =>
87+
name.toTermName match
88+
case NameKinds.ModuleClassName(original) => original.isTopLevelWrapperObjectName
89+
case _ => false
90+
8491
def isEmptyNumbered: Boolean =
8592
!name.is(NameKinds.WildcardParamName)
8693
&& { name match
@@ -97,6 +104,9 @@ object Scala3:
97104
def isScala2PackageObject(using Context): Boolean =
98105
sym.name.isScala2PackageObjectName && sym.owner.is(Package) && sym.is(Module)
99106

107+
def isTopLevelWrapperObject(using Context): Boolean =
108+
sym.name.isTopLevelWrapperObjectName && sym.owner.is(Package) && sym.is(Module)
109+
100110
def isAnonymous(using Context): Boolean =
101111
sym.isAnonymousClass
102112
|| sym.isAnonymousModuleVal

tests/semanticdb/expect/AnonymousGiven.expect.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ package angiven
22

33
trait Foo/*<-angiven::Foo#*/
44

5-
/*<-angiven::AnonymousGiven$package.*/def bar/*<-angiven::AnonymousGiven$package.bar().*/(using Foo/*->angiven::Foo#*/) = 42
5+
def bar/*<-angiven::AnonymousGiven$package.bar().*/(using Foo/*->angiven::Foo#*/) = 42

tests/semanticdb/expect/EndMarkers.expect.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ package endmarkers:
66
end this/*->endmarkers::MultiCtor#`<init>`(+1).*/
77
end MultiCtor/*->endmarkers::MultiCtor#*/
88

9-
/*<-endmarkers::EndMarkers$package.*/def topLevelMethod/*<-endmarkers::EndMarkers$package.topLevelMethod().*/: String/*->scala::Predef.String#*/ =
9+
def topLevelMethod/*<-endmarkers::EndMarkers$package.topLevelMethod().*/: String/*->scala::Predef.String#*/ =
1010
"hello"
1111
end topLevelMethod/*->endmarkers::EndMarkers$package.topLevelMethod().*/
1212

tests/semanticdb/expect/Extension.expect.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package ext
22

3-
/*<-ext::Extension$package.*/extension (s/*<-ext::Extension$package.foo().(s)*//*<-ext::Extension$package.`#*#`().(s)*/: String/*->scala::Predef.String#*/)
3+
extension (s/*<-ext::Extension$package.foo().(s)*//*<-ext::Extension$package.`#*#`().(s)*/: String/*->scala::Predef.String#*/)
44
def foo/*<-ext::Extension$package.foo().*/: Int/*->scala::Int#*/ = 42
55
def #*#/*<-ext::Extension$package.`#*#`().*/ (i/*<-ext::Extension$package.`#*#`().(i)*/: Int/*->scala::Int#*/): (String/*->scala::Predef.String#*/, Int/*->scala::Int#*/) = (/*->scala::Tuple2.apply().*/s/*->ext::Extension$package.`#*#`().(s)*/, i/*->ext::Extension$package.`#*#`().(i)*/)
66

tests/semanticdb/expect/InventedNames.expect.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ trait Z/*<-givens::Z#*/[T/*<-givens::Z#[T]*/]:
1111

1212

1313

14-
/*<-givens::InventedNames$package.*/given intValue/*<-givens::InventedNames$package.intValue.*/: Int/*->scala::Int#*/ = 4
14+
given intValue/*<-givens::InventedNames$package.intValue.*/: Int/*->scala::Int#*/ = 4
1515
given /*<-givens::InventedNames$package.given_String.*/String/*->scala::Predef.String#*/ = "str"
1616
given /*<-givens::InventedNames$package.given_Double().*/(using Int/*->scala::Int#*/): Double/*->scala::Double#*/ = 4.0
1717
given /*<-givens::InventedNames$package.given_List_T().*/[T/*<-givens::InventedNames$package.given_List_T().[T]*/]: List/*->scala::package.List#*/[T/*->givens::InventedNames$package.given_List_T().[T]*/] = Nil/*->scala::package.Nil.*/
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package ext
22

3-
/*<-ext::RightAssociativeExtension$package.*/extension (s/*<-ext::RightAssociativeExtension$package.`:*:`().(s)*/: String/*->scala::Predef.String#*/)
3+
extension (s/*<-ext::RightAssociativeExtension$package.`:*:`().(s)*/: String/*->scala::Predef.String#*/)
44
def :*:/*<-ext::RightAssociativeExtension$package.`:*:`().*/ (i/*<-ext::RightAssociativeExtension$package.`:*:`().(i)*/: Int/*->scala::Int#*/): (String/*->scala::Predef.String#*/, Int/*->scala::Int#*/) = (/*->scala::Tuple2.apply().*/s/*->ext::RightAssociativeExtension$package.`:*:`().(s)*/, i/*->ext::RightAssociativeExtension$package.`:*:`().(i)*/)
55

66
val b/*<-ext::RightAssociativeExtension$package.b.*/ = "foo" :*:/*->ext::RightAssociativeExtension$package.`:*:`().*/ 23
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package exports
22

3-
/*<-exports::`exports-package$package`.*/export example.{Decoder/*<-exports::`exports-package$package`.Decoder#*/, Encoder/*<-exports::`exports-package$package`.Encoder#*/, Codec/*<-exports::`exports-package$package`.Codec#*/}
3+
export example.{Decoder/*<-exports::`exports-package$package`.Decoder#*/, Encoder/*<-exports::`exports-package$package`.Encoder#*/, Codec/*<-exports::`exports-package$package`.Codec#*/}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package i9727
22

33
class Test/*<-i9727::Test#*/(a/*<-i9727::Test#a.*/: Int/*->scala::Int#*/)
4-
/*<-i9727::i9727$package.*/val a/*<-i9727::i9727$package.a.*/ = new Test/*->i9727::Test#*/(1)
4+
val a/*<-i9727::i9727$package.a.*/ = new Test/*->i9727::Test#*/(1)
55
val b/*<-i9727::i9727$package.b.*/ = new Test/*->i9727::Test#*/(2)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
/*<-_empty_::toplevel$package.*/inline val a/*<-_empty_::toplevel$package.a.*/ = ""
1+
inline val a/*<-_empty_::toplevel$package.a.*/ = ""
22
extension (x/*<-_empty_::toplevel$package.combine().(x)*/: Int/*->scala::Int#*/) def combine/*<-_empty_::toplevel$package.combine().*/ (y/*<-_empty_::toplevel$package.combine().(y)*/: Int/*->scala::Int#*/) = x/*->_empty_::toplevel$package.combine().(x)*/ +/*->scala::Int#`+`(+4).*/ y/*->_empty_::toplevel$package.combine().(y)*/
33
def combine/*<-_empty_::toplevel$package.combine(+1).*/(x/*<-_empty_::toplevel$package.combine(+1).(x)*/: Int/*->scala::Int#*/, y/*<-_empty_::toplevel$package.combine(+1).(y)*/: Int/*->scala::Int#*/, z/*<-_empty_::toplevel$package.combine(+1).(z)*/: Int/*->scala::Int#*/) = x/*->_empty_::toplevel$package.combine(+1).(x)*/ +/*->scala::Int#`+`(+4).*/ y/*->_empty_::toplevel$package.combine(+1).(y)*/ +/*->scala::Int#`+`(+4).*/ z/*->_empty_::toplevel$package.combine(+1).(z)*/
44
def combine/*<-_empty_::toplevel$package.combine(+2).*/ = 0
55
def foo/*<-_empty_::toplevel$package.foo().*/ = "foo"
66
/*<-_empty_::MyProgram#*//*->_empty_::toplevel$package.MyProgram().*//*->scala::util::CommandLineParser.parseArgument().*//*->_empty_::MyProgram#main().(args)*//*->scala::util::CommandLineParser.FromString.given_FromString_Int.*//*->scala::util::CommandLineParser.showError().*//*->local0*/@main/*->scala::main#*/ def MyProgram/*<-_empty_::toplevel$package.MyProgram().*/(times/*<-_empty_::toplevel$package.MyProgram().(times)*/: Int/*->scala::Int#*/): Unit/*->scala::Unit#*/ = (/*->scala::LowPriorityImplicits#intWrapper().*/1 to/*->scala::runtime::RichInt#to().*/ times/*->_empty_::toplevel$package.MyProgram().(times)*/) foreach/*->scala::collection::immutable::Range#foreach().*/ (_ => println/*->scala::Predef.println(+1).*/("hello"))
7+
def fooRef/*<-_empty_::toplevel$package.fooRef().*/ = toplevel$package/*->_empty_::toplevel$package.*/.foo/*->_empty_::toplevel$package.foo().*/

0 commit comments

Comments
 (0)