diff --git a/src/server/autocomplete.d b/src/server/autocomplete.d index 09ff5d9..6b47f4a 100644 --- a/src/server/autocomplete.d +++ b/src/server/autocomplete.d @@ -599,7 +599,8 @@ body { auto a = DSymbol(sy.name); if (!builtinSymbols.contains(&a) && sy.name !is null && !h.contains(sy.name) - && sy.name != CONSTRUCTOR_SYMBOL_NAME) + && !sy.skipOver && sy.name != CONSTRUCTOR_SYMBOL_NAME + && isPublicCompletionKind(sy.kind)) { response.completionKinds ~= sy.kind; response.completions ~= sy.name; @@ -607,10 +608,10 @@ body } } - foreach (s; symbols.opSlice()) + foreach (s; symbols.opSlice().filter!(a => !a.skipOver)) { if (s.kind == CompletionKind.importSymbol && s.type !is null) - foreach (sy; s.type.opSlice()) + foreach (sy; s.type.opSlice().filter!(a => !a.skipOver)) addSymbolToResponses(sy); else addSymbolToResponses(s); @@ -938,7 +939,7 @@ void setCompletions(T)(ref AutocompleteResponse response, return; foreach (sym; s.opSlice()) { - if (sym.name !is null && sym.name.length > 0 && sym.kind != CompletionKind.importSymbol + if (sym.name !is null && sym.name.length > 0 && isPublicCompletionKind(sym.kind) && (p is null ? true : sym.name.toUpper().startsWith(p.toUpper())) && !r.completions.canFind(sym.name) && sym.name[0] != '*') diff --git a/tests/tc030/expected1.txt b/tests/tc030/expected1.txt new file mode 100644 index 0000000..585cd53 --- /dev/null +++ b/tests/tc030/expected1.txt @@ -0,0 +1,4 @@ +identifiers +BAR v +FOO v +S s diff --git a/tests/tc030/file.d b/tests/tc030/file.d new file mode 100644 index 0000000..8068a67 --- /dev/null +++ b/tests/tc030/file.d @@ -0,0 +1 @@ +import a : diff --git a/tests/tc030/run.sh b/tests/tc030/run.sh new file mode 100755 index 0000000..13874bb --- /dev/null +++ b/tests/tc030/run.sh @@ -0,0 +1,5 @@ +set -e +set -u + +../../bin/dcd-client $1 file.d -c11 > actual1.txt +diff actual1.txt expected1.txt