@@ -1035,7 +1035,6 @@ trait Types extends api.Types { self: SymbolTable =>
10351035 var excluded = excludedFlags | DEFERRED
10361036 var continue = true
10371037 var self : Type = null
1038- var membertpe : Type = null
10391038 while (continue) {
10401039 continue = false
10411040 val bcs0 = baseClasses
@@ -1045,12 +1044,13 @@ trait Types extends api.Types { self: SymbolTable =>
10451044 var entry = decls.elems
10461045 while (entry ne null ) {
10471046 val sym = entry.sym
1048- if (sym hasAllFlags requiredFlags) {
1049- val excl = sym.getFlag(excluded)
1047+ val flags = sym.flags
1048+ if ((flags & requiredFlags) == requiredFlags) {
1049+ val excl = flags & excluded
10501050 if (excl == 0L &&
10511051 (// omit PRIVATE LOCALS unless selector class is contained in class owning the def.
10521052 (bcs eq bcs0) ||
1053- ! sym.isPrivateLocal ||
1053+ (flags & PrivateLocal ) != PrivateLocal ||
10541054 (bcs0.head.hasTransOwner(bcs.head)))) {
10551055 if (members eq null ) members = newScope
10561056 var prevEntry = members.lookupEntry(sym.name)
@@ -1119,61 +1119,60 @@ trait Types extends api.Types { self: SymbolTable =>
11191119 var bcs = bcs0
11201120 while (! bcs.isEmpty) {
11211121 val decls = bcs.head.info.decls
1122- var entry =
1123- if (name eq nme.ANYNAME ) decls.elems
1124- else if ((fingerPrint & decls.fingerPrints) == 0 ) null
1125- else decls.lookupEntry(name)
1126- while (entry ne null ) {
1127- val sym = entry.sym
1128- if (sym hasAllFlags requiredFlags) {
1129- val excl = sym.getFlag(excluded)
1130- if (excl == 0L &&
1131- (// omit PRIVATE LOCALS unless selector class is contained in class owning the def.
1132- (bcs eq bcs0) ||
1133- ! sym.isPrivateLocal ||
1134- (bcs0.head.hasTransOwner(bcs.head)))) {
1135- if (name.isTypeName || stableOnly && sym.isStable) {
1136- Statistics .popTimer(typeOpsStack, start)
1137- if (suspension ne null ) suspension foreach (_.suspended = false )
1138- return sym
1139- } else if (member eq NoSymbol ) {
1140- member = sym
1141- } else if (members eq null ) {
1142- if ((member.name ne sym.name) ||
1143- ! ((member eq sym) ||
1144- (member.owner ne sym.owner) &&
1145- ! sym.isPrivate && {
1146- if (self eq null ) self = this .narrow
1147- if (membertpe eq null ) membertpe = self.memberType(member)
1148- (membertpe matches self.memberType(sym))
1149- })) {
1122+ if ((fingerPrint & decls.fingerPrints) != 0 ) {
1123+ var entry = decls.lookupEntry(name)
1124+ while (entry ne null ) {
1125+ val sym = entry.sym
1126+ val flags = sym.flags
1127+ if ((flags & requiredFlags) == requiredFlags) {
1128+ val excl = flags & excluded
1129+ if (excl == 0L &&
1130+ (// omit PRIVATE LOCALS unless selector class is contained in class owning the def.
1131+ (bcs eq bcs0) ||
1132+ (flags & PrivateLocal ) != PrivateLocal ||
1133+ (bcs0.head.hasTransOwner(bcs.head)))) {
1134+ if (name.isTypeName || stableOnly && sym.isStable) {
1135+ Statistics .popTimer(typeOpsStack, start)
1136+ if (suspension ne null ) suspension foreach (_.suspended = false )
1137+ return sym
1138+ } else if (member eq NoSymbol ) {
1139+ member = sym
1140+ } else if (members eq null ) {
1141+ if (! ((member eq sym) ||
1142+ (member.owner ne sym.owner) &&
1143+ (flags & PRIVATE ) == 0 && {
1144+ if (self eq null ) self = this .narrow
1145+ if (membertpe eq null ) membertpe = self.memberType(member)
1146+ (membertpe matches self.memberType(sym))
1147+ })) {
11501148 members = newScope
11511149 members enter member
11521150 members enter sym
1151+ }
1152+ } else {
1153+ var prevEntry = members.lookupEntry(sym.name)
1154+ var symtpe : Type = null
1155+ while ((prevEntry ne null ) &&
1156+ ! ((prevEntry.sym eq sym) ||
1157+ (prevEntry.sym.owner ne sym.owner) &&
1158+ (flags & PRIVATE ) == 0 && {
1159+ if (self eq null ) self = this .narrow
1160+ if (symtpe eq null ) symtpe = self.memberType(sym)
1161+ self.memberType(prevEntry.sym) matches symtpe
1162+ })) {
1163+ prevEntry = members lookupNextEntry prevEntry
1164+ }
1165+ if (prevEntry eq null ) {
1166+ members enter sym
1167+ }
11531168 }
1154- } else {
1155- var prevEntry = members.lookupEntry(sym.name)
1156- var symtpe : Type = null
1157- while ((prevEntry ne null ) &&
1158- ! ((prevEntry.sym eq sym) ||
1159- (prevEntry.sym.owner ne sym.owner) &&
1160- ! sym.hasFlag(PRIVATE ) && {
1161- if (self eq null ) self = this .narrow
1162- if (symtpe eq null ) symtpe = self.memberType(sym)
1163- self.memberType(prevEntry.sym) matches symtpe
1164- })) {
1165- prevEntry = members lookupNextEntry prevEntry
1166- }
1167- if (prevEntry eq null ) {
1168- members enter sym
1169- }
1169+ } else if (excl == DEFERRED ) {
1170+ continue = true
11701171 }
1171- } else if (excl == DEFERRED .toLong) {
1172- continue = true
11731172 }
1174- }
1175- entry = if (name == nme. ANYNAME ) entry.next else decls lookupNextEntry entry
1176- } // while (entry ne null )
1173+ entry = decls lookupNextEntry entry
1174+ } // while ( entry ne null)
1175+ } // if (fingerPrint matches )
11771176 // excluded = excluded | LOCAL
11781177 bcs = if (name == nme.CONSTRUCTOR ) Nil else bcs.tail
11791178 } // while (!bcs.isEmpty)
0 commit comments