From f7b651192afa94b3259ece86fee95884530de47c Mon Sep 17 00:00:00 2001 From: gabilang Date: Thu, 2 Nov 2023 17:39:16 +0530 Subject: [PATCH 1/3] Use 'external' in interop error messages --- .../compiler/bir/codegen/interop/ExternalMethodGen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/bir/codegen/interop/ExternalMethodGen.java b/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/bir/codegen/interop/ExternalMethodGen.java index c98b888361a4..e91c3cb301b9 100644 --- a/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/bir/codegen/interop/ExternalMethodGen.java +++ b/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/bir/codegen/interop/ExternalMethodGen.java @@ -240,7 +240,7 @@ public static BIRFunctionWrapper createExternalFunctionWrapper(boolean isEntry, isEntry, jvmPackageGen.symbolTable); } } else { - throw new BLangCompilerException("cannot find full qualified class name for extern function : " + + throw new BLangCompilerException("cannot find full qualified class name for external function : " + pkgName + birFunc.name.value); } } From ff50b1ff41b2859b6549b6706b4825dedeebdd26 Mon Sep 17 00:00:00 2001 From: gabilang Date: Thu, 9 Nov 2023 12:21:02 +0530 Subject: [PATCH 2/3] Add a test case --- .../codegen/interop/ExternalMethodGen.java | 2 +- .../basic/NegativeValidationTest.java | 8 +++++++ ...external_function_class_name_not_found.bal | 21 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 tests/jballerina-unit-test/src/test/resources/test-src/javainterop/negative/external_function_class_name_not_found.bal diff --git a/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/bir/codegen/interop/ExternalMethodGen.java b/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/bir/codegen/interop/ExternalMethodGen.java index e91c3cb301b9..8e6486c039f7 100644 --- a/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/bir/codegen/interop/ExternalMethodGen.java +++ b/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/bir/codegen/interop/ExternalMethodGen.java @@ -240,7 +240,7 @@ public static BIRFunctionWrapper createExternalFunctionWrapper(boolean isEntry, isEntry, jvmPackageGen.symbolTable); } } else { - throw new BLangCompilerException("cannot find full qualified class name for external function : " + + throw new BLangCompilerException("cannot find fully qualified class name for external function : " + pkgName + birFunc.name.value); } } diff --git a/tests/jballerina-unit-test/src/test/java/org/ballerinalang/test/javainterop/basic/NegativeValidationTest.java b/tests/jballerina-unit-test/src/test/java/org/ballerinalang/test/javainterop/basic/NegativeValidationTest.java index 6623c907dc8c..aaf2f0af99bc 100644 --- a/tests/jballerina-unit-test/src/test/java/org/ballerinalang/test/javainterop/basic/NegativeValidationTest.java +++ b/tests/jballerina-unit-test/src/test/java/org/ballerinalang/test/javainterop/basic/NegativeValidationTest.java @@ -19,6 +19,7 @@ import io.ballerina.runtime.api.values.BFuture; import io.ballerina.runtime.api.values.BTypedesc; +import org.ballerinalang.compiler.BLangCompilerException; import org.ballerinalang.test.BAssertUtil; import org.ballerinalang.test.BCompileUtil; import org.ballerinalang.test.CompileResult; @@ -558,4 +559,11 @@ public void testAbstractClassInstantiationError() { " ''org.ballerinalang.nativeimpl.jvm.tests.Interface' is abstract, and cannot be instantiated'", 23, 1); } + + @Test(expectedExceptionsMessageRegExp = ".*cannot find fully qualified class name for external function : .*", + expectedExceptions = BLangCompilerException.class) + public void testClassNameForExternalFunctionNotFound() { + String path = "test-src/javainterop/negative/external_function_class_name_not_found.bal"; + BCompileUtil.compile(path); + } } diff --git a/tests/jballerina-unit-test/src/test/resources/test-src/javainterop/negative/external_function_class_name_not_found.bal b/tests/jballerina-unit-test/src/test/resources/test-src/javainterop/negative/external_function_class_name_not_found.bal new file mode 100644 index 000000000000..66baf0ee2f6c --- /dev/null +++ b/tests/jballerina-unit-test/src/test/resources/test-src/javainterop/negative/external_function_class_name_not_found.bal @@ -0,0 +1,21 @@ +// Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you 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. + +function foo() { + function (typedesc x) returns int fn1 = bar; +} + +function bar(typedesc y) returns y = external; From 1af70bedc6d85b7183f35a6313e0e723b1723e44 Mon Sep 17 00:00:00 2001 From: Gabilan Ganeshwaran Date: Tue, 21 Nov 2023 13:33:39 +0530 Subject: [PATCH 3/3] Update license header Co-authored-by: lochana-chathura <39232462+lochana-chathura@users.noreply.github.com> --- .../negative/external_function_class_name_not_found.bal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/jballerina-unit-test/src/test/resources/test-src/javainterop/negative/external_function_class_name_not_found.bal b/tests/jballerina-unit-test/src/test/resources/test-src/javainterop/negative/external_function_class_name_not_found.bal index 66baf0ee2f6c..b0c1cdaf5cbb 100644 --- a/tests/jballerina-unit-test/src/test/resources/test-src/javainterop/negative/external_function_class_name_not_found.bal +++ b/tests/jballerina-unit-test/src/test/resources/test-src/javainterop/negative/external_function_class_name_not_found.bal @@ -1,4 +1,4 @@ -// Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. +// Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com). // // WSO2 LLC. licenses this file to you under the Apache License, // Version 2.0 (the "License"); you may not use this file except