@@ -1034,7 +1034,6 @@ trait Types extends api.Types { self: SymbolTable =>
1034
1034
var excluded = excludedFlags | DEFERRED
1035
1035
var continue = true
1036
1036
var self : Type = null
1037
- var membertpe : Type = null
1038
1037
while (continue) {
1039
1038
continue = false
1040
1039
val bcs0 = baseClasses
@@ -1044,12 +1043,13 @@ trait Types extends api.Types { self: SymbolTable =>
1044
1043
var entry = decls.elems
1045
1044
while (entry ne null ) {
1046
1045
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
1049
1049
if (excl == 0L &&
1050
1050
(// omit PRIVATE LOCALS unless selector class is contained in class owning the def.
1051
1051
(bcs eq bcs0) ||
1052
- ! sym.isPrivateLocal ||
1052
+ (flags & PrivateLocal ) != PrivateLocal ||
1053
1053
(bcs0.head.hasTransOwner(bcs.head)))) {
1054
1054
if (members eq null ) members = newScope
1055
1055
var prevEntry = members.lookupEntry(sym.name)
@@ -1118,61 +1118,60 @@ trait Types extends api.Types { self: SymbolTable =>
1118
1118
var bcs = bcs0
1119
1119
while (! bcs.isEmpty) {
1120
1120
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
+ })) {
1149
1147
members = newScope
1150
1148
members enter member
1151
1149
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
+ }
1152
1167
}
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
1169
1170
}
1170
- } else if (excl == DEFERRED .toLong) {
1171
- continue = true
1172
1171
}
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 )
1176
1175
// excluded = excluded | LOCAL
1177
1176
bcs = if (name == nme.CONSTRUCTOR ) Nil else bcs.tail
1178
1177
} // while (!bcs.isEmpty)
0 commit comments