From b4af22be88d8aec6142982a3777008da43b3569f Mon Sep 17 00:00:00 2001 From: LakshanWeerasinghe Date: Wed, 10 Jul 2024 14:55:12 +0530 Subject: [PATCH 1/3] Fix reference finding of init functions --- .../java/io/ballerina/compiler/api/impl/ReferenceFinder.java | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/compiler/api/impl/ReferenceFinder.java b/compiler/ballerina-lang/src/main/java/io/ballerina/compiler/api/impl/ReferenceFinder.java index 8b20558e6350..a92917585e6c 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/compiler/api/impl/ReferenceFinder.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/compiler/api/impl/ReferenceFinder.java @@ -899,6 +899,7 @@ public void visit(BLangInvocation invocationExpr) { public void visit(BLangTypeInit typeInit) { find(typeInit.userDefinedType); find(typeInit.argsExpr); + find(typeInit.initInvocation); } @Override From 5df9d7d408da2c98bf3d4ae2b640a77faf940840 Mon Sep 17 00:00:00 2001 From: LakshanWeerasinghe Date: Mon, 22 Jul 2024 15:10:35 +0530 Subject: [PATCH 2/3] Add tests for init func refs --- .../langserver/references/ReferencesTest.java | 1 + .../expected/init_function_references.json | 50 +++++++++++++++++++ .../sources/projectls/class_def.bal | 11 ++++ .../sources/projectls/union_types.bal | 2 + 4 files changed, 64 insertions(+) create mode 100644 language-server/modules/langserver-core/src/test/resources/references/expected/init_function_references.json create mode 100644 language-server/modules/langserver-core/src/test/resources/references/sources/projectls/class_def.bal diff --git a/language-server/modules/langserver-core/src/test/java/org/ballerinalang/langserver/references/ReferencesTest.java b/language-server/modules/langserver-core/src/test/java/org/ballerinalang/langserver/references/ReferencesTest.java index 22849eb4d742..44dec980d932 100644 --- a/language-server/modules/langserver-core/src/test/java/org/ballerinalang/langserver/references/ReferencesTest.java +++ b/language-server/modules/langserver-core/src/test/java/org/ballerinalang/langserver/references/ReferencesTest.java @@ -124,6 +124,7 @@ protected Object[][] testDataProvider() { // being set to lang.annotations. {"ref_package_alias_config1.json"}, {"ref_retry_spec_config1.json"}, + {"init_function_references.json"}, }; } diff --git a/language-server/modules/langserver-core/src/test/resources/references/expected/init_function_references.json b/language-server/modules/langserver-core/src/test/resources/references/expected/init_function_references.json new file mode 100644 index 000000000000..b864fb8a3600 --- /dev/null +++ b/language-server/modules/langserver-core/src/test/resources/references/expected/init_function_references.json @@ -0,0 +1,50 @@ +{ + "source": { + "file": "projectls/class_def.bal" + }, + "position": { + "line": 4, + "character": 16 + }, + "result": [ + { + "uri": "projectls/class_def.bal", + "range": { + "start": { + "line": 10, + "character": 16 + }, + "end": { + "line": 10, + "character": 19 + } + } + }, + { + "uri": "projectls/union_types.bal", + "range": { + "start": { + "line": 6, + "character": 16 + }, + "end": { + "line": 6, + "character": 19 + } + } + }, + { + "uri": "projectls/class_def.bal", + "range": { + "start": { + "line": 4, + "character": 13 + }, + "end": { + "line": 4, + "character": 17 + } + } + } + ] +} \ No newline at end of file diff --git a/language-server/modules/langserver-core/src/test/resources/references/sources/projectls/class_def.bal b/language-server/modules/langserver-core/src/test/resources/references/sources/projectls/class_def.bal new file mode 100644 index 000000000000..cb24e6f7d59a --- /dev/null +++ b/language-server/modules/langserver-core/src/test/resources/references/sources/projectls/class_def.bal @@ -0,0 +1,11 @@ +class User { + private string uuid; + private string name; + + function init(string uuid, string name) { + this.uuid = uuid; + this.name = name; + } +} + +final User u1 = new User("123", "Alice"); diff --git a/language-server/modules/langserver-core/src/test/resources/references/sources/projectls/union_types.bal b/language-server/modules/langserver-core/src/test/resources/references/sources/projectls/union_types.bal index 40fef2cf1860..34ed5e210177 100644 --- a/language-server/modules/langserver-core/src/test/resources/references/sources/projectls/union_types.bal +++ b/language-server/modules/langserver-core/src/test/resources/references/sources/projectls/union_types.bal @@ -3,3 +3,5 @@ import projectls.lsmod2; public type RecUnion lsmod1:Mod1Rec|lsmod2:Mod2Rec; + +final User u2 = new User("123", "Bob"); From 1dd1eb9c9f4640f8cde5b8f6f9c391d856239fae Mon Sep 17 00:00:00 2001 From: LakshanWeerasinghe Date: Mon, 22 Jul 2024 19:26:18 +0530 Subject: [PATCH 3/3] Fix failing tests --- .../io/ballerina/compiler/api/impl/ReferenceFinder.java | 1 - .../api/test/allreferences/FindAllReferencesTest.java | 6 ++++++ .../test/allreferences/FindRefsInClassObjectTest.java | 9 ++++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/compiler/api/impl/ReferenceFinder.java b/compiler/ballerina-lang/src/main/java/io/ballerina/compiler/api/impl/ReferenceFinder.java index a92917585e6c..760d26ce9e14 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/compiler/api/impl/ReferenceFinder.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/compiler/api/impl/ReferenceFinder.java @@ -898,7 +898,6 @@ public void visit(BLangInvocation invocationExpr) { @Override public void visit(BLangTypeInit typeInit) { find(typeInit.userDefinedType); - find(typeInit.argsExpr); find(typeInit.initInvocation); } diff --git a/tests/ballerina-compiler-api-test/src/test/java/io/ballerina/semantic/api/test/allreferences/FindAllReferencesTest.java b/tests/ballerina-compiler-api-test/src/test/java/io/ballerina/semantic/api/test/allreferences/FindAllReferencesTest.java index 64dfee1918ca..cbcda3eed679 100644 --- a/tests/ballerina-compiler-api-test/src/test/java/io/ballerina/semantic/api/test/allreferences/FindAllReferencesTest.java +++ b/tests/ballerina-compiler-api-test/src/test/java/io/ballerina/semantic/api/test/allreferences/FindAllReferencesTest.java @@ -26,6 +26,7 @@ import io.ballerina.tools.text.LinePosition; import io.ballerina.tools.text.LineRange; import org.ballerinalang.test.BCompileUtil; +import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -143,4 +144,9 @@ protected static void assertLocations(List locations, List e assertTrue(lineRanges.contains(expLocation.lineRange())); } } + + @AfterClass + public void tearDown() { + model = null; + } } diff --git a/tests/ballerina-compiler-api-test/src/test/java/io/ballerina/semantic/api/test/allreferences/FindRefsInClassObjectTest.java b/tests/ballerina-compiler-api-test/src/test/java/io/ballerina/semantic/api/test/allreferences/FindRefsInClassObjectTest.java index 57d6c68e9251..710fda243c58 100644 --- a/tests/ballerina-compiler-api-test/src/test/java/io/ballerina/semantic/api/test/allreferences/FindRefsInClassObjectTest.java +++ b/tests/ballerina-compiler-api-test/src/test/java/io/ballerina/semantic/api/test/allreferences/FindRefsInClassObjectTest.java @@ -18,6 +18,7 @@ package io.ballerina.semantic.api.test.allreferences; +import org.testng.annotations.AfterClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -54,7 +55,8 @@ public Object[][] getLookupPositions() { List.of(location(24, 13, 20)) }, {30, 13, location(30, 13, 17), - List.of(location(30, 13, 17)) + List.of(location(30, 13, 17), + location(52, 17, 20)) }, {34, 13, location(34, 13, 20), List.of(location(34, 13, 20), @@ -79,4 +81,9 @@ public Object[][] getLookupPositions() { public String getTestSourcePath() { return "test-src/find-all-ref/find_refs_in_class_object.bal"; } + + @AfterClass + public void tearDown() { + super.tearDown(); + } }