From 649de9ce341a7c899f30f770e10e03454815ea5d Mon Sep 17 00:00:00 2001 From: Igor Rossinski Date: Tue, 9 Aug 2022 13:06:34 +0300 Subject: [PATCH 1/7] Improve interface translation - part I. Signed-off-by: Igor Rossinski --- migrator/src/com/ohos/migrator/java/JavaTransformer.java | 6 ++++-- migrator/test/java/test_interface.java | 7 +++++++ migrator/test/java/test_interface.java.sts | 7 +++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/migrator/src/com/ohos/migrator/java/JavaTransformer.java b/migrator/src/com/ohos/migrator/java/JavaTransformer.java index 25cd45f53..5b2552969 100644 --- a/migrator/src/com/ohos/migrator/java/JavaTransformer.java +++ b/migrator/src/com/ohos/migrator/java/JavaTransformer.java @@ -577,7 +577,8 @@ public class JavaTransformer extends ASTVisitor implements Transformer { // Access modifier in STS is a child of ClassMemberContext or InterfaceMemberContext, not declaration itself! AccessibilityModifierContext stsAccessMod = NodeBuilder.accessibilityModifier(javaMods); - if (stsAccessMod != null) stsCurrent.addChild(stsAccessMod).setParent(stsCurrent); + // STS interface members should not have 'public' modifiers + if (stsAccessMod != null && isInClassContext) stsCurrent.addChild(stsAccessMod).setParent(stsCurrent); ParserRuleContext stsClassOrInterField = isInClassContext ? new ClassFieldDeclarationContext(stsCurrent, 0) @@ -1365,7 +1366,8 @@ public class JavaTransformer extends ASTVisitor implements Transformer { // Access modifier in STS is a child of ClassMemberContext or InterfaceMemberContext, not declaration itself! int javaMods = javaMethodDeclaration.getModifiers(); AccessibilityModifierContext stsAccessMod = NodeBuilder.accessibilityModifier(javaMods); - if (stsAccessMod != null) stsCurrent.addChild(stsAccessMod).setParent(stsCurrent); + // STS interface memebers should not have 'public' modifier + if (stsAccessMod != null && isInClassContext) stsCurrent.addChild(stsAccessMod).setParent(stsCurrent); Block javaBlock = javaMethodDeclaration.getBody(); diff --git a/migrator/test/java/test_interface.java b/migrator/test/java/test_interface.java index 279e096c6..c7f13de76 100644 --- a/migrator/test/java/test_interface.java +++ b/migrator/test/java/test_interface.java @@ -21,10 +21,17 @@ import java.io.*; interface test_interface { int i = 10; double pi = 3.1416; + void foo(); static void foo(int i) {} private void foo(boolean b) {} + + public void foo(String s); +} + +strictfp interface iface_FP { + void foo(float f); } diff --git a/migrator/test/java/test_interface.java.sts b/migrator/test/java/test_interface.java.sts index 9c0696455..beaf87729 100644 --- a/migrator/test/java/test_interface.java.sts +++ b/migrator/test/java/test_interface.java.sts @@ -22,9 +22,12 @@ interface test_interface { foo(): void ; static foo(i : int): void { } - - private foo(b : boolean): void { + foo(b : boolean): void { } + foo(s : String): void ; +} +interface iface_FP { + foo(f : float): void ; } -- Gitee From ddc8e1458023b33731cbb67d91d446c99b767624 Mon Sep 17 00:00:00 2001 From: Igor Rossinski Date: Tue, 9 Aug 2022 15:04:57 +0300 Subject: [PATCH 2/7] Fix error with repeating error messages in STS syntax checker Signed-off-by: Igor Rossinski --- migrator/src/com/ohos/migrator/Main.java | 10 ++++++++-- .../ohos/migrator/staticTS/StaticTSSyntaxChecker.java | 5 ++++- .../ohos/migrator/staticTS/SyntaxErrorListener.java | 4 +++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/migrator/src/com/ohos/migrator/Main.java b/migrator/src/com/ohos/migrator/Main.java index 4f8e16954..5141f4c3d 100644 --- a/migrator/src/com/ohos/migrator/Main.java +++ b/migrator/src/com/ohos/migrator/Main.java @@ -51,7 +51,10 @@ public class Main { } } - if (!runningTests) System.exit(exitCode.value); + if (!runningTests) + System.exit(exitCode.value); + + errorList = new ArrayList<>(); } private static boolean runningTests = false; @@ -245,7 +248,10 @@ public class Main { ResultCode code = stsChecker.transpile(); errorList.addAll(stsChecker.getErrorList()); - if (code == ResultCode.OK) System.out.println("Syntax OK."); + if (code == ResultCode.OK) + System.out.println("Syntax OK."); + else + System.out.println("Bad syntax!"); return code; } } diff --git a/migrator/src/com/ohos/migrator/staticTS/StaticTSSyntaxChecker.java b/migrator/src/com/ohos/migrator/staticTS/StaticTSSyntaxChecker.java index b3f2949be..997069ef6 100644 --- a/migrator/src/com/ohos/migrator/staticTS/StaticTSSyntaxChecker.java +++ b/migrator/src/com/ohos/migrator/staticTS/StaticTSSyntaxChecker.java @@ -54,6 +54,9 @@ public class StaticTSSyntaxChecker extends AbstractTranspiler { throw new TranspileException(ResultCode.ParseError, "File " + srcFile.getPath() + " failed syntax check!"); } catch (ParseCancellationException e) { throw new TranspileException(ResultCode.ParseError, "File " + srcFile.getPath() + " failed syntax check!"); - } + } finally { + SyntaxErrorListener.INSTANCE.clearMsgList(); + } + } } diff --git a/migrator/src/com/ohos/migrator/staticTS/SyntaxErrorListener.java b/migrator/src/com/ohos/migrator/staticTS/SyntaxErrorListener.java index 25586362f..7960a0038 100644 --- a/migrator/src/com/ohos/migrator/staticTS/SyntaxErrorListener.java +++ b/migrator/src/com/ohos/migrator/staticTS/SyntaxErrorListener.java @@ -28,9 +28,11 @@ public class SyntaxErrorListener extends BaseErrorListener { List msgList; public List getMsgList() { return msgList; } + public void clearMsgList() { msgList = new ArrayList<>();} + public static final SyntaxErrorListener INSTANCE = new SyntaxErrorListener(); - public SyntaxErrorListener() { msgList = new ArrayList<>();} + public SyntaxErrorListener() { clearMsgList(); } @Override public void syntaxError(Recognizer recognizer, Object offendingsymbol, int line, int charPositionInLine, String msg, RecognitionException e) { -- Gitee From d6ba241bd4a9abcf9d3f7240a09d375ef9319569 Mon Sep 17 00:00:00 2001 From: Igor Rossinski Date: Wed, 10 Aug 2022 14:39:43 +0300 Subject: [PATCH 3/7] Improve interface tranlation part II + fix error with null pointer exception in java transpiler Signed-off-by: Igor Rossinski --- .../ohos/migrator/java/JavaTransformer.java | 9 +++- .../ohos/migrator/java/JavaTranspiler.java | 2 + migrator/test/java/interface_nested.java | 53 +++++++++++++++++++ migrator/test/java/interface_nested.java.sts | 46 ++++++++++++++++ migrator/test/java/interface_public.java | 35 ++++++++++++ migrator/test/java/interface_public.java.sts | 33 ++++++++++++ 6 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 migrator/test/java/interface_nested.java create mode 100644 migrator/test/java/interface_nested.java.sts create mode 100644 migrator/test/java/interface_public.java create mode 100644 migrator/test/java/interface_public.java.sts diff --git a/migrator/src/com/ohos/migrator/java/JavaTransformer.java b/migrator/src/com/ohos/migrator/java/JavaTransformer.java index 5b2552969..ddf233f36 100644 --- a/migrator/src/com/ohos/migrator/java/JavaTransformer.java +++ b/migrator/src/com/ohos/migrator/java/JavaTransformer.java @@ -466,6 +466,10 @@ public class JavaTransformer extends ASTVisitor implements Transformer { private ParserRuleContext createMemberContextWithAccessModifier(int javaMods) { boolean isInClassContext = stsCurrent instanceof ClassBodyContext; boolean isInInterfaceContext = stsCurrent instanceof InterfaceBodyContext; + ParserRuleContext stsOuter = null; + if( stsCurrent.getParent() != null ) + stsOuter = stsCurrent.getParent().getParent(); + boolean isOuterClassMember = stsOuter != null && stsOuter instanceof ClassBodyContext; ParserRuleContext stsMemberContext; if (isInClassContext) @@ -482,7 +486,10 @@ public class JavaTransformer extends ASTVisitor implements Transformer { // NOTE: In all cases, resulting node should NOT be a child of declaration node! if (isInClassContext || isInInterfaceContext) { AccessibilityModifierContext stsAccessMod = NodeBuilder.accessibilityModifier(javaMods); - if (stsAccessMod != null) stsMemberContext.addChild(stsAccessMod).setParent(stsMemberContext); + if (stsAccessMod != null) { + if( (javaMods & Modifier.PUBLIC) == 0 || isInClassContext ) + stsMemberContext.addChild(stsAccessMod).setParent(stsMemberContext); + } } else if ((javaMods & Modifier.PUBLIC) != 0) stsMemberContext.addChild(NodeBuilder.terminalNode(StaticTSParser.Export)); diff --git a/migrator/src/com/ohos/migrator/java/JavaTranspiler.java b/migrator/src/com/ohos/migrator/java/JavaTranspiler.java index 3d00af70e..ee5fff021 100644 --- a/migrator/src/com/ohos/migrator/java/JavaTranspiler.java +++ b/migrator/src/com/ohos/migrator/java/JavaTranspiler.java @@ -53,6 +53,8 @@ public class JavaTranspiler extends AbstractTranspiler { throw new TranspileException(ResultCode.InputError, e); } catch (JavaParserException e) { throw new TranspileException(ResultCode.ParseError, e); + } catch (Exception e) { + throw new TranspileException(ResultCode.TranspileError, e); } } diff --git a/migrator/test/java/interface_nested.java b/migrator/test/java/interface_nested.java new file mode 100644 index 000000000..f1352d205 --- /dev/null +++ b/migrator/test/java/interface_nested.java @@ -0,0 +1,53 @@ +/* + * 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.tests.java; + +import java.util.List; +import java.io.*; + + +interface Test { + void Outtermethod(); + + interface innerInterface { + public int Innermethod(); + } + + public interface inner_A { + double coeff(); + } +} + + +class TestClass implements Test.innerInterface, Test.inner_A { + @Override + public int Innermethod() { + return 37037; + } + + @Override + public double coeff() { + return 3.14; + } + + public interface constants { + public double Pi(); + static double E() { return 2.7828; }; + } + +} + + diff --git a/migrator/test/java/interface_nested.java.sts b/migrator/test/java/interface_nested.java.sts new file mode 100644 index 000000000..fd44db476 --- /dev/null +++ b/migrator/test/java/interface_nested.java.sts @@ -0,0 +1,46 @@ +/* + * 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.tests.java; + +import java.util.List; +import java.io.*; +interface Test { + Outtermethod(): void ; + interface innerInterface { + Innermethod(): int ; + } + + interface inner_A { + coeff(): double ; + } + +} + +open class TestClass implements Test.innerInterface, Test.inner_A { + public open Innermethod(): int { + return 37037; + } + public open coeff(): double { + return 3.14; + } + public interface constants { + Pi(): double ; + static E(): double { + return 2.7828; + } + } + +} + diff --git a/migrator/test/java/interface_public.java b/migrator/test/java/interface_public.java new file mode 100644 index 000000000..fafc400f9 --- /dev/null +++ b/migrator/test/java/interface_public.java @@ -0,0 +1,35 @@ +/* + * 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.tests.java; + +import java.util.List; +import java.io.*; + +public strictfp interface interface_public { + int i = 10; + public static final double pi = 3.1416; + + void foo(); + + static strictfp void foo(int i) {} + + private strictfp void foo(boolean b) {} + + public void foo(String s); + + public static strictfp double Pi () { return pi; } +} + diff --git a/migrator/test/java/interface_public.java.sts b/migrator/test/java/interface_public.java.sts new file mode 100644 index 000000000..95d8ab795 --- /dev/null +++ b/migrator/test/java/interface_public.java.sts @@ -0,0 +1,33 @@ +/* + * 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.tests.java; + +import java.util.List; +import java.io.*; +export interface interface_public { + i : int = 10; + pi : double = 3.1416; + foo(): void ; + static foo(i : int): void { + } + foo(b : boolean): void { + } + foo(s : String): void ; + static Pi(): double { + return pi; + } +} + -- Gitee From deec002c863e74f6d8f96816b33bc635b7f03543 Mon Sep 17 00:00:00 2001 From: Igor Rossinski Date: Wed, 17 Aug 2022 15:00:27 +0300 Subject: [PATCH 4/7] Migrator: fix error in interface 'extends' clause Signed-off-by: Igor Rossinski --- .../src/com/ohos/migrator/java/JavaTransformer.java | 11 ++++++++--- migrator/test/java/test_interface.java | 4 ++++ migrator/test/java/test_interface.java.sts | 4 ++++ migrator/test/java/var_declare.java | 3 +++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/migrator/src/com/ohos/migrator/java/JavaTransformer.java b/migrator/src/com/ohos/migrator/java/JavaTransformer.java index ddf233f36..e14c34275 100644 --- a/migrator/src/com/ohos/migrator/java/JavaTransformer.java +++ b/migrator/src/com/ohos/migrator/java/JavaTransformer.java @@ -410,9 +410,14 @@ public class JavaTransformer extends ASTVisitor implements Transformer { // TypeReferenceContext // QualifiedNameContext // TerminalNode - pushCurrent(new ImplementsClauseContext(stsCurrent, 0)); - stsCurrent.addChild(NodeBuilder.terminalNode(StaticTSParser.Implements)); - + if( stsCurrent instanceof InterfaceDeclarationContext) { + pushCurrent(new InterfaceExtendsClauseContext(stsCurrent, 0)); + stsCurrent.addChild(NodeBuilder.terminalNode(StaticTSParser.Extends)); + } + else { + pushCurrent(new ImplementsClauseContext(stsCurrent, 0)); + stsCurrent.addChild(NodeBuilder.terminalNode(StaticTSParser.Implements)); + } pushCurrent(new InterfaceTypeListContext(stsCurrent, 0)); for (Type javaSuperInterfaceType : javaSuperInterfaceTypes) { diff --git a/migrator/test/java/test_interface.java b/migrator/test/java/test_interface.java index c7f13de76..877048937 100644 --- a/migrator/test/java/test_interface.java +++ b/migrator/test/java/test_interface.java @@ -35,3 +35,7 @@ strictfp interface iface_FP { void foo(float f); } + +interface iface_C extends test_interface, iface_FP { + public void foo(double d); +} diff --git a/migrator/test/java/test_interface.java.sts b/migrator/test/java/test_interface.java.sts index beaf87729..1ad4abae3 100644 --- a/migrator/test/java/test_interface.java.sts +++ b/migrator/test/java/test_interface.java.sts @@ -31,3 +31,7 @@ interface iface_FP { foo(f : float): void ; } +interface iface_C extends test_interface, iface_FP { + foo(d : double): void ; +} + diff --git a/migrator/test/java/var_declare.java b/migrator/test/java/var_declare.java index 0dd30ecc6..5e0e8cea1 100644 --- a/migrator/test/java/var_declare.java +++ b/migrator/test/java/var_declare.java @@ -25,5 +25,8 @@ class VarDeclareTest { final double e = 2.781828; final float Pi = 3.14f; + //final double phi = 0.14e+01; + //final double g = 9.81e+00; + //final double dd = 4.343234234234234e+00; } } -- Gitee From 6dfed4261e0bbe33ab0763b17d6afdb45006e00b Mon Sep 17 00:00:00 2001 From: Igor Rossinski Date: Wed, 17 Aug 2022 16:43:41 +0300 Subject: [PATCH 5/7] add some test cases for interfaces Signed-off-by: Igor Rossinski --- migrator/test/java/interface_nested.java | 9 +++++++++ migrator/test/java/interface_nested.java.sts | 8 ++++++++ migrator/test/java/interface_public.java | 2 ++ migrator/test/java/interface_public.java.sts | 4 +++- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/migrator/test/java/interface_nested.java b/migrator/test/java/interface_nested.java index f1352d205..ced33cff3 100644 --- a/migrator/test/java/interface_nested.java +++ b/migrator/test/java/interface_nested.java @@ -22,6 +22,15 @@ import java.io.*; interface Test { void Outtermethod(); + public class A { + int i; + } + + abstract interface dummy { + void getI(); + } + + interface innerInterface { public int Innermethod(); } diff --git a/migrator/test/java/interface_nested.java.sts b/migrator/test/java/interface_nested.java.sts index fd44db476..8bbe7d92f 100644 --- a/migrator/test/java/interface_nested.java.sts +++ b/migrator/test/java/interface_nested.java.sts @@ -18,6 +18,14 @@ import java.util.List; import java.io.*; interface Test { Outtermethod(): void ; + open class A { + i : int ; + } + + interface dummy { + getI(): void ; + } + interface innerInterface { Innermethod(): int ; } diff --git a/migrator/test/java/interface_public.java b/migrator/test/java/interface_public.java index fafc400f9..57623fccc 100644 --- a/migrator/test/java/interface_public.java +++ b/migrator/test/java/interface_public.java @@ -31,5 +31,7 @@ public strictfp interface interface_public { public void foo(String s); public static strictfp double Pi () { return pi; } + + default double E() { return 2.71828; } } diff --git a/migrator/test/java/interface_public.java.sts b/migrator/test/java/interface_public.java.sts index 95d8ab795..8e06462c9 100644 --- a/migrator/test/java/interface_public.java.sts +++ b/migrator/test/java/interface_public.java.sts @@ -12,7 +12,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.ohos.migrator.tests.java; import java.util.List; @@ -29,5 +28,8 @@ export interface interface_public { static Pi(): double { return pi; } + E(): double { + return 2.71828; + } } -- Gitee From 24b7a83f8ebebad8a0a198014c0f1b50ade50a7a Mon Sep 17 00:00:00 2001 From: Igor Rossinski Date: Mon, 29 Aug 2022 14:20:49 +0300 Subject: [PATCH 6/7] improve transpile exception processing and code clean Signed-off-by: Igor Rossinski --- .../com/ohos/migrator/AbstractTranspiler.java | 2 +- .../ohos/migrator/java/JavaTransformer.java | 38 +++---------------- .../ohos/migrator/java/JavaTranspiler.java | 2 - 3 files changed, 6 insertions(+), 36 deletions(-) diff --git a/migrator/src/com/ohos/migrator/AbstractTranspiler.java b/migrator/src/com/ohos/migrator/AbstractTranspiler.java index 196df0c8a..0dc971cd2 100644 --- a/migrator/src/com/ohos/migrator/AbstractTranspiler.java +++ b/migrator/src/com/ohos/migrator/AbstractTranspiler.java @@ -70,7 +70,7 @@ public abstract class AbstractTranspiler implements Transpiler { sb.append(ste.toString()).append("\n"); errorList.add(new TranspileException(ResultCode.InputError, sb.toString())); - transpileResult = ResultCode.majorValue(ResultCode.InputError, transpileResult); + transpileResult = ResultCode.majorValue(ResultCode.TranspileError, transpileResult); if (Main.isStrictMode()) return transpileResult; } } diff --git a/migrator/src/com/ohos/migrator/java/JavaTransformer.java b/migrator/src/com/ohos/migrator/java/JavaTransformer.java index e14c34275..ff53eaf63 100644 --- a/migrator/src/com/ohos/migrator/java/JavaTransformer.java +++ b/migrator/src/com/ohos/migrator/java/JavaTransformer.java @@ -471,10 +471,6 @@ public class JavaTransformer extends ASTVisitor implements Transformer { private ParserRuleContext createMemberContextWithAccessModifier(int javaMods) { boolean isInClassContext = stsCurrent instanceof ClassBodyContext; boolean isInInterfaceContext = stsCurrent instanceof InterfaceBodyContext; - ParserRuleContext stsOuter = null; - if( stsCurrent.getParent() != null ) - stsOuter = stsCurrent.getParent().getParent(); - boolean isOuterClassMember = stsOuter != null && stsOuter instanceof ClassBodyContext; ParserRuleContext stsMemberContext; if (isInClassContext) @@ -489,10 +485,9 @@ public class JavaTransformer extends ASTVisitor implements Transformer { // Process access modifier. In top-level context, public translates to export, // everything else to none. In all other contexts, emit AccessibilityModifierContext. // NOTE: In all cases, resulting node should NOT be a child of declaration node! - if (isInClassContext || isInInterfaceContext) { + if (isInClassContext) { AccessibilityModifierContext stsAccessMod = NodeBuilder.accessibilityModifier(javaMods); - if (stsAccessMod != null) { - if( (javaMods & Modifier.PUBLIC) == 0 || isInClassContext ) + if (stsAccessMod != null) {//stsMemberContext = null; stsMemberContext.addChild(stsAccessMod).setParent(stsMemberContext); } } @@ -580,18 +575,7 @@ public class JavaTransformer extends ASTVisitor implements Transformer { List javaVarDeclFragments = javaFieldDecl.fragments(); for (VariableDeclarationFragment javaVarDeclFragment : javaVarDeclFragments) { - // Create appropriate member context to put declaration into. - ParserRuleContext stsClassOrInterMember = isInClassContext ? - new ClassMemberContext(stsCurrent, 0) - : new InterfaceMemberContext(stsCurrent, 0); - - pushCurrent(stsClassOrInterMember); - - // Access modifier in STS is a child of ClassMemberContext or InterfaceMemberContext, not declaration itself! - AccessibilityModifierContext stsAccessMod = NodeBuilder.accessibilityModifier(javaMods); - // STS interface members should not have 'public' modifiers - if (stsAccessMod != null && isInClassContext) stsCurrent.addChild(stsAccessMod).setParent(stsCurrent); - + pushCurrent(createMemberContextWithAccessModifier(javaMods)); ParserRuleContext stsClassOrInterField = isInClassContext ? new ClassFieldDeclarationContext(stsCurrent, 0) : new InterfaceFieldContext((InterfaceMemberContext)stsCurrent); @@ -1367,20 +1351,8 @@ public class JavaTransformer extends ASTVisitor implements Transformer { public boolean visit(MethodDeclaration javaMethodDeclaration) { boolean isInClassContext = stsCurrent instanceof ClassBodyContext; assert(isInClassContext || (stsCurrent instanceof InterfaceBodyContext)); - - // Create appropriate member context to put declaration into. - ParserRuleContext stsClassOrInterMember = isInClassContext ? - new ClassMemberContext(stsCurrent, 0) - : new InterfaceMemberContext(stsCurrent, 0); - - pushCurrent(stsClassOrInterMember); - - // Access modifier in STS is a child of ClassMemberContext or InterfaceMemberContext, not declaration itself! - int javaMods = javaMethodDeclaration.getModifiers(); - AccessibilityModifierContext stsAccessMod = NodeBuilder.accessibilityModifier(javaMods); - // STS interface memebers should not have 'public' modifier - if (stsAccessMod != null && isInClassContext) stsCurrent.addChild(stsAccessMod).setParent(stsCurrent); - + + pushCurrent(createMemberContextWithAccessModifier(javaMethodDeclaration.getModifiers())); Block javaBlock = javaMethodDeclaration.getBody(); if (javaMethodDeclaration.isConstructor()) { diff --git a/migrator/src/com/ohos/migrator/java/JavaTranspiler.java b/migrator/src/com/ohos/migrator/java/JavaTranspiler.java index ee5fff021..3d00af70e 100644 --- a/migrator/src/com/ohos/migrator/java/JavaTranspiler.java +++ b/migrator/src/com/ohos/migrator/java/JavaTranspiler.java @@ -53,8 +53,6 @@ public class JavaTranspiler extends AbstractTranspiler { throw new TranspileException(ResultCode.InputError, e); } catch (JavaParserException e) { throw new TranspileException(ResultCode.ParseError, e); - } catch (Exception e) { - throw new TranspileException(ResultCode.TranspileError, e); } } -- Gitee From 09f74ef8e44b34641746ad88e71f1c6616e5a669 Mon Sep 17 00:00:00 2001 From: Igor Rossinski Date: Mon, 29 Aug 2022 16:06:14 +0300 Subject: [PATCH 7/7] interface test resilvering Signed-off-by: Igor Rossinski --- migrator/test/java/interface_nested.java.sts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migrator/test/java/interface_nested.java.sts b/migrator/test/java/interface_nested.java.sts index 8bbe7d92f..088e675be 100644 --- a/migrator/test/java/interface_nested.java.sts +++ b/migrator/test/java/interface_nested.java.sts @@ -37,10 +37,10 @@ interface Test { } open class TestClass implements Test.innerInterface, Test.inner_A { - public open Innermethod(): int { + public override Innermethod(): int { return 37037; } - public open coeff(): double { + public override coeff(): double { return 3.14; } public interface constants { -- Gitee