From d17927403bd1ca0026fa433777329cc06adf412c Mon Sep 17 00:00:00 2001 From: Nikita Beloglazov Date: Fri, 27 Sep 2019 11:34:04 -0700 Subject: [PATCH] Output module-local enum in legacy module. Related to #872. Tested: unit tests --- .../clutz/DeclarationGenerator.java | 1 + .../partial/declare_legacy_namespace_enu.d.ts | 19 +++++++++++++++++++ .../partial/declare_legacy_namespace_enu.js | 17 +++++++++++++++++ .../declare_legacy_namespace_enum.d.ts | 18 ++++++++++++++++++ .../partial/declare_legacy_namespace_enum.js | 13 +++++++++++++ 5 files changed, 68 insertions(+) create mode 100644 src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.d.ts create mode 100644 src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.js create mode 100644 src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.d.ts create mode 100644 src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.js diff --git a/src/main/java/com/google/javascript/clutz/DeclarationGenerator.java b/src/main/java/com/google/javascript/clutz/DeclarationGenerator.java index e89356e5..50de1212 100644 --- a/src/main/java/com/google/javascript/clutz/DeclarationGenerator.java +++ b/src/main/java/com/google/javascript/clutz/DeclarationGenerator.java @@ -1893,6 +1893,7 @@ private void visitEnumType(String symbolName, String qualifiedName, EnumType typ emit(elementsTypeName); emit(";"); emitBreak(); + typesUsed.add(elementsTypeName); return; } diff --git a/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.d.ts b/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.d.ts new file mode 100644 index 00000000..c5b50024 --- /dev/null +++ b/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.d.ts @@ -0,0 +1,19 @@ +// Generated from src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.js +declare namespace ಠ_ಠ.clutz.declare.legacy.namespace.enu { + export import E = module$contents$declare$legacy$namespace$enu_E ; +} +declare module 'goog:declare.legacy.namespace.enu' { + import enu = ಠ_ಠ.clutz.declare.legacy.namespace.enu; + export = enu; +} +// Generated from src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.js +declare namespace ಠ_ಠ.clutz { + enum module$contents$declare$legacy$namespace$enu_E { + A = 1.0 , + B = 2.0 , + C = 3.0 , + } +} +declare namespace ಠ_ಠ.clutz.module$exports$declare$legacy$namespace$enu { + export import E = ಠ_ಠ.clutz.module$contents$declare$legacy$namespace$enu_E ; +} diff --git a/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.js b/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.js new file mode 100644 index 00000000..b0a37db7 --- /dev/null +++ b/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enu.js @@ -0,0 +1,17 @@ +// This test is the same as declare_legacy_namespace_enum.js with the +// difference that it doesn't use "enum" which is reserved keyword and triggers +// separate flow in Clutz. + +goog.module('declare.legacy.namespace.enu'); +goog.module.declareLegacyNamespace(); + +/** + * @enum {number} + */ +const E = { + A: 1, + B: 2, + C: 3 +}; + +exports.E = E; diff --git a/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.d.ts b/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.d.ts new file mode 100644 index 00000000..98fceb7d --- /dev/null +++ b/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.d.ts @@ -0,0 +1,18 @@ +declare namespace ಠ_ಠ.clutz.declare.legacy { + let namespace : { enum : { E : module$contents$declare$legacy$namespace$enum_E } }; +} +declare module 'goog:declare.legacy.namespace.enum' { + import enum_ = ಠ_ಠ.clutz.declare.legacy.namespace; + export default enum_.enum; +} +// Generated from src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.js +declare namespace ಠ_ಠ.clutz { + enum module$contents$declare$legacy$namespace$enum_E { + A = 1.0 , + B = 2.0 , + C = 3.0 , + } +} +declare namespace ಠ_ಠ.clutz.module$exports$declare$legacy$namespace$enum { + export import E = ಠ_ಠ.clutz.module$contents$declare$legacy$namespace$enum_E ; +} diff --git a/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.js b/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.js new file mode 100644 index 00000000..f0391c5f --- /dev/null +++ b/src/test/java/com/google/javascript/clutz/testdata/partial/declare_legacy_namespace_enum.js @@ -0,0 +1,13 @@ +goog.module('declare.legacy.namespace.enum'); +goog.module.declareLegacyNamespace(); + +/** + * @enum {number} + */ +const E = { + A: 1, + B: 2, + C: 3 +}; + +exports.E = E;