From 3865a6596afca1c193eb17bbb74008077096e7c3 Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 7 Jul 2025 14:54:54 -0700 Subject: Language server: sort completion candidate by relevance. (#7626) * Language server: sort completion candidate by relevance. * Small adjustment. --- tests/language-server/completion-sorting-1.slang | 18 ++++++++++++++++++ tests/language-server/completion-sorting-2.slang | 19 +++++++++++++++++++ tests/language-server/completion-sorting-3.slang | 16 ++++++++++++++++ tests/language-server/completion-sorting-4.slang | 16 ++++++++++++++++ tests/language-server/completion-sorting-5.slang | 16 ++++++++++++++++ 5 files changed, 85 insertions(+) create mode 100644 tests/language-server/completion-sorting-1.slang create mode 100644 tests/language-server/completion-sorting-2.slang create mode 100644 tests/language-server/completion-sorting-3.slang create mode 100644 tests/language-server/completion-sorting-4.slang create mode 100644 tests/language-server/completion-sorting-5.slang (limited to 'tests/language-server') diff --git a/tests/language-server/completion-sorting-1.slang b/tests/language-server/completion-sorting-1.slang new file mode 100644 index 000000000..974413451 --- /dev/null +++ b/tests/language-server/completion-sorting-1.slang @@ -0,0 +1,18 @@ +//TEST:LANG_SERVER(filecheck=CHECK): + +// Test that completion candidates are sorted according to context. + +enum Fruit { Orange, Apple, Banana } +enum Color { Red, Green, Blue } +void expect(Fruit e) {} +void expect(Color e) {} + + +void test() +{ +//COMPLETE:14,15 + Fruit t = // should list `Fruit` first. + +} + +// CHECK: Fruit:{{.*}}sort(0:Fruit) \ No newline at end of file diff --git a/tests/language-server/completion-sorting-2.slang b/tests/language-server/completion-sorting-2.slang new file mode 100644 index 000000000..7cf62af71 --- /dev/null +++ b/tests/language-server/completion-sorting-2.slang @@ -0,0 +1,19 @@ +//TEST:LANG_SERVER(filecheck=CHECK): + +// Test that completion candidates are sorted according to context. + +enum Fruit { Orange, Apple, Banana } +enum Color { Red, Green, Blue } +void expect(Fruit e) {} +void expect(Color e) {} + + +void test() +{ +//COMPLETE:14,12 + expect(); // should list `Fruit` and `Color` first. + +} + +// CHECK: Fruit:{{.*}}sort(0:Fruit) +// CHECK: Color:{{.*}}sort(0:Color) \ No newline at end of file diff --git a/tests/language-server/completion-sorting-3.slang b/tests/language-server/completion-sorting-3.slang new file mode 100644 index 000000000..da633cf21 --- /dev/null +++ b/tests/language-server/completion-sorting-3.slang @@ -0,0 +1,16 @@ +//TEST:LANG_SERVER(filecheck=CHECK): + +// Test that completion candidates are sorted according to context. + +enum Fruit { Orange, Apple, Banana } +struct MyType {} + + +void test() +{ +//COMPLETE:12,12 + MyType< // should list `Fruit` first. + +} + +// CHECK: Fruit:{{.*}}sort(0:Fruit) \ No newline at end of file diff --git a/tests/language-server/completion-sorting-4.slang b/tests/language-server/completion-sorting-4.slang new file mode 100644 index 000000000..9e9f2b15c --- /dev/null +++ b/tests/language-server/completion-sorting-4.slang @@ -0,0 +1,16 @@ +//TEST:LANG_SERVER(filecheck=CHECK): + +// Test that completion candidates are sorted according to context. + +int myHelper() { return 0; } + + +void test(int p) +{ +//COMPLETE:11,13 + int x = + +} + +// CHECK: p:{{.*}}sort(1:p) +// CHECK: myHelper:{{.*}}sort(1:myHelper) \ No newline at end of file diff --git a/tests/language-server/completion-sorting-5.slang b/tests/language-server/completion-sorting-5.slang new file mode 100644 index 000000000..cdbc40130 --- /dev/null +++ b/tests/language-server/completion-sorting-5.slang @@ -0,0 +1,16 @@ +//TEST:LANG_SERVER(filecheck=CHECK): + +// Test that completion candidates are sorted according to context. + +int myHelper() { return 0; } + + +void test(int p) +{ +//COMPLETE:11,17 + int x = p + + +} + +// CHECK: p:{{.*}}sort(1:p) +// CHECK: myHelper:{{.*}}sort(1:myHelper) \ No newline at end of file -- cgit v1.2.3