From fc85e93a88fa6a0a46becc623e90f34cc3f7270d Mon Sep 17 00:00:00 2001 From: lgrignon Date: Wed, 8 Feb 2017 19:23:53 +0100 Subject: [PATCH] method names with invalid chars --- transpiler/pom.xml | 1 + .../typescript/Java2TypeScriptTranslator.java | 30 +++++++++++++------ .../src/test/java/source/structural/Name.java | 4 +++ 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/transpiler/pom.xml b/transpiler/pom.xml index 64e8b44f..88d3896f 100644 --- a/transpiler/pom.xml +++ b/transpiler/pom.xml @@ -127,6 +127,7 @@ 1.8 src/main/java ${project.build.sourceEncoding} + ${skipJavadoc} all false /var/www/apidocs/org/jsweet diff --git a/transpiler/src/main/java/org/jsweet/transpiler/typescript/Java2TypeScriptTranslator.java b/transpiler/src/main/java/org/jsweet/transpiler/typescript/Java2TypeScriptTranslator.java index 657e5353..212cbc6d 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/typescript/Java2TypeScriptTranslator.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/typescript/Java2TypeScriptTranslator.java @@ -1552,7 +1552,12 @@ public class Java2TypeScriptTranslator extends Abstract if (inOverload && !overload.isValid && !inCoreWrongOverload) { print(getOverloadMethodName(methodDecl.sym)); } else { - print(getTSMethodName(methodDecl)); + String tsMethodName = getTSMethodName(methodDecl); + if (doesMemberNameRequireQuotes(tsMethodName)) { + print("'" + tsMethodName + "'"); + } else { + print(tsMethodName); + } } } if ((methodDecl.typarams != null && !methodDecl.typarams.isEmpty()) @@ -1695,8 +1700,15 @@ public class Java2TypeScriptTranslator extends Abstract if (parent.sym != method.sym.getEnclosingElement() && context.getOverload((ClassSymbol) method.sym.getEnclosingElement(), method.sym).coreMethod == method) { - print("{").println().startIndent().printIndent() - .print("super." + getTSMethodName(methodDecl) + "("); + print("{").println().startIndent().printIndent(); + + String tsMethodName = getTSMethodName(methodDecl); + if (doesMemberNameRequireQuotes(tsMethodName)) { + print("super['" + tsMethodName + "']"); + } else { + print("super." + tsMethodName + ""); + } + print("("); for (int j = 0; j < method.getParameters().size(); j++) { print(avoidJSKeyword(overload.coreMethod.getParameters().get(j).name.toString())) .print(", "); @@ -1770,13 +1782,13 @@ public class Java2TypeScriptTranslator extends Abstract name = getAdapter().getIdentifier(var.sym); } if (getScope().innerClassNotStatic && !Util.isConstantOrNullField(var)) { - if (doesFieldNameRequireQuotes(name)) { + if (doesMemberNameRequireQuotes(name)) { printIndent().print("this['").print(name).print("'] = ").print(var.init).print(";").println(); } else { printIndent().print("this.").print(name).print(" = ").print(var.init).print(";").println(); } } else if (var.init == null) { - if (doesFieldNameRequireQuotes(name)) { + if (doesMemberNameRequireQuotes(name)) { printIndent().print("this['").print(name).print("'] = ").print(Util.getTypeInitialValue(var.type)) .print(";").println(); } else { @@ -2179,7 +2191,7 @@ public class Java2TypeScriptTranslator extends Abstract print("..."); } - if (doesFieldNameRequireQuotes(name)) { + if (doesMemberNameRequireQuotes(name)) { print("'" + name + "'"); } else { print(name); @@ -2280,7 +2292,7 @@ public class Java2TypeScriptTranslator extends Abstract } } - private boolean doesFieldNameRequireQuotes(String name) { + private boolean doesMemberNameRequireQuotes(String name) { for (char c : name.toCharArray()) { if (TS_IDENTIFIER_FORBIDDEN_CHARS.contains(c)) { return true; @@ -2399,7 +2411,7 @@ public class Java2TypeScriptTranslator extends Abstract } else { fieldName = getAdapter().getIdentifier(fieldAccess.sym); } - if (doesFieldNameRequireQuotes(fieldName)) { + if (doesMemberNameRequireQuotes(fieldName)) { if (getLastPrintedChar() == '.') { removeLastChar(); print("['").print(fieldName).print("']"); @@ -2886,7 +2898,7 @@ public class Java2TypeScriptTranslator extends Abstract print(name); } } else { - if (doesFieldNameRequireQuotes(name)) { + if (doesMemberNameRequireQuotes(name)) { if (getLastPrintedChar() == '.') { removeLastChar(); print("['").print(name).print("']"); diff --git a/transpiler/src/test/java/source/structural/Name.java b/transpiler/src/test/java/source/structural/Name.java index b8e6d13b..ec6c2a71 100644 --- a/transpiler/src/test/java/source/structural/Name.java +++ b/transpiler/src/test/java/source/structural/Name.java @@ -28,6 +28,10 @@ public class Name { static Array array; + + @jsweet.lang.Name("method-name-with-dash") + void method_name_with_dash() {} + public static void main(String[] args) { array.reduceCallbackfnFunction4((s1, s2, d, s3) -> { return null;