Pasting below the output after each pass that I got:
// parseInputs yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key, creator) {
map[key] = creator;
}
function lookup(key) {
return map[key]();
}
const exampleDefault = goog.define("exampleDefault", "python");
function lookupDefault() {
return lookup(exampleDefault);
}
function ProgrammingLanguage() {
}
ProgrammingLanguage.prototype.getName = function() {
};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", () => new PythonLanguage());
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", () => new JavaLanguage());
function sayHello() {
var defaultLanguage = lookupDefault();
return "Hello, " + defaultLanguage.getName() + "!";
}
console.log(sayHello());
// ************************************
INFO: From Doing JavaScript library-level checking of //experimental/users/rishipal/javascript/repro-registry-dead-code:lib:
// parseInputs yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key, creator) {
map[key] = creator;
}
function lookup(key) {
return map[key]();
}
/** @define {string} */
const exampleDefault = goog.define("exampleDefault", "python");
function lookupDefault() {
return lookup(exampleDefault);
}
/** @interface */
function ProgrammingLanguage() {
}
ProgrammingLanguage.prototype.getName = function() {
};
/** @constructor */
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", () => new PythonLanguage());
/** @constructor */
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", () => new JavaLanguage());
function sayHello() {
var defaultLanguage = lookupDefault();
return "Hello, " + defaultLanguage.getName() + "!";
}
console.log(sayHello());
// ************************************
INFO: From Compiling JavaScript for optimizations //experimental/users/rishipal/javascript/repro-registry-dead-code:bin:
// removeCastNodes yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key, creator) {
map[key] = creator;
}
function lookup(key) {
return map[key]();
}
const exampleDefault = goog.define("exampleDefault", "python");
function lookupDefault() {
return lookup(exampleDefault);
}
function ProgrammingLanguage() {
}
ProgrammingLanguage.prototype.getName = function() {
};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", () => new PythonLanguage());
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", () => new JavaLanguage());
function sayHello() {
var defaultLanguage = lookupDefault();
return "Hello, " + defaultLanguage.getName() + "!";
}
console.log(sayHello());
// ************************************
// processDefines_OPTIMIZE yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key, creator) {
map[key] = creator;
}
function lookup(key) {
return map[key]();
}
const exampleDefault = "python";
function lookupDefault() {
return lookup(exampleDefault);
}
function ProgrammingLanguage() {
}
ProgrammingLanguage.prototype.getName = function() {
};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", () => new PythonLanguage());
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", () => new JavaLanguage());
function sayHello() {
var defaultLanguage = lookupDefault();
return "Hello, " + defaultLanguage.getName() + "!";
}
console.log(sayHello());
// ************************************
// Es6RewriteArrowFunction yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key, creator) {
map[key] = creator;
}
function lookup(key) {
return map[key]();
}
const exampleDefault = "python";
function lookupDefault() {
return lookup(exampleDefault);
}
function ProgrammingLanguage() {
}
ProgrammingLanguage.prototype.getName = function() {
};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", function() {
return new PythonLanguage();
});
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", function() {
return new JavaLanguage();
});
function sayHello() {
var defaultLanguage = lookupDefault();
return "Hello, " + defaultLanguage.getName() + "!";
}
console.log(sayHello());
// ************************************
// Es6RewriteBlockScopedDeclaration yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key, creator) {
map[key] = creator;
}
function lookup(key) {
return map[key]();
}
var exampleDefault = "python";
function lookupDefault() {
return lookup(exampleDefault);
}
function ProgrammingLanguage() {
}
ProgrammingLanguage.prototype.getName = function() {
};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", function() {
return new PythonLanguage();
});
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", function() {
return new JavaLanguage();
});
function sayHello() {
var defaultLanguage = lookupDefault();
return "Hello, " + defaultLanguage.getName() + "!";
}
console.log(sayHello());
// ************************************
// normalize yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key$jscomp$45, creator) {
map[key$jscomp$45] = creator;
}
function lookup(key$jscomp$46) {
return map[key$jscomp$46]();
}
var exampleDefault = "python";
function lookupDefault() {
return lookup(exampleDefault);
}
function ProgrammingLanguage() {
}
ProgrammingLanguage.prototype.getName = function() {
};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", function() {
return new PythonLanguage();
});
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", function() {
return new JavaLanguage();
});
function sayHello() {
var defaultLanguage = lookupDefault();
return "Hello, " + defaultLanguage.getName() + "!";
}
console.log(sayHello());
// ************************************
// earlyInlineVariables yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key$jscomp$45, creator) {
map[key$jscomp$45] = creator;
}
function lookup(key$jscomp$46) {
return map[key$jscomp$46]();
}
function lookupDefault() {
return lookup("python");
}
(function ProgrammingLanguage() {
}).prototype.getName = function() {
};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", function() {
return new PythonLanguage();
});
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", function() {
return new JavaLanguage();
});
console.log(function sayHello() {
return "Hello, " + lookupDefault().getName() + "!";
}());
// ************************************
// earlyPeepholeOptimizations yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key$jscomp$45, creator) {
map[key$jscomp$45] = creator;
}
function lookup(key$jscomp$46) {
return map[key$jscomp$46]();
}
function lookupDefault() {
return lookup("python");
}
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", function() {
return new PythonLanguage();
});
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", function() {
return new JavaLanguage();
});
console.log(function sayHello() {
return "Hello, " + lookupDefault().getName() + "!";
}());
// ************************************
// removeUnusedCode yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key$jscomp$45, creator) {
map[key$jscomp$45] = creator;
}
function lookup(key$jscomp$46) {
return map[key$jscomp$46]();
}
function lookupDefault() {
return lookup("python");
}
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", function() {
return new PythonLanguage();
});
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", function() {
return new JavaLanguage();
});
console.log(function() {
return "Hello, " + lookupDefault().getName() + "!";
}());
// ************************************
// optimizeCalls yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function register(key$jscomp$45, creator) {
map[key$jscomp$45] = creator;
}
function lookup() {
var key$jscomp$46 = "python";
return map[key$jscomp$46]();
}
function lookupDefault() {
return lookup();
}
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
register("python", function() {
return new PythonLanguage();
});
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
register("java", function() {
return new JavaLanguage();
});
console.log(function() {
return "Hello, " + lookupDefault().getName() + "!";
}());
// ************************************
// inlineFunctions yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function lookup() {
var key$jscomp$46 = "python";
return map[key$jscomp$46]();
}
function lookupDefault() {
return lookup();
}
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
{
var creator$jscomp$inline_1 = function() {
return new PythonLanguage();
};
map["python"] = creator$jscomp$inline_1;
}
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
{
var creator$jscomp$inline_4 = function() {
return new JavaLanguage();
};
map["java"] = creator$jscomp$inline_4;
}
console.log("Hello, " + lookupDefault().getName() + "!");
// ************************************
// inlineVariables yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function lookup() {
return map["python"]();
}
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
{
map["python"] = function() {
return new PythonLanguage();
};
}
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
{
map["java"] = function() {
return new JavaLanguage();
};
}
console.log("Hello, " + function lookupDefault() {
return lookup();
}().getName() + "!");
// ************************************
// removeUnusedCode yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function lookup() {
return map["python"]();
}
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
{
map["python"] = function() {
return new PythonLanguage();
};
}
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
{
map["java"] = function() {
return new JavaLanguage();
};
}
console.log("Hello, " + function() {
return lookup();
}().getName() + "!");
// ************************************
// peepholeOptimizations yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function lookup() {
return map["python"]();
}
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
map["python"] = function() {
return new PythonLanguage();
};
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
map["java"] = function() {
return new JavaLanguage();
};
console.log("Hello, " + function() {
return lookup();
}().getName() + "!");
// ************************************
// inlineFunctions yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function lookup() {
return map["python"]();
}
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
map["python"] = function() {
return new PythonLanguage();
};
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
map["java"] = function() {
return new JavaLanguage();
};
console.log("Hello, " + lookup().getName() + "!");
// ************************************
// inlineVariables yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
map["python"] = function() {
return new PythonLanguage();
};
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
map["java"] = function() {
return new JavaLanguage();
};
console.log("Hello, " + function lookup() {
return map["python"]();
}().getName() + "!");
// ************************************
// removeUnusedCode yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
map["python"] = function() {
return new PythonLanguage();
};
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
map["java"] = function() {
return new JavaLanguage();
};
console.log("Hello, " + function() {
return map["python"]();
}().getName() + "!");
// ************************************
// inlineFunctions yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
map["python"] = function() {
return new PythonLanguage();
};
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
map["java"] = function() {
return new JavaLanguage();
};
console.log("Hello, " + map["python"]().getName() + "!");
// ************************************
INFO: From Compiling JavaScript for finish default //experimental/users/rishipal/javascript/repro-registry-dead-code:bin:
// replaceProtectedMessages yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function PythonLanguage() {
}
PythonLanguage.prototype.getName = function() {
return "Python";
};
map["python"] = function() {
return new PythonLanguage();
};
function JavaLanguage() {
}
JavaLanguage.prototype.getName = function() {
return "Java";
};
map["java"] = function() {
return new JavaLanguage();
};
console.log("Hello, " + map["python"]().getName() + "!");
// ************************************
// renameProperties yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function PythonLanguage() {
}
PythonLanguage.prototype.g = function() {
return "Python";
};
map["python"] = function() {
return new PythonLanguage();
};
function JavaLanguage() {
}
JavaLanguage.prototype.g = function() {
return "Java";
};
map["java"] = function() {
return new JavaLanguage();
};
console.log("Hello, " + map["python"]().g() + "!");
// ************************************
// convertToDottedProperties yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var map = {};
function PythonLanguage() {
}
PythonLanguage.prototype.g = function() {
return "Python";
};
map.python = function() {
return new PythonLanguage();
};
function JavaLanguage() {
}
JavaLanguage.prototype.g = function() {
return "Java";
};
map.java = function() {
return new JavaLanguage();
};
console.log("Hello, " + map.python().g() + "!");
// ************************************
// renameVars yields:
// ************************************
// experimental/users/rishipal/javascript/repro-registry-dead-code/some.js
var a = {};
function b() {
}
b.prototype.g = function() {
return "Python";
};
a.python = function() {
return new b();
};
function c() {
}
c.prototype.g = function() {
return "Java";
};
a.java = function() {
return new c();
};
console.log("Hello, " + a.python().g() + "!");