@@ -13,6 +13,8 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) {
1313
1414 def testAll (): Unit = {
1515 testOwnerlessLookup()
16+ testOwnerlessLookupOfInherited()
17+ testOwnerlessLookupOfClassWithinPackageWithPackageObject()
1618 testOwnedLookup()
1719 testStrictMemberLookup()
1820 }
@@ -46,7 +48,7 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) {
4648 cls(" tests.lookupInheritedMembers.pack1.A" ).fun(" x" ),
4749
4850 " tests.lookupInheritedMembers.pack2.B.x" ->
49- cls(" tests.lookupInheritedMembers.pack1.A " ).fun(" x" ),
51+ cls(" tests.lookupInheritedMembers.pack2.B " ).fun(" x" ),
5052 )
5153
5254 cases.foreach { case (query, sym) =>
@@ -62,6 +64,49 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) {
6264 assertSame(query, target, lookedUp)
6365 }
6466
67+ /**
68+ * We cannot test for cls().fun() beucase it returns parent fun symbol from tasty. Hence we will look for member (val, def, type) but compare its owner to just cls()
69+ */
70+ def testOwnerlessLookupOfInherited (): Unit = {
71+ val cases = List [(String , Sym )](
72+ " tests.lookupInheritedMembers.pack2.B.x" ->
73+ cls(" tests.lookupInheritedMembers.pack2.B" ),
74+
75+ " tests.lookupInheritedMembers.pack2.B.y" ->
76+ cls(" tests.lookupInheritedMembers.pack2.B" ),
77+
78+ " tests.lookupInheritedMembers.pack2.B.MyType" ->
79+ cls(" tests.lookupInheritedMembers.pack2.B" ),
80+ )
81+
82+ cases.foreach { case (query, sym) =>
83+ val target = sym.symbol
84+ val lookupRes = MemberLookup .lookupOpt(parseQuery(query), None )
85+ assertTrue(s " Couldn't look up: $query" , lookupRes.nonEmpty)
86+ val Some ((_ , _, Some (owner))) = lookupRes
87+ assertSame(query, target, owner)
88+ }
89+ }
90+
91+ /**
92+ * Classes should not have owner of package object
93+ */
94+ def testOwnerlessLookupOfClassWithinPackageWithPackageObject (): Unit = {
95+ val cases = List [(String , Sym )](
96+ " <:<" ->
97+ cls(" scala.<:<" ),
98+ )
99+
100+ cases.foreach { case (query, sym) =>
101+ val target = sym.symbol
102+ val lookupRes = MemberLookup .lookupOpt(parseQuery(query), Some (cls(" scala.=:=" ).symbol))
103+ assertTrue(s " Couldn't look up: $query" , lookupRes.nonEmpty)
104+ println(lookupRes)
105+ val Some ((_ , _, owner)) = lookupRes
106+ assertSame(query, None , owner)
107+ }
108+ }
109+
65110 def testOwnedLookup (): Unit = {
66111 val cases = List [((Sym , String ), Sym )](
67112 cls(" tests.A" ) -> " tests.Methods.simple" -> cls(" tests.Methods" ).fun(" simple" ),
0 commit comments