@@ -13,6 +13,8 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) {
13
13
14
14
def testAll (): Unit = {
15
15
testOwnerlessLookup()
16
+ testOwnerlessLookupOfInherited()
17
+ testOwnerlessLookupOfClassWithinPackageWithPackageObject()
16
18
testOwnedLookup()
17
19
testStrictMemberLookup()
18
20
}
@@ -46,7 +48,7 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) {
46
48
cls(" tests.lookupInheritedMembers.pack1.A" ).fun(" x" ),
47
49
48
50
" tests.lookupInheritedMembers.pack2.B.x" ->
49
- cls(" tests.lookupInheritedMembers.pack1.A " ).fun(" x" ),
51
+ cls(" tests.lookupInheritedMembers.pack2.B " ).fun(" x" ),
50
52
)
51
53
52
54
cases.foreach { case (query, sym) =>
@@ -62,6 +64,49 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) {
62
64
assertSame(query, target, lookedUp)
63
65
}
64
66
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
+
65
110
def testOwnedLookup (): Unit = {
66
111
val cases = List [((Sym , String ), Sym )](
67
112
cls(" tests.A" ) -> " tests.Methods.simple" -> cls(" tests.Methods" ).fun(" simple" ),
0 commit comments