|
135 | 135 |
|
136 | 136 | // TODO: superclass inheritance for JAXB XmlAccessorType |
137 | 137 |
|
| 138 | +//BH 2020.08.03 -- 3.2.9-v1p fix for boxing boolean should be Boolean.valueOf$, not new Boolean |
138 | 139 | //BH 2020.08.01 -- 3.2.9-v1o fix for lambda expressions too static |
139 | 140 | //BH 2020.07.08 -- 3.2.9-v1n fix for try with resources and adds option varOrLet |
140 | 141 | //BH 2020.07.04 -- 3.2.9-v1m fix for X.super.y() in anonymous class |
@@ -4835,10 +4836,17 @@ private boolean appendBoxingNode(ASTNode element, boolean toCharCode) { |
4835 | 4836 | ITypeBinding typeBinding = exp.resolveTypeBinding(); |
4836 | 4837 | if (typeBinding.isPrimitive()) { |
4837 | 4838 | String name = typeBinding.getName(); |
4838 | | - name = (name.equals("char") ? "Character" |
4839 | | - : name.equals("int") ? "Integer" |
4840 | | - : Character.toUpperCase(name.charAt(0)) + name.substring(1)); |
4841 | | - buffer.append("new " + name + "("); |
| 4839 | + String t = getJSTypeCode(name); |
| 4840 | + switch (name) { |
| 4841 | + case "char": |
| 4842 | + name = "Character";break; |
| 4843 | + case "int": |
| 4844 | + name = "Integer";break; |
| 4845 | + default: |
| 4846 | + name = Character.toUpperCase(name.charAt(0)) + name.substring(1); |
| 4847 | + break; |
| 4848 | + } |
| 4849 | + buffer.append(name + ".valueOf$" + t + "("); |
4842 | 4850 | element.accept(this); |
4843 | 4851 | buffer.append(")"); |
4844 | 4852 | return true; |
@@ -5681,48 +5689,40 @@ private String j2sGetParamCode(ITypeBinding binding) { |
5681 | 5689 | // as well. |
5682 | 5690 | // NOTE: These are the same as standard Java Spec, with the exception of |
5683 | 5691 | // Short, which is "H" instead of "S" |
| 5692 | + name = getJSTypeCode(name); |
| 5693 | + if (arrays != null) { |
| 5694 | + arrays = arrays.replaceAll("\\[\\]", "A"); |
| 5695 | + name += arrays; |
| 5696 | + } |
| 5697 | + return name; |
| 5698 | + } |
5684 | 5699 |
|
5685 | | - switch (name) { |
| 5700 | + private String getJSTypeCode(String className) { |
| 5701 | + switch (className) { |
5686 | 5702 | case "boolean": |
5687 | | - name = "Z"; |
5688 | | - break; |
| 5703 | + return "Z"; |
5689 | 5704 | case "byte": |
5690 | | - name = "B"; |
5691 | | - break; |
| 5705 | + return "B"; |
5692 | 5706 | case "char": |
5693 | | - name = "C"; |
5694 | | - break; |
| 5707 | + return "C"; |
5695 | 5708 | case "double": |
5696 | | - name = "D"; |
5697 | | - break; |
| 5709 | + return "D"; |
5698 | 5710 | case "float": |
5699 | | - name = "F"; |
5700 | | - break; |
| 5711 | + return "F"; |
5701 | 5712 | case "int": |
5702 | | - name = "I"; |
5703 | | - break; |
| 5713 | + return "I"; |
5704 | 5714 | case "long": |
5705 | | - name = "J"; |
5706 | | - break; |
| 5715 | + return "J"; |
5707 | 5716 | case "short": |
5708 | | - name = "H"; // differs from Java Spec so we can use S for String |
5709 | | - break; |
| 5717 | + return "H"; // differs from Java Spec so we can use S for String |
5710 | 5718 | case "java.lang.Object": |
5711 | 5719 | case "Object": |
5712 | | - name = "O"; |
5713 | | - break; |
| 5720 | + return "O"; |
5714 | 5721 | case "java.lang.String": |
5715 | | - name = "S"; |
5716 | | - break; |
| 5722 | + return "S"; |
5717 | 5723 | default: |
5718 | | - name = stripJavaLang(NameMapper.checkClassReplacement(name)).replace('.', '_'); |
5719 | | - break; |
5720 | | - } |
5721 | | - if (arrays != null) { |
5722 | | - arrays = arrays.replaceAll("\\[\\]", "A"); |
5723 | | - name += arrays; |
| 5724 | + return stripJavaLang(NameMapper.checkClassReplacement(className)).replace('.', '_'); |
5724 | 5725 | } |
5725 | | - return name; |
5726 | 5726 | } |
5727 | 5727 |
|
5728 | 5728 | /** |
|
0 commit comments