diff --git a/transpiler/src/main/java/org/jsweet/transpiler/Java2TypeScriptTranslator.java b/transpiler/src/main/java/org/jsweet/transpiler/Java2TypeScriptTranslator.java index 73dbdfb9..8ef8535b 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/Java2TypeScriptTranslator.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/Java2TypeScriptTranslator.java @@ -5384,10 +5384,13 @@ public class Java2TypeScriptTranslator extends AbstractTreePrinter { @Override public void visitSwitch(JCSwitch switchStatement) { print("switch("); - print(switchStatement.selector); - if (context.types.isSameType(context.symtab.charType, - context.types.unboxedTypeOrType(switchStatement.selector.type))) { - print(".charCodeAt(0)"); + if (!getAdapter() + .substituteSwitchStatementSelector(ExtendedElementFactory.INSTANCE.create(switchStatement.selector))) { + print(switchStatement.selector); + if (context.types.isSameType(context.symtab.charType, + context.types.unboxedTypeOrType(switchStatement.selector.type))) { + print(".charCodeAt(0)"); + } } print(") {").println(); for (JCCase caseStatement : switchStatement.cases) { diff --git a/transpiler/src/main/java/org/jsweet/transpiler/extension/PrinterAdapter.java b/transpiler/src/main/java/org/jsweet/transpiler/extension/PrinterAdapter.java index 3433dad6..17284f0c 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/extension/PrinterAdapter.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/extension/PrinterAdapter.java @@ -1069,6 +1069,13 @@ public class PrinterAdapter { return parentAdapter == null ? false : parentAdapter.substituteCaseStatementPattern(caseStatement, pattern); } + /** + * Substitutes if necessary the selector expression of a switch statement. + */ + public boolean substituteSwitchStatementSelector(ExtendedElement selector) { + return parentAdapter == null ? false : parentAdapter.substituteSwitchStatementSelector(selector); + } + /** * This method is called after a type was printed. */