diff --git a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/javascript/internal/core/codeassist/JavaScriptCompletionEngine2.java b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/javascript/internal/core/codeassist/JavaScriptCompletionEngine2.java
index 4db9b29..ccbe5d8 100644
--- a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/javascript/internal/core/codeassist/JavaScriptCompletionEngine2.java
+++ b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/javascript/internal/core/codeassist/JavaScriptCompletionEngine2.java
@@ -556,6 +556,11 @@
 					final String[] params = new String[paramCount];
 					for (int i = 0; i < paramCount; ++i) {
 						params[i] = parameters.get(i).getName();
+						if (params[i] == null
+								&& parameters.get(i).getType() != null)
+							params[i] = parameters.get(i).getType().getName();
+						if (params[i] == null)
+							params[i] = "anon_" + i;
 					}
 					proposal.setParameterNames(params);
 					if (parameters.get(paramCount - 1).getKind() != ParameterKind.NORMAL) {
diff --git a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/contentassist/CodeCompletion.java b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/contentassist/CodeCompletion.java
index 296d5ff..620f1b4 100644
--- a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/contentassist/CodeCompletion.java
+++ b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/contentassist/CodeCompletion.java
@@ -1013,4 +1013,32 @@
 	}
 	
 
+	public void testTypeDefParameterNamesTest() {
+		final StringList code = new StringList();
+		code.add("/**");
+		code.add(" * @typedef {{ log: function(String, Number, *) }}");
+		code.add(" */");
+		code.add("var myType");
+		code.add("function tst(){");
+		code.add("	/**");
+		code.add("	 * @type {myType}");
+		code.add("	 */");
+		code.add("	var x = null;");
+		code.add("	x.log");
+		code.add("}");
+		final IModuleSource module = new TestModule(code.toString());
+		final List<CompletionProposal> results = new ArrayList<CompletionProposal>();
+		final ICompletionEngine completionEngine = createEngine(results,
+				JSCompletionEngine.OPTION_KEYWORDS);
+		completionEngine.complete(module, lastPositionInFile(".log", module), 0);
+		assertEquals(1, results.size());
+		CompletionProposal completionProposal = results.get(0);
+		assertEquals("log", completionProposal.getName());
+		String[] parameterNames = completionProposal.getParameterNames();
+		assertEquals(3, parameterNames.length);
+		assertEquals("String", parameterNames[0]);
+		assertEquals("Number", parameterNames[1]);
+		assertEquals("Any", parameterNames[2]);
+		
+	}
 }
