From 7e28419dbd518cb7178ef46221baaa1446ba2176 Mon Sep 17 00:00:00 2001 From: Alexander Pavlyuk Date: Mon, 19 Dec 2022 11:44:40 +0300 Subject: [PATCH 1/2] The bugs related to the mapping rules for java.lang.Character class are fixed. Change-Id: Ib702fa1a43bb02795d4f68359274b42005ad1d56 Signed-off-by: Alexander Pavlyuk --- migrator/config/java-api-mapper.xml | 347 ++++++++++++------ .../Java_API_to_ArkTS_API_mapping_rules.docx | Bin 14971 -> 15030 bytes migrator/docs/java-api-list.xml | 38 +- .../apimapper/ArrayLiteralExpression.java | 1 + .../migrator/apimapper/BinaryExpression.java | 2 + .../migrator/apimapper/CastExpression.java | 6 +- .../com/ohos/migrator/apimapper/Literal.java | 4 +- .../ohos/migrator/apimapper/PrimaryType.java | 6 +- .../migrator/apimapper/TernaryExpression.java | 4 +- .../migrator/apimapper/TypeReference.java | 9 +- .../migrator/apimapper/UnaryExpression.java | 4 +- .../src/com/ohos/migrator/apimapper/Util.java | 1 + .../com/ohos/migrator/java/JavaApiMapper.java | 71 +++- .../ohos/migrator/java/JavaTransformer.java | 75 +++- .../java-mapper/CallExpressionRulesByte.java | 28 ++ .../CallExpressionRulesByte.java.sts | 27 ++ .../CallExpressionRulesCharacter.java | 45 +++ .../CallExpressionRulesCharacter.java.sts | 39 ++ .../CallExpressionRulesString.java | 42 +++ .../CallExpressionRulesString.java.sts | 38 ++ 20 files changed, 613 insertions(+), 174 deletions(-) create mode 100644 migrator/test/java-mapper/CallExpressionRulesByte.java create mode 100644 migrator/test/java-mapper/CallExpressionRulesByte.java.sts create mode 100644 migrator/test/java-mapper/CallExpressionRulesCharacter.java create mode 100644 migrator/test/java-mapper/CallExpressionRulesCharacter.java.sts create mode 100644 migrator/test/java-mapper/CallExpressionRulesString.java create mode 100644 migrator/test/java-mapper/CallExpressionRulesString.java.sts diff --git a/migrator/config/java-api-mapper.xml b/migrator/config/java-api-mapper.xml index ed623b641..964748e07 100644 --- a/migrator/config/java-api-mapper.xml +++ b/migrator/config/java-api-mapper.xml @@ -55,7 +55,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -199,7 +199,7 @@ --> - + @@ -209,7 +209,7 @@ - + @@ -225,7 +225,7 @@ --> - + @@ -243,7 +243,7 @@ --> - + @@ -258,20 +258,37 @@ - + + + + + + + + + + + + + + + - @@ -283,7 +300,7 @@ --> - + @@ -293,7 +310,7 @@ - + @@ -303,57 +320,169 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + + + @@ -366,7 +495,7 @@ --> - + @@ -376,7 +505,7 @@ - + @@ -394,7 +523,7 @@ --> - + @@ -404,7 +533,7 @@ - + @@ -420,7 +549,7 @@ --> - + @@ -439,7 +568,7 @@ --> - + @@ -460,7 +589,7 @@ --> - + @@ -470,7 +599,7 @@ - + @@ -486,7 +615,7 @@ --> - + @@ -505,7 +634,7 @@ --> - + @@ -526,7 +655,7 @@ --> - + @@ -536,7 +665,7 @@ - + @@ -552,7 +681,7 @@ --> - + @@ -571,7 +700,7 @@ --> - + @@ -592,7 +721,7 @@ --> - + @@ -602,7 +731,7 @@ - + @@ -618,7 +747,7 @@ --> - + @@ -637,7 +766,7 @@ --> - + @@ -650,7 +779,7 @@ - + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -736,20 +875,29 @@ --> + + + + + + + + - + - + - + @@ -758,48 +906,41 @@ - - - - - + + + + + + + + + + + + + + + - - + + + + + + - - - - - - - + + + + + - - - - - - - - diff --git a/migrator/docs/Java_API_to_ArkTS_API_mapping_rules.docx b/migrator/docs/Java_API_to_ArkTS_API_mapping_rules.docx index 546e10db26560dce2b175475fd9fb67838fe1cc6..792dbc5959dbc45c10b9692309c6b4e847c7e4bf 100644 GIT binary patch delta 11843 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 b5&UiPe}4zcf7|;=6@h+ok-`*n{009HqVtnS diff --git a/migrator/docs/java-api-list.xml b/migrator/docs/java-api-list.xml index 4ffec05bc..ce3cb0dd1 100644 --- a/migrator/docs/java-api-list.xml +++ b/migrator/docs/java-api-list.xml @@ -93,7 +93,7 @@ // Interfaces: java.lang.Appendable java.lang.AutoCloseable - java.lang.CharSequence + java.lang.CharSequence ==> std.core.String ???? java.lang.Cloneable ==> std.core.Comparable @@ -149,7 +149,7 @@ boolean equals(Object obj) ArkTS: the same float floatValue() ArkTS: the same int hashCode() ArkTS: the same - static int hashCode(byte value) + static int hashCode(byte value) ArkTS: new Byte(value).hasCode() int intValue() ArkTS: the same long longValue() ArkTS: the same static byte parseByte(String s) @@ -233,7 +233,7 @@ static byte UNASSIGNED static byte UPPERCASE_LETTER - Character(char value) ArkTS: the same + Character(char value) ArkTS: Char(char value) static int charCount(int codePoint) char charValue() static int codePointAt(char[] a, int index) @@ -258,15 +258,15 @@ static int getType(char ch) static int getType(int codePoint) int hashCode() ArkTS: the same - static int hashCode(char value) ArkTS: the same - static char highSurrogate(int codePoint) ArkTS: static getHighSurrogate(value: int): char + static int hashCode(char value) ArkTS: the same function name but the type is renamed + static char highSurrogate(int codePoint) ArkTS: static getHighSurrogate(codePoint: int): char static boolean isAlphabetic(int codePoint) static boolean isBmpCodePoint(int codePoint) static boolean isDefined(char ch) static boolean isDefined(int codePoint) - static boolean isDigit(char ch) ArkTS: static isDecDigit(value: char): boolean + static boolean isDigit(char ch) ArkTS: the same function name but the type is renamed static boolean isDigit(int codePoint) - static boolean isHighSurrogate(char ch) ArkTS: the same + static boolean isHighSurrogate(char ch) ArkTS: the same function name but the type is renamed static boolean isIdentifierIgnorable(char ch) static boolean isIdentifierIgnorable(int codePoint) static boolean isIdeographic(int codePoint) @@ -278,13 +278,13 @@ static boolean isJavaIdentifierStart(int codePoint) static boolean isJavaLetter(char ch) static boolean isJavaLetterOrDigit(char ch) - static boolean isLetter(char ch) - static boolean isLetter(int codePoint) ArkTS: the same + static boolean isLetter(char ch) ArkTS: the same function but the type is renamed + static boolean isLetter(int codePoint) static boolean isLetterOrDigit(char ch) static boolean isLetterOrDigit(int codePoint) - static boolean isLowerCase(char ch) ArkTS: the same + static boolean isLowerCase(char ch) ArkTS: the same function but the type is renamed static boolean isLowerCase(int codePoint) - static boolean isLowSurrogate(char ch) ArkTS: the same + static boolean isLowSurrogate(char ch) ArkTS: the same function but the type is renamed static boolean isMirrored(char ch) static boolean isMirrored(int codePoint) static boolean isSpace(char ch) @@ -299,27 +299,27 @@ static boolean isUnicodeIdentifierPart(int codePoint) static boolean isUnicodeIdentifierStart(char ch) static boolean isUnicodeIdentifierStart(int codePoint) - static boolean isUpperCase(char ch) ArkTS: the same + static boolean isUpperCase(char ch) ArkTS: the same function but the type is renamed static boolean isUpperCase(int codePoint) static boolean isValidCodePoint(int codePoint) - static boolean isWhitespace(char ch) ArkTS: the same + static boolean isWhitespace(char ch) ArkTS: the same function but the type is renamed static boolean isWhitespace(int codePoint) - static char lowSurrogate(int codePoint) ArkTS: static getLowSurrogate(value: int): char + static char lowSurrogate(int codePoint) ArkTS: static getLowSurrogate(codePoint: int): char static int offsetByCodePoints(char[] a, int start, int count, int index, int codePointOffset) static int offsetByCodePoints(CharSequence seq, int index, int codePointOffset) static char reverseBytes(char ch) static char[] toChars(int codePoint) static int toChars(int codePoint, char[] dst, int dstIndex) static int toCodePoint(char high, char low) - static char toLowerCase(char ch) ArkTS: the same + static char toLowerCase(char ch) ArkTS: the same function but the type is renamed static int toLowerCase(int codePoint) - String toString() - static String toString(char c) + String toString() ArkTS: the same + static String toString(char c) ArkTS: new Char(c).toString(); static char toTitleCase(char ch) static int toTitleCase(int codePoint) - static char toUpperCase(char ch) ArkTS: the same + static char toUpperCase(char ch) ArkTS: the same function but the type is renamed static int toUpperCase(int codePoint) - static Character valueOf(char c) ArkTS: the same + static Character valueOf(char c) ArkTS: the same function but the type is renamed java.lang.Character.Subset java.lang.Character.UnicodeBlock diff --git a/migrator/src/com/ohos/migrator/apimapper/ArrayLiteralExpression.java b/migrator/src/com/ohos/migrator/apimapper/ArrayLiteralExpression.java index a582394c7..ed9f1b785 100644 --- a/migrator/src/com/ohos/migrator/apimapper/ArrayLiteralExpression.java +++ b/migrator/src/com/ohos/migrator/apimapper/ArrayLiteralExpression.java @@ -109,6 +109,7 @@ public class ArrayLiteralExpression extends ArrayList { public SingleExpressionContext buildArktsNode(List arktsOrigArguments) { SingleExpressionContext arktsArrayLiteralExprParent = new SingleExpressionContext(); ArrayLiteralExpressionContext arktsArrayLiteralExpr = new ArrayLiteralExpressionContext(arktsArrayLiteralExprParent); + arktsArrayLiteralExprParent.addChild(arktsArrayLiteralExpr).setParent(arktsArrayLiteralExprParent); ExpressionSequenceContext arktsExprSequence = new ExpressionSequenceContext(arktsArrayLiteralExpr, 0); diff --git a/migrator/src/com/ohos/migrator/apimapper/BinaryExpression.java b/migrator/src/com/ohos/migrator/apimapper/BinaryExpression.java index 8b5c00736..5156a6b86 100644 --- a/migrator/src/com/ohos/migrator/apimapper/BinaryExpression.java +++ b/migrator/src/com/ohos/migrator/apimapper/BinaryExpression.java @@ -358,6 +358,8 @@ public class BinaryExpression { arktsBinExpr.addChild(buildArktsOperandNode(operand2, arktsOrigArguments)).setParent(arktsBinExpr); assert (arktsBinExpr != null); + arktsBinExprParent.addChild(arktsBinExpr).setParent(arktsBinExprParent); + return arktsBinExprParent; } } diff --git a/migrator/src/com/ohos/migrator/apimapper/CastExpression.java b/migrator/src/com/ohos/migrator/apimapper/CastExpression.java index 9a7026d73..d495154f2 100644 --- a/migrator/src/com/ohos/migrator/apimapper/CastExpression.java +++ b/migrator/src/com/ohos/migrator/apimapper/CastExpression.java @@ -57,7 +57,7 @@ public class CastExpression { castExpression.index = Integer.valueOf(getAttribute(startElement, indexAttr)); } else if (PrimaryType.tag.equals(tag)) { - castExpression.primaryType = PrimaryType.read(xmlReader, xmlEvent); + castExpression.primaryType = PrimaryType.read(xmlReader); } else if (IntersectionType.tag.equals(tag)) { castExpression.intersectionType = IntersectionType.read(xmlReader, xmlEvent); @@ -87,8 +87,10 @@ public class CastExpression { SingleExpressionContext arktsCastExprParent = new SingleExpressionContext(); CastExpressionContext arktsCastExpr = new CastExpressionContext(arktsCastExprParent); + arktsCastExprParent.addChild(arktsCastExpr).setParent(arktsCastExprParent); - arktsCastExpr.children.add(arktsOrigArguments.get(index)); + //arktsCastExpr.children.add(arktsOrigArguments.get(index)); + arktsCastExpr.addChild(arktsOrigArguments.get(index)); arktsCastExpr.addChild(NodeBuilder.terminalNode(StaticTSParser.As)); if (primaryType != null ) { diff --git a/migrator/src/com/ohos/migrator/apimapper/Literal.java b/migrator/src/com/ohos/migrator/apimapper/Literal.java index 60598a70e..8b1309eb2 100644 --- a/migrator/src/com/ohos/migrator/apimapper/Literal.java +++ b/migrator/src/com/ohos/migrator/apimapper/Literal.java @@ -18,7 +18,7 @@ package com.ohos.migrator.apimapper; // import com.ohos.migrator.java.NodeBuilder; -import com.ohos.migrator.staticTS.parser.StaticTSParser; +import com.ohos.migrator.staticTS.parser.StaticTSParser.SingleExpressionContext; import static com.ohos.migrator.apimapper.Util.*; @@ -89,7 +89,7 @@ public class Literal { return literal; } - public StaticTSParser.SingleExpressionContext buildArktsNode() { + public SingleExpressionContext buildArktsNode() { switch (type) { case NULL: return NodeBuilder.nullLiteral(); case BOOLEAN: return NodeBuilder.boolLiteral(Boolean.parseBoolean(value)); diff --git a/migrator/src/com/ohos/migrator/apimapper/PrimaryType.java b/migrator/src/com/ohos/migrator/apimapper/PrimaryType.java index 2bb839215..b56e79e62 100644 --- a/migrator/src/com/ohos/migrator/apimapper/PrimaryType.java +++ b/migrator/src/com/ohos/migrator/apimapper/PrimaryType.java @@ -35,7 +35,7 @@ public class PrimaryType { private TypeReference typeReference = null; private ArrayType arrayType = null; - static PrimaryType read(XMLEventReader xmlReader, XMLEvent xmlPrimaryTypeEveent) throws XMLStreamException { + static PrimaryType read(XMLEventReader xmlReader) throws XMLStreamException { PrimaryType primaryType = new PrimaryType(); while (xmlReader.hasNext()) { @@ -46,7 +46,7 @@ public class PrimaryType { String tag = startElement.getName().getLocalPart(); if (tagPredefinedType.equals(tag)) { - primaryType.predefinedType = Util.getAttribute(startElement, Util.nameAttr); + primaryType.predefinedType = getAttribute(startElement, nameAttr); } else if (TypeReference.tag.equals(tag)) { primaryType.typeReference = TypeReference.read(xmlReader, xmlEvent); @@ -75,7 +75,7 @@ public class PrimaryType { public PrimaryTypeContext buildArktsNode() { PrimaryTypeContext arktsPrimaryType = new PrimaryTypeContext(null, 0); - if (!Util.isStringEmpty(predefinedType)) { + if (!isStringEmpty(predefinedType)) { arktsPrimaryType.addChild(NodeBuilder.predefinedType(predefinedType)).setParent(arktsPrimaryType); } else if (typeReference != null) { diff --git a/migrator/src/com/ohos/migrator/apimapper/TernaryExpression.java b/migrator/src/com/ohos/migrator/apimapper/TernaryExpression.java index 95c01de45..d688c6310 100644 --- a/migrator/src/com/ohos/migrator/apimapper/TernaryExpression.java +++ b/migrator/src/com/ohos/migrator/apimapper/TernaryExpression.java @@ -166,12 +166,14 @@ public class TernaryExpression { } public SingleExpressionContext buildArktsNode(List arktsOrigArguments) { SingleExpressionContext arktsTernaryExprParent = new SingleExpressionContext(); - TernaryExpressionContext arktsTernaryExpr =new TernaryExpressionContext(arktsTernaryExprParent); + TernaryExpressionContext arktsTernaryExpr = new TernaryExpressionContext(arktsTernaryExprParent); arktsTernaryExpr.addChild(buildOperandArktsNode(operand1, arktsOrigArguments)).setParent(arktsTernaryExpr); arktsTernaryExpr.addChild(buildOperandArktsNode(operand2, arktsOrigArguments)).setParent(arktsTernaryExpr); arktsTernaryExpr.addChild(buildOperandArktsNode(operand3, arktsOrigArguments)).setParent(arktsTernaryExpr); + arktsTernaryExprParent.addChild(arktsTernaryExpr).setParent(arktsTernaryExprParent); + return arktsTernaryExprParent; } } diff --git a/migrator/src/com/ohos/migrator/apimapper/TypeReference.java b/migrator/src/com/ohos/migrator/apimapper/TypeReference.java index 7c96ecfec..05f59cb1f 100644 --- a/migrator/src/com/ohos/migrator/apimapper/TypeReference.java +++ b/migrator/src/com/ohos/migrator/apimapper/TypeReference.java @@ -18,6 +18,7 @@ package com.ohos.migrator.apimapper; import com.ohos.migrator.java.NodeBuilder; import com.ohos.migrator.staticTS.parser.StaticTSParser.TypeReferenceContext; import com.ohos.migrator.staticTS.parser.StaticTSParser.TypeArgumentContext; +import static com.ohos.migrator.apimapper.Util.*; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLStreamException; @@ -35,11 +36,11 @@ import java.util.List; // public class TypeReference { static public String tag = "TypeReference"; - private String arktsName = null; + private String arktsTypeName = null; private TypeArguments typeArguments = null; public String getArktsName() { - return arktsName; + return arktsTypeName; } static public TypeReference read(XMLEventReader xmlReader, XMLEvent xmlTypeReferenceEvent) throws XMLStreamException { @@ -47,7 +48,7 @@ public class TypeReference { assert xmlTypeReferenceEvent.isStartElement(); StartElement startElement = xmlTypeReferenceEvent.asStartElement(); - typeReference.arktsName = Util.getAttribute(startElement, Util.arktsNameAttr); + typeReference.arktsTypeName = getAttribute(startElement, arktsTypeNameAttr); while (xmlReader.hasNext()) { XMLEvent xmlEvent = xmlReader.nextEvent(); @@ -79,7 +80,7 @@ public class TypeReference { } public TypeReferenceContext buildArktsNode(List arktsOrigTypeArguments) { - TypeReferenceContext arktsTypeReference = NodeBuilder.typeReference(arktsName); + TypeReferenceContext arktsTypeReference = NodeBuilder.typeReference(arktsTypeName); if (typeArguments != null) { arktsTypeReference.addChild(typeArguments.buildArktsNode(arktsOrigTypeArguments)).setParent(arktsTypeReference); diff --git a/migrator/src/com/ohos/migrator/apimapper/UnaryExpression.java b/migrator/src/com/ohos/migrator/apimapper/UnaryExpression.java index 074e4fefd..cc2fd617e 100644 --- a/migrator/src/com/ohos/migrator/apimapper/UnaryExpression.java +++ b/migrator/src/com/ohos/migrator/apimapper/UnaryExpression.java @@ -115,7 +115,9 @@ public class UnaryExpression { arktsUnaryExpr.addChild(NodeBuilder.terminalNode(arktsOpType)); - arktsUnaryExpr.addChild((RuleContext)arktsOrigArguments.get(index)); + arktsUnaryExpr.addChild(arktsOrigArguments.get(index)); + + arktsUnaryExprParent.addChild(arktsUnaryExpr).setParent(arktsUnaryExprParent); return arktsUnaryExprParent; } diff --git a/migrator/src/com/ohos/migrator/apimapper/Util.java b/migrator/src/com/ohos/migrator/apimapper/Util.java index 60fa7be25..e266d757c 100644 --- a/migrator/src/com/ohos/migrator/apimapper/Util.java +++ b/migrator/src/com/ohos/migrator/apimapper/Util.java @@ -36,6 +36,7 @@ public class Util { static public QName javaMethodArgsAttr = new QName("javaMethodArgs"); static public QName javaImportAttr = new QName("javaImport"); static public QName arktsNameAttr = new QName("arktsName"); + static public QName arktsTypeNameAttr = new QName("arktsTypeName"); static public QName arktsItemAttr = new QName("arktsItem"); static public QName arktsAliasAttr = new QName("arktsAlias"); static public QName arktsFromAttr = new QName("arktsFrom"); diff --git a/migrator/src/com/ohos/migrator/java/JavaApiMapper.java b/migrator/src/com/ohos/migrator/java/JavaApiMapper.java index 6d2611444..aa543e34d 100644 --- a/migrator/src/com/ohos/migrator/java/JavaApiMapper.java +++ b/migrator/src/com/ohos/migrator/java/JavaApiMapper.java @@ -241,10 +241,8 @@ public class JavaApiMapper extends StaticTSParserBaseVisitor { private void substituteObject(CallExpressionContext arktsCallExpression, List arktsOrigArguments) { SingleExpressionContext arktsMethodExpression = arktsCallExpression.singleExpression(); - assert (arktsMethodExpression instanceof SingleExpressionContext); - ParseTree arktsChildNode = arktsMethodExpression.getChild(0); - assert (arktsChildNode instanceof MemberAccessExpressionContext); - MemberAccessExpressionContext arktsMemberAccessExpr = (MemberAccessExpressionContext)arktsChildNode; + assert (arktsMethodExpression.getChild(0) instanceof MemberAccessExpressionContext); + MemberAccessExpressionContext arktsMemberAccessExpr = (MemberAccessExpressionContext)arktsMethodExpression.getChild(0); SingleExpressionContext arktsOrigObject = arktsMemberAccessExpr.singleExpression(); SingleExpressionContext arktsNewObject = null; @@ -267,6 +265,19 @@ public class JavaApiMapper extends StaticTSParserBaseVisitor { } } + private void substituteType(CallExpressionContext arktsCallExpression) { + SingleExpressionContext arktsMethodExpression = arktsCallExpression.singleExpression(); + assert (arktsMethodExpression.getChild(0) instanceof MemberAccessExpressionContext); + MemberAccessExpressionContext arktsMemberAccessExpr = (MemberAccessExpressionContext)arktsMethodExpression.getChild(0); + + SingleExpressionContext arktsIdentifier = arktsMemberAccessExpr.singleExpression(); + assert (arktsIdentifier.getChildCount() == 1 && arktsIdentifier.getChild(0) instanceof IdentifierExpressionContext); + IdentifierExpressionContext arktsIdentifierExpr = (IdentifierExpressionContext)arktsIdentifier.getChild(0); + assert (arktsIdentifierExpr.getChildCount() == 1); + arktsIdentifierExpr.children.clear(); + arktsIdentifierExpr.addChild(new TerminalNodeImpl(new CommonToken(StaticTSParser.Identifier, arktsTypeName))); + } + private List getOrigArgs(CallExpressionContext arktsCallExpression) { ArgumentsContext arktsArguments = arktsCallExpression.arguments(); ExpressionSequenceContext arktsExpressionSequence = arktsArguments.expressionSequence(); @@ -291,22 +302,21 @@ public class JavaApiMapper extends StaticTSParserBaseVisitor { } public void apply(CallExpressionContext arktsCallExpression) { -// if (arktsMethodName != null) { -// assert (!arktsMethodName.isEmpty()); -// renameMethod(arktsCallExpression.singleExpression()); -// } -// List arktsOrigArguments = null; if (arguments != null || arktsObject != null) { arktsOrigArguments = getOrigArgs(arktsCallExpression); } - if (arktsTypeName != null && arktsTypeName.isEmpty()) { // Note: Here it's checked for NOT null AND empty string. + if (arktsTypeName != null) { assert (arktsObject == null); - makeMethodGlobal(arktsCallExpression); + if (arktsTypeName.isEmpty()) { // Note: Here it's checked for NOT null AND empty string. + makeMethodGlobal(arktsCallExpression); + } + else { + substituteType(arktsCallExpression); + } } else if (arktsObject != null) { - assert(arktsTypeName == null); substituteObject(arktsCallExpression, arktsOrigArguments); } @@ -530,6 +540,7 @@ public class JavaApiMapper extends StaticTSParserBaseVisitor { static public String tag = "MemberAccessExpressionRule"; private String arktsName = null; + private TypeReference typeReference = null; // Optional ArkTS type for a static field access. // ArkTS: // | singleExpression Dot Identifier # MemberAccessExpression @@ -537,7 +548,14 @@ public class JavaApiMapper extends StaticTSParserBaseVisitor { assert arktsName != null; arktsMemberAccessExpression.children.remove(arktsMemberAccessExpression.Identifier()); +// assert(arktsMemberAccessExpression.getChildCount() == 1); +// arktsMemberAccessExpression.children.clear(); arktsMemberAccessExpression.addChild(new TerminalNodeImpl(new CommonToken(StaticTSParser.Identifier, arktsName))); + + if (typeReference != null) { + arktsMemberAccessExpression.children.remove(arktsMemberAccessExpression.singleExpression()); + arktsMemberAccessExpression.addChild(typeReference.buildArktsNode(null)); + } } static private String signature(String javaObjectType, String javaName) { @@ -566,17 +584,30 @@ public class JavaApiMapper extends StaticTSParserBaseVisitor { return signature(javaObjectType, javaName); } - static MemberAccessExpressionRule read(XMLEventReader xmlReader, XMLEvent xmlMemberAccessExpressionEvent, StartElement ruleStartElement) throws XMLStreamException { + static MemberAccessExpressionRule read(XMLEventReader xmlReader, StartElement ruleStartElement) throws XMLStreamException { MemberAccessExpressionRule memberAccessExpressionRule = new MemberAccessExpressionRule(); memberAccessExpressionRule.arktsName = getAttribute(ruleStartElement, arktsNameAttr); - // Read the end event () - assert (xmlReader.hasNext()); - XMLEvent xmlEvent = xmlReader.nextEvent(); - assert (xmlEvent.isEndElement()); - EndElement endElement = xmlEvent.asEndElement(); - assert (tag.equals(endElement.getName().getLocalPart())); + // Read an optional element and the end event () + while (xmlReader.hasNext()) { + XMLEvent xmlEvent = xmlReader.nextEvent(); + + if (xmlEvent.isStartElement()) { + StartElement startElement = xmlEvent.asStartElement(); + String tag = startElement.getName().getLocalPart(); + + if (TypeReference.tag.equals(tag)) { + memberAccessExpressionRule.typeReference = TypeReference.read(xmlReader, xmlEvent); + } + else assert false; + } + else if (xmlEvent.isEndElement()) { + EndElement endElement = xmlEvent.asEndElement(); + assert MemberAccessExpressionRule.tag.equals(endElement.getName().getLocalPart()); + break; + } + } return memberAccessExpressionRule; } @@ -934,7 +965,7 @@ public class JavaApiMapper extends StaticTSParserBaseVisitor { } else if (MemberAccessExpressionRule.tag.equals(tag)) { String signature = MemberAccessExpressionRule.signature(startElement); - MemberAccessExpressionRule rule = MemberAccessExpressionRule.read(xmlReader, xmlEvent, startElement); + MemberAccessExpressionRule rule = MemberAccessExpressionRule.read(xmlReader, startElement); assert !isStringEmpty(signature) && rule != null; memberAccessExpressionRules.put(signature, rule); diff --git a/migrator/src/com/ohos/migrator/java/JavaTransformer.java b/migrator/src/com/ohos/migrator/java/JavaTransformer.java index 1c86cfacf..0458c14e0 100644 --- a/migrator/src/com/ohos/migrator/java/JavaTransformer.java +++ b/migrator/src/com/ohos/migrator/java/JavaTransformer.java @@ -1543,6 +1543,10 @@ public class JavaTransformer extends ASTVisitor implements Transformer { // singleExpression: | Identifier # IdentifierExpression @Override public boolean visit(QualifiedName javaQualifiedName) { + // TODO: Check if this javaQualifiedName referes to a calss static field access. Like: Character.MAX_HIGH_SURROGATE. + // In this case it has to be translated to a MemberAccessExpression and not to a simple Identifier. + // It's needed to let the ApiMapper to apply corresponding MemberAccessExpressionRule. + // See #272 String name = javaQualifiedName.getFullyQualifiedName(); stsCurrent.addChild(NodeBuilder.identifierExpression(name)).setParent(stsCurrent); // Don't count names as transformed as most of them are transformed manually. @@ -3061,12 +3065,15 @@ public class JavaTransformer extends ASTVisitor implements Transformer { javaClassType = javaCtorExpr.resolveTypeBinding(); } + ITypeBinding[] javaParamsTypes = null; + if (javaCtorBinding != null) { isThrowingCall = javaCtorBinding.getExceptionTypes().length > 0; if(isThrowingCall && checkThrownExceptionSet(javaCtorInvocation)) addMultipleThrownExceptions(javaCtorBinding.getExceptionTypes()); - stsConstructorCall.javaMethodArgs = buildSignature(javaCtorBinding.getParameterTypes()); + javaParamsTypes = javaCtorBinding.getParameterTypes(); + stsConstructorCall.javaMethodArgs = buildSignature(javaParamsTypes); if (javaCtorExpr == null) { javaClassType = javaCtorBinding.getDeclaringClass(); @@ -3097,7 +3104,7 @@ public class JavaTransformer extends ASTVisitor implements Transformer { translateTypeArguments(javaTypeArgs); stsConstructorCall.javaMethodTypeArgs = buildSignature(javaTypeArgs); - translateArguments(javaArgs); + translateArguments(javaArgs, javaParamsTypes); popCurrent(); // ConstructorCallContext @@ -3126,7 +3133,7 @@ public class JavaTransformer extends ASTVisitor implements Transformer { return false; } - private List translateArguments(List javaArgs) { + private List translateArguments(List javaArgs, ITypeBinding[] javaParamsTypes) { pushCurrent(new ArgumentsContext(stsCurrent, 0)); List result = null; @@ -3134,22 +3141,43 @@ public class JavaTransformer extends ASTVisitor implements Transformer { ExpressionSequenceContext stsExprSeq = new ExpressionSequenceContext(stsCurrent, 0); pushCurrent(stsExprSeq); - for (Expression javaExpr : javaArgs) { + int nargs = javaArgs.size(); + int n = nargs; + // For the case of vararg the number of actual arguments may be more than the list of formal parameters. + // In such case the last format parameter has to have type of an array. + if (javaParamsTypes != null && javaParamsTypes.length < nargs) { + // The last parameter should be of array type to which all ending extra arguments will be packed. + n = javaParamsTypes.length - 1; + assert (javaParamsTypes[n].isArray()) : "For vararg functions the last parameter has to be an array."; + } + + for (int i = 0; i < n; i++) { + Expression javaExpr = javaArgs.get(i); + ITypeBinding javaTypeBinding = javaExpr.resolveTypeBinding(); - if (javaTypeBinding != null) { - sbForApiMapper.append(javaTypeBinding.getQualifiedName()); - } - else { + if (javaTypeBinding == null) { reportError("Fail to resolve argument", javaExpr); } - sbForApiMapper.append(','); - javaExpr.accept(this); } - if (sbForApiMapper.length() > 1) { - sbForApiMapper.setLength(sbForApiMapper.length() - 1); // Remove the ending extra comma. + if (n < nargs) { + pushCurrent(new ArrayLiteralExpressionContext(pushSingleExpression())); + pushCurrent(new ExpressionSequenceContext(stsCurrent, 0)); + + for (int i = n; i < nargs; i++) { + Expression javaExpr = javaArgs.get(i); + javaExpr.accept(this); + + ITypeBinding javaTypeBinding = javaExpr.resolveTypeBinding(); + if (javaTypeBinding == null) { + reportError("Fail to resolve argument", javaExpr); + } + } + + popCurrent(); // ExpressionSequenceContext + popSingleExpression(); // ArrayLiteralContext } popCurrent(); // ExpressionSequenceContext @@ -3342,7 +3370,7 @@ public class JavaTransformer extends ASTVisitor implements Transformer { // AnonymousClassDeclaration: { ClassBodyDeclaration } // STS tree: // singleExpression: - // | New (singleExpression Dot)? typeReference arguments? classBody? # NewClassExpression + // | New typeArguments? typeReference arguments? classBody? # NewClassInstanceExpression // arguments: OpenParen expressionSequence? CloseParen // classBody: OpenBrace classMember* clinit=classInitializer? classMember* CloseBrace // NOTE: If ctor called by class instance creation expression can throw exceptions, @@ -3405,12 +3433,15 @@ public class JavaTransformer extends ASTVisitor implements Transformer { reportError("Fail to resolve class type", javaClassType); } - List stsArgs = translateArguments(javaClassInstanceCreation.arguments()); + ITypeBinding[] javaParamsTypes = null; if (javaCtorBinding != null) { - stsNewClassInstanceExpr.javaMethodArgs = buildSignature(javaCtorBinding.getParameterTypes()); + javaParamsTypes = javaCtorBinding.getParameterTypes(); + stsNewClassInstanceExpr.javaMethodArgs = buildSignature(javaParamsTypes); } + List stsArgs = translateArguments(javaClassInstanceCreation.arguments(), javaParamsTypes); + AnonymousClassDeclaration javaAnonymousClassDeclaration = javaClassInstanceCreation.getAnonymousClassDeclaration(); if (javaAnonymousClassDeclaration != null) { @@ -3800,12 +3831,15 @@ public class JavaTransformer extends ASTVisitor implements Transformer { translateTypeArguments(javaMethodInvocation.typeArguments()); stsCallExpression.javaMethodTypeArgs = buildSignature(javaMethodInvocation.typeArguments()); - translateArguments(javaMethodInvocation.arguments()); + ITypeBinding[] javaParamsTypes = null; if (javaMethodBinding != null) { - stsCallExpression.javaMethodArgs = buildSignature(javaMethodBinding.getParameterTypes()); + javaParamsTypes = javaMethodBinding.getParameterTypes(); + stsCallExpression.javaMethodArgs = buildSignature(javaParamsTypes); } + translateArguments(javaMethodInvocation.arguments(), javaParamsTypes); + popSingleExpression(); // CallExpressionContext if (isThrowingCall) { @@ -3879,11 +3913,14 @@ public class JavaTransformer extends ASTVisitor implements Transformer { translateTypeArguments(javaSuperMethodInvocation.typeArguments()); stsCallExpression.javaTypeArgs = buildSignature(javaSuperMethodInvocation.typeArguments()); + ITypeBinding[] javaParamsTypes = null; + if (javaMethodBinding != null) { - stsCallExpression.javaMethodArgs = buildSignature(javaMethodBinding.getParameterTypes()); + javaParamsTypes = javaMethodBinding.getParameterTypes(); + stsCallExpression.javaMethodArgs = buildSignature(javaParamsTypes); } - translateArguments(javaSuperMethodInvocation.arguments()); + translateArguments(javaSuperMethodInvocation.arguments(), javaParamsTypes); popSingleExpression(); // CallExpressionContext diff --git a/migrator/test/java-mapper/CallExpressionRulesByte.java b/migrator/test/java-mapper/CallExpressionRulesByte.java new file mode 100644 index 000000000..14b6b2c82 --- /dev/null +++ b/migrator/test/java-mapper/CallExpressionRulesByte.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.ohos.migrator.test.java; + +class CallExpressiontRulesByte { + public static void Test() { + byte v1 = 3; + byte v2 = 4; + int res = Byte.compare(v1, v2); + + int hesh = Byte.hashCode((byte)3); + + String s = Byte.toString((byte)8); + } +} \ No newline at end of file diff --git a/migrator/test/java-mapper/CallExpressionRulesByte.java.sts b/migrator/test/java-mapper/CallExpressionRulesByte.java.sts new file mode 100644 index 000000000..f8e9f6557 --- /dev/null +++ b/migrator/test/java-mapper/CallExpressionRulesByte.java.sts @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2022-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ohos.migrator.test.java; + +import * from "std/math/math"; +open class CallExpressiontRulesByte { + public static Test(): void { + let v1 : byte = 3; + let v2 : byte = 4; + let res : int = new Byte(v1).compareTo(new Byte(v2)); + let hesh : int = Byte.hashCode(3 as byte); + let s : String = new Byte(8 as byte).toString(); + } +} + diff --git a/migrator/test/java-mapper/CallExpressionRulesCharacter.java b/migrator/test/java-mapper/CallExpressionRulesCharacter.java new file mode 100644 index 000000000..65010899a --- /dev/null +++ b/migrator/test/java-mapper/CallExpressionRulesCharacter.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2022-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.ohos.migrator.test.java; + +class CallExpressiontRulesCharacter { + public static void Test() { + Character c = new Character('g'); + + int res = Character.compare('c', 'b'); + + int hash = Character.hashCode('3'); + + c = Character.highSurrogate(386); + c = Character.lowSurrogate(386); + + boolean b; + b = Character.isDigit('8'); + b = Character.isHighSurrogate('c'); + b = Character.isLetter('8'); + b = Character.isLowerCase('8'); + b = Character.isLowSurrogate('8'); + b = Character.isUpperCase('8'); + b = Character.isWhitespace('8'); + + c = Character.toLowerCase('C'); + c = Character.toUpperCase('a'); + + Character ch = Character.valueOf('d'); + + String s = Character.toString('s'); + } +} \ No newline at end of file diff --git a/migrator/test/java-mapper/CallExpressionRulesCharacter.java.sts b/migrator/test/java-mapper/CallExpressionRulesCharacter.java.sts new file mode 100644 index 000000000..b91955faf --- /dev/null +++ b/migrator/test/java-mapper/CallExpressionRulesCharacter.java.sts @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2022-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ohos.migrator.test.java; + +import * from "std/math/math"; +open class CallExpressiontRulesCharacter { + public static Test(): void { + let c : Char = new Char('g'); + let res : int = new Char('c').compareTo(new Char('b')); + let hash : int = Char.hashCode('3'); + c = Char.getHighSurrogate(386); + c = Char.getLowSurrogate(386); + let b : boolean ; + b = Char.isDecDigit('8'); + b = Char.isHighSurrogate('c'); + b = Char.isLetter('8'); + b = Char.isLowerCase('8'); + b = Char.isLowSurrogate('8'); + b = Char.isUpperCase('8'); + b = Char.isWhitespace('8'); + c = Char.toLowerCase('C'); + c = Char.toUpperCase('a'); + let ch : Char = Char.valueOf('d'); + let s : String = new Char('s').toString(); + } +} + diff --git a/migrator/test/java-mapper/CallExpressionRulesString.java b/migrator/test/java-mapper/CallExpressionRulesString.java new file mode 100644 index 000000000..e590bc8ce --- /dev/null +++ b/migrator/test/java-mapper/CallExpressionRulesString.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2022-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.ohos.migrator.test.java; + +import java.util.List; +import java.util.ArrayList; + +class CallExpressiontRulesString { + public static void Test() { + String s1 = new String("abc"); + boolean b = s1.contains("d"); + +// List l = new ArrayList<>(2); +// l.add("a"); +// l.add("b"); + +// List strs = l; +// +// String s2 = String.join("+", strs); + + String s3 = String.join("+", "a", "b", "c"); + + String sc = String.valueOf('c'); + String si = String.valueOf(1); + String sl = String.valueOf(2l); + String sf = String.valueOf(3.f); + String sd = String.valueOf(4.); + } +} \ No newline at end of file diff --git a/migrator/test/java-mapper/CallExpressionRulesString.java.sts b/migrator/test/java-mapper/CallExpressionRulesString.java.sts new file mode 100644 index 000000000..96b6a5d29 --- /dev/null +++ b/migrator/test/java-mapper/CallExpressionRulesString.java.sts @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ohos.migrator.test.java; + +import * from "std/math/math"; +import List from "java/util"; +import ArrayList from "java/util"; +open class CallExpressiontRulesString { + public static Test(): void { + let s1 : String = new String("abc"); + let b : boolean = s1.contains("d", 0); +// List l = new ArrayList<>(2); +// l.add("a"); +// l.add("b"); +// List strs = l; +// +// String s2 = String.join("+", strs); + let s3 : String = String.join(["a", "b", "c"], "+"); + let sc : String = StringBuilder.toString('c'); + let si : String = StringBuilder.toString(1); + let sl : String = StringBuilder.toString(2 as long); + let sf : String = StringBuilder.toString(3. as float); + let sd : String = StringBuilder.toString(4.); + } +} + -- Gitee From 3a541961c740791d779b35a93d323e0c2c05ef35 Mon Sep 17 00:00:00 2001 From: Alexander Pavlyuk Date: Wed, 21 Dec 2022 13:27:33 +0300 Subject: [PATCH 2/2] The test for varargs function is added. Change-Id: Ia48620f7a9d0439e8d84be4cb17e85d104dd6a78 Signed-off-by: Alexander Pavlyuk --- .../com/ohos/migrator/java/JavaApiMapper.java | 2 -- .../ohos/migrator/java/JavaTransformer.java | 4 ++- migrator/test/java/varargs_function.java | 28 +++++++++++++++++++ migrator/test/java/varargs_function.java.sts | 27 ++++++++++++++++++ 4 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 migrator/test/java/varargs_function.java create mode 100644 migrator/test/java/varargs_function.java.sts diff --git a/migrator/src/com/ohos/migrator/java/JavaApiMapper.java b/migrator/src/com/ohos/migrator/java/JavaApiMapper.java index aa543e34d..99bbdd771 100644 --- a/migrator/src/com/ohos/migrator/java/JavaApiMapper.java +++ b/migrator/src/com/ohos/migrator/java/JavaApiMapper.java @@ -548,8 +548,6 @@ public class JavaApiMapper extends StaticTSParserBaseVisitor { assert arktsName != null; arktsMemberAccessExpression.children.remove(arktsMemberAccessExpression.Identifier()); -// assert(arktsMemberAccessExpression.getChildCount() == 1); -// arktsMemberAccessExpression.children.clear(); arktsMemberAccessExpression.addChild(new TerminalNodeImpl(new CommonToken(StaticTSParser.Identifier, arktsName))); if (typeReference != null) { diff --git a/migrator/src/com/ohos/migrator/java/JavaTransformer.java b/migrator/src/com/ohos/migrator/java/JavaTransformer.java index 0458c14e0..9eb24295c 100644 --- a/migrator/src/com/ohos/migrator/java/JavaTransformer.java +++ b/migrator/src/com/ohos/migrator/java/JavaTransformer.java @@ -3144,7 +3144,7 @@ public class JavaTransformer extends ASTVisitor implements Transformer { int nargs = javaArgs.size(); int n = nargs; // For the case of vararg the number of actual arguments may be more than the list of formal parameters. - // In such case the last format parameter has to have type of an array. + // In such case the last format parameter type has to be an array. if (javaParamsTypes != null && javaParamsTypes.length < nargs) { // The last parameter should be of array type to which all ending extra arguments will be packed. n = javaParamsTypes.length - 1; @@ -3162,6 +3162,8 @@ public class JavaTransformer extends ASTVisitor implements Transformer { javaExpr.accept(this); } + System.out.printf("f", 1, 3); + if (n < nargs) { pushCurrent(new ArrayLiteralExpressionContext(pushSingleExpression())); pushCurrent(new ExpressionSequenceContext(stsCurrent, 0)); diff --git a/migrator/test/java/varargs_function.java b/migrator/test/java/varargs_function.java new file mode 100644 index 000000000..322e090be --- /dev/null +++ b/migrator/test/java/varargs_function.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.ohos.migrator.test.java; + +class varargs_function { + public static void main(String[] args) { + foo(1, 3, 7); + } + + static void foo(Object... args) + { + int n = args.length; + System.out.println(n); + } +} diff --git a/migrator/test/java/varargs_function.java.sts b/migrator/test/java/varargs_function.java.sts new file mode 100644 index 000000000..e2afe6ac5 --- /dev/null +++ b/migrator/test/java/varargs_function.java.sts @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2022-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ohos.migrator.test.java; + +import * from "std/math/math"; +open class varargs_function { + public static main(args : String[]): void { + foo([1, 3, 7]); + } + static foo(... args: Object ): void { + let n : int = args.length; + System.out.println(n); + } +} + -- Gitee