From 989501bec5475eaf1e914c54b5075ce21630da97 Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Thu, 20 Aug 2015 03:50:45 -0700 Subject: [PATCH 1/3] Test cases for #244 --- tests/imports/a.d | 3 +++ tests/imports/b.d | 6 ++++++ tests/tc017/expected.txt | 4 ++++ tests/tc017/file.d | 3 +++ tests/tc017/run.sh | 5 +++++ 5 files changed, 21 insertions(+) create mode 100644 tests/imports/a.d create mode 100644 tests/imports/b.d create mode 100644 tests/tc017/expected.txt create mode 100644 tests/tc017/file.d create mode 100755 tests/tc017/run.sh diff --git a/tests/imports/a.d b/tests/imports/a.d new file mode 100644 index 0000000..0264baa --- /dev/null +++ b/tests/imports/a.d @@ -0,0 +1,3 @@ +module a; +public import b; +string FOO; diff --git a/tests/imports/b.d b/tests/imports/b.d new file mode 100644 index 0000000..31f1335 --- /dev/null +++ b/tests/imports/b.d @@ -0,0 +1,6 @@ +module b; +string BAR; + +struct S { + int x; +} diff --git a/tests/tc017/expected.txt b/tests/tc017/expected.txt new file mode 100644 index 0000000..585cd53 --- /dev/null +++ b/tests/tc017/expected.txt @@ -0,0 +1,4 @@ +identifiers +BAR v +FOO v +S s diff --git a/tests/tc017/file.d b/tests/tc017/file.d new file mode 100644 index 0000000..4bbe1e3 --- /dev/null +++ b/tests/tc017/file.d @@ -0,0 +1,3 @@ +module main; +import mod = a; +mod. diff --git a/tests/tc017/run.sh b/tests/tc017/run.sh new file mode 100755 index 0000000..5ffe242 --- /dev/null +++ b/tests/tc017/run.sh @@ -0,0 +1,5 @@ +set -e +set -u + +../../bin/dcd-client file.d -c33 > actual.txt +diff actual.txt expected.txt From c0584b065983b744701da58a52414ed3f7b15181 Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Fri, 21 Aug 2015 02:58:49 -0700 Subject: [PATCH 2/3] Dependency update --- dsymbol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dsymbol b/dsymbol index 6aca66e..4ac6565 160000 --- a/dsymbol +++ b/dsymbol @@ -1 +1 @@ -Subproject commit 6aca66ef031cca3687df8f022e8c04a33fa7c263 +Subproject commit 4ac656541a719c27cf549fddcb1e85cf702ce804 From 5795271b6c1be1d5f7da270769e6992e5afb7ff9 Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Fri, 21 Aug 2015 02:59:04 -0700 Subject: [PATCH 3/3] Fix #244 --- src/server/autocomplete.d | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/server/autocomplete.d b/src/server/autocomplete.d index bf011b3..ea9e4ac 100644 --- a/src/server/autocomplete.d +++ b/src/server/autocomplete.d @@ -819,6 +819,22 @@ void setCompletions(T)(ref AutocompleteResponse response, Scope* completionScope, T tokens, size_t cursorPosition, CompletionType completionType, bool isBracket = false, string partial = null) { + static void addSymToResponse(DSymbol* s, ref AutocompleteResponse r, string p) + { + foreach (sym; s.opSlice()) + { + if (sym.name !is null && sym.name.length > 0 && sym.kind != CompletionKind.importSymbol + && (p is null ? true : sym.name.toUpper().startsWith(p.toUpper())) + && !r.completions.canFind(sym.name)) + { + r.completionKinds ~= sym.kind; + r.completions ~= sym.name.dup; + } + if (sym.kind == CompletionKind.importSymbol && !sym.skipOver && sym.type !is null) + addSymToResponse(sym.type, r, p); + } + } + // Handle the simple case where we get all symbols in scope and filter it // based on the currently entered text. if (partial !is null && tokens.length == 0) @@ -854,16 +870,7 @@ void setCompletions(T)(ref AutocompleteResponse response, if (symbols.length == 0) return; } - foreach (sym; symbols[0].opSlice()) - { - if (sym.name !is null && sym.name.length > 0 && sym.kind != CompletionKind.importSymbol - && (partial is null ? true : sym.name.toUpper().startsWith(partial.toUpper())) - && !response.completions.canFind(sym.name)) - { - response.completionKinds ~= sym.kind; - response.completions ~= sym.name.dup; - } - } + addSymToResponse(symbols[0], response, partial); response.completionType = CompletionType.identifiers; } else if (completionType == CompletionType.calltips)