// my polymorphic name
String name = x.getName();
if (!x.isStatic()) {
if (polymorphicNames.get(x) == null) {
String mangleName = mangleNameForPoly(x);
JsName polyName;
if (belongsToSpecialObfuscatedType(x)) {
polyName = interfaceScope.declareName(mangleNameSpecialObfuscate(x));
polyName.setObfuscatable(false);
} else {
polyName = interfaceScope.declareName(mangleName, name);
}
// Record this as an alias, not the primary name
x.getSourceInfo().addCorrelation(
program.getCorrelator().by(polyName, true));
polymorphicNames.put(x, polyName);
}
}
if (x.isAbstract()) {
// just push a dummy scope that we can pop in endVisit
push(null);
return false;
}
// my global name
JsName globalName;
assert x.getEnclosingType() != null;
String mangleName = mangleNameForGlobal(x);
globalName = topScope.declareName(mangleName, name);
x.getSourceInfo().addCorrelation(program.getCorrelator().by(globalName));
names.put(x, globalName);