From c90c6ab750ab05dd6d337e4f857958b8f3d00153 Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 13 Jun 2022 12:20:35 -0700 Subject: Language Server improvements. (#2269) * Language Server improvements. - Improve parser robustness around `attribute_syntax`. - Exclude instance members in a static query. - Coloring accessors - Improved signature help cursor range check. * Add expected test result. * Language server: support configuring predefined macros. * Fix constructor highlighting. * Improving performance by supporting incremental text change notifications. * Fix UTF16 positions and highlighting of constructor calls. * Add completion suggestions for HLSL semantics. * Fix tests. * Fix: don't skip static variables in a static query. * Include literal init expr value in hover text. * Fix scenarios where completion failed to trigger. * Fixing language server protocol field initializations. Co-authored-by: Yong He --- tests/language-server/member-completion-broken-syntax.slang | 13 +++++++++++++ .../member-completion-broken-syntax.slang.expected.txt | 3 +++ tests/language-server/member-completion-if-condition.slang | 12 ++++++++++++ .../member-completion-if-condition.slang.expected.txt | 3 +++ tests/language-server/robustness-5.slang | 13 +++++++++++++ tests/language-server/robustness-5.slang.expected.txt | 3 +++ tests/language-server/smoke.slang.expected.txt | 6 +++--- tests/language-server/vector-member.slang.expected.txt | 8 ++++---- 8 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 tests/language-server/member-completion-broken-syntax.slang create mode 100644 tests/language-server/member-completion-broken-syntax.slang.expected.txt create mode 100644 tests/language-server/member-completion-if-condition.slang create mode 100644 tests/language-server/member-completion-if-condition.slang.expected.txt create mode 100644 tests/language-server/robustness-5.slang create mode 100644 tests/language-server/robustness-5.slang.expected.txt (limited to 'tests/language-server') diff --git a/tests/language-server/member-completion-broken-syntax.slang b/tests/language-server/member-completion-broken-syntax.slang new file mode 100644 index 000000000..948f4b31e --- /dev/null +++ b/tests/language-server/member-completion-broken-syntax.slang @@ -0,0 +1,13 @@ +//TEST:LANG_SERVER: +//COMPLETE:11,26 +struct MyType +{ + int getSum() { return 0; } +} + +void m() +{ + MyType t; + if ((t.getSum() || t.) + for() +} diff --git a/tests/language-server/member-completion-broken-syntax.slang.expected.txt b/tests/language-server/member-completion-broken-syntax.slang.expected.txt new file mode 100644 index 000000000..5faa1d323 --- /dev/null +++ b/tests/language-server/member-completion-broken-syntax.slang.expected.txt @@ -0,0 +1,3 @@ +-------- +getSum: 2 ,.;:()[]<>{}*&^%!-=+|/? + diff --git a/tests/language-server/member-completion-if-condition.slang b/tests/language-server/member-completion-if-condition.slang new file mode 100644 index 000000000..172bd0e8a --- /dev/null +++ b/tests/language-server/member-completion-if-condition.slang @@ -0,0 +1,12 @@ +//TEST:LANG_SERVER: +//COMPLETE:11,11 +struct MyType +{ + int getSum() { return 0; } +} + +void m() +{ + MyType t; + if (t.) +} diff --git a/tests/language-server/member-completion-if-condition.slang.expected.txt b/tests/language-server/member-completion-if-condition.slang.expected.txt new file mode 100644 index 000000000..5faa1d323 --- /dev/null +++ b/tests/language-server/member-completion-if-condition.slang.expected.txt @@ -0,0 +1,3 @@ +-------- +getSum: 2 ,.;:()[]<>{}*&^%!-=+|/? + diff --git a/tests/language-server/robustness-5.slang b/tests/language-server/robustness-5.slang new file mode 100644 index 000000000..a2d54b398 --- /dev/null +++ b/tests/language-server/robustness-5.slang @@ -0,0 +1,13 @@ +//TEST:LANG_SERVER: +// +//Broken syntax +//HOVER:9,11 + +__attributeTarget(StructDecl) +attribute_syntax [MyAttribute(name:String)]; +[MyAttribute] +struct MyStruct +{ + int a = 5; + +} \ No newline at end of file diff --git a/tests/language-server/robustness-5.slang.expected.txt b/tests/language-server/robustness-5.slang.expected.txt new file mode 100644 index 000000000..dd2c29b31 --- /dev/null +++ b/tests/language-server/robustness-5.slang.expected.txt @@ -0,0 +1,3 @@ +-------- +null + diff --git a/tests/language-server/smoke.slang.expected.txt b/tests/language-server/smoke.slang.expected.txt index 5f0bd3915..aa0a2cd56 100644 --- a/tests/language-server/smoke.slang.expected.txt +++ b/tests/language-server/smoke.slang.expected.txt @@ -1,7 +1,7 @@ -------- -first: 6 ().;:,<>[]{}-*/%+=&|! -second: 6 ().;:,<>[]{}-*/%+=&|! -getSum: 2 ([ +first: 6 ,.;:()[]<>{}*&^%!-=+|/? +second: 6 ,.;:()[]<>{}*&^%!-=+|/? +getSum: 2 ,.;:()[]<>{}*&^%!-=+|/? -------- range: 24,26 - 24,31 content: diff --git a/tests/language-server/vector-member.slang.expected.txt b/tests/language-server/vector-member.slang.expected.txt index d93d9183f..4082a026c 100644 --- a/tests/language-server/vector-member.slang.expected.txt +++ b/tests/language-server/vector-member.slang.expected.txt @@ -1,6 +1,6 @@ -------- -x: 6 float ().;:,<>[]{}-*/%+=&|! -y: 6 float ().;:,<>[]{}-*/%+=&|! -z: 6 float ().;:,<>[]{}-*/%+=&|! -w: 6 float ().;:,<>[]{}-*/%+=&|! +x: 6 float ,.;:()[]<>{}*&^%!-=+|/? +y: 6 float ,.;:()[]<>{}*&^%!-=+|/? +z: 6 float ,.;:()[]<>{}*&^%!-=+|/? +w: 6 float ,.;:()[]<>{}*&^%!-=+|/? -- cgit v1.2.3