File tree 2 files changed +3
-5
lines changed
src/reflect/scala/reflect 2 files changed +3
-5
lines changed Original file line number Diff line number Diff line change @@ -242,6 +242,8 @@ trait Mirrors { self: Universe =>
242
242
* Such a mirror can be used to further reflect against the members of the object
243
243
* to get/set fields, invoke methods and inspect inner classes and objects.
244
244
*/
245
+ // we need a ClassTag here to preserve boxity of primitives
246
+ // the class tag lets us tell apart `mirror.reflect(2)` and `mirror.reflect(new Integer(2))`
245
247
def reflect [T : ClassTag ](obj : T ): InstanceMirror
246
248
247
249
/** Reflects against a static class symbol and returns a mirror
Original file line number Diff line number Diff line change @@ -161,11 +161,7 @@ trait JavaMirrors extends internal.SymbolTable with api.JavaUniverse { self: Sym
161
161
} else if (wannabe.owner == AnyValClass ) {
162
162
if (! owner.isPrimitiveValueClass && ! owner.isDerivedValueClass) ErrorNotMember (wannabe, owner)
163
163
} else {
164
- def isMemberOf (wannabe : Symbol , owner : ClassSymbol ): Boolean = {
165
- val isNonShadowedMember = owner.info.member(wannabe.name).alternatives.contains(wannabe)
166
- isNonShadowedMember || owner.info.baseClasses.tail.exists(base => isMemberOf(wannabe, base.asClass))
167
- }
168
- if (! isMemberOf(wannabe, owner)) ErrorNotMember (wannabe, owner)
164
+ if (! (owner.info.baseClasses contains wannabe.owner)) ErrorNotMember (wannabe, owner)
169
165
}
170
166
}
171
167
You can’t perform that action at this time.
0 commit comments