diff --git a/bin/generate-exports.py b/bin/generate-exports.py index 28d7ad6e3d..6e98035ee2 100755 --- a/bin/generate-exports.py +++ b/bin/generate-exports.py @@ -52,9 +52,16 @@ class Class(Exportable): lines.append(' * @param {%s} options Options.\n' % (self.object_literal.extern_name(),)) lines.append(' */\n') lines.append('%sExport = function(options) {\n' % (self.name,)) - lines.append(' goog.base(this, {') - lines.extend(','.join('\n %s: options.%s' % (key, key) for key in sorted(self.object_literal.prop_types.keys()))) - lines.append('\n });\n') + lines.append(' /** @type {%s} */\n' % (self.object_literal.name,)) + lines.append(' var arg;\n'); + lines.append(' if (goog.isDefAndNotNull(options)) {\n') + lines.append(' arg = {') + lines.extend(','.join('\n %s: options.%s' % (key, key) for key in sorted(self.object_literal.prop_types.keys()))) + lines.append('\n };\n') + lines.append(' } else {\n') + lines.append(' arg = /** @type {%s} */ (options);\n' % (self.object_literal.name,)) + lines.append(' }\n') + lines.append(' goog.base(this, arg);\n') lines.append('};\n') lines.append('goog.inherits(%sExport, %s);\n' % (self.name, self.name)) lines.append('goog.exportSymbol(\n')