diff --git a/src/server/autocomplete.d b/src/server/autocomplete.d
index 84ece04..822ac90 100644
--- a/src/server/autocomplete.d
+++ b/src/server/autocomplete.d
@@ -175,8 +175,12 @@ public AutocompleteResponse complete(const AutocompleteRequest request,
 		{
 			ImportKind kind = determineImportKind(beforeTokens);
 			if (kind == ImportKind.neither)
+			{
+				if (beforeTokens.isUdaExpression)
+					beforeTokens = beforeTokens[$-1 .. $];
 				return dotCompletion(beforeTokens, tokenArray, request.cursorPosition,
 					moduleCache);
+            }
 			else
 				return importCompletion(beforeTokens, kind, moduleCache);
 		}
@@ -1195,6 +1199,29 @@ private enum TYPE_IDENT_AND_LITERAL_CASES = q{
 	case tok!"dstringLiteral":
 };
 
+bool isUdaExpression(T)(ref T tokens)
+{
+	bool result;
+	ptrdiff_t skip;
+	ptrdiff_t i = tokens.length - 2;
+
+	while (i >= 2)
+	{
+		if (skip == 0 && tokens[i].type == tok!"identifier" && tokens[i-1].type == tok!"@")
+		{
+			result = true;
+			break;
+		}
+		
+		skip += tokens[i].type == tok!")";
+		skip -= tokens[i].type == tok!"(";
+		
+		--i;
+	}
+    
+	return result;
+}
+
 
 /**
  *
@@ -1222,13 +1249,6 @@ T getExpression(T)(T beforeTokens)
 
 	expressionLoop: while (true)
 	{
-
-		if (i > 0 && beforeTokens[i].type == tok!"identifier" &&
-			beforeTokens[i-1].type == tok!"@" )
-		{
-			return beforeTokens[0 .. 0];
-		}
-
 		switch (beforeTokens[i].type)
 		{
 		case tok!"import":
diff --git a/tests/tc051/expected1.txt b/tests/tc051/expected1.txt
new file mode 100644
index 0000000..024c4bb
--- /dev/null
+++ b/tests/tc051/expected1.txt
@@ -0,0 +1,2 @@
+calltips
+this(int a)
diff --git a/tests/tc051/file1.d b/tests/tc051/file1.d
new file mode 100644
index 0000000..baf637f
--- /dev/null
+++ b/tests/tc051/file1.d
@@ -0,0 +1 @@
+struct UDA{int a;} @UDA(
diff --git a/tests/tc051/run.sh b/tests/tc051/run.sh
index 96da67d..be458fd 100755
--- a/tests/tc051/run.sh
+++ b/tests/tc051/run.sh
@@ -3,3 +3,6 @@ set -u
 
 ../../bin/dcd-client $1 file.d -c29 > actual.txt
 diff actual.txt expected.txt
+
+../../bin/dcd-client $1 file1.d -c25 > actual1.txt
+diff actual1.txt expected1.txt