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