diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
index 881434fc103..d3cb06d21e8 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
@@ -15,6 +15,7 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 import org.eclipse.cdt.core.parser.tests.ParserTestSuite;
+import org.eclipse.cdt.core.parser.tests.prefix.CompletionTestSuite;
 
 /**
  * @author jcamelon
@@ -42,6 +43,7 @@ public class DOMParserTestSuite extends TestCase {
 		suite.addTestSuite( AST2CPPSpecFailingTest.class );
 		suite.addTestSuite( AST2CSpecTest.class );
 		suite.addTestSuite( AST2CSpecFailingTest.class );
+		suite.addTest( CompletionTestSuite.suite() );
 		return suite;
 	}	
 
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/BasicCompletionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/BasicCompletionTest.java
new file mode 100644
index 00000000000..0445c5f1b0e
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/BasicCompletionTest.java
@@ -0,0 +1,49 @@
+/**********************************************************************
+ * Copyright (c) 2004 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ **********************************************************************/
+package org.eclipse.cdt.core.parser.tests.prefix;
+
+import org.eclipse.cdt.core.dom.ast.ASTCompletionNode;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.IFunction;
+import org.eclipse.cdt.core.dom.ast.IVariable;
+
+public class BasicCompletionTest extends CompletionTestBase {
+
+	public void testVar() throws Exception {
+		StringBuffer code = new StringBuffer();
+		code.append("int blah = 4;");
+		code.append("int two = bl");
+		ASTCompletionNode node = getGPPCompletionNode(code.toString());
+		IASTName[] names = node.getNames();
+		assertEquals(1, names.length);
+		IBinding[] bindings = names[0].resolvePrefix();
+		assertEquals(1, bindings.length);
+		IVariable var = (IVariable)bindings[0];
+		assertEquals("blah", var.getName());
+	}
+
+	public void testFunction() throws Exception {
+		StringBuffer code = new StringBuffer();
+		code.append("void func(int x);");
+		code.append("void func2() { fu");
+		ASTCompletionNode node = getGPPCompletionNode(code.toString());
+		IASTName[] names = node.getNames();
+		// There are two names, one as an expression, one as a declaration
+		assertEquals(2, names.length);
+		// The declaration name is not hooked up to the TU due to backtrack
+		assertNull(names[1].getTranslationUnit());
+		// The points to our functions
+		IBinding[] bindings = names[0].resolvePrefix();
+		// There should be two since they both start with fu
+		assertEquals(2, bindings.length);
+		assertEquals("func", ((IFunction)bindings[0]).getName());
+		assertEquals("func2", ((IFunction)bindings[1]).getName());
+	}
+
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestBase.java
new file mode 100644
index 00000000000..a91ba36cdf6
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestBase.java
@@ -0,0 +1,88 @@
+/**********************************************************************
+ * Copyright (c) 2004 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ **********************************************************************/
+package org.eclipse.cdt.core.parser.tests.prefix;
+
+import junit.framework.TestCase;
+
+import org.eclipse.cdt.core.dom.ast.ASTCompletionNode;
+import org.eclipse.cdt.core.parser.CodeReader;
+import org.eclipse.cdt.core.parser.IParserLogService;
+import org.eclipse.cdt.core.parser.IScanner;
+import org.eclipse.cdt.core.parser.NullLogService;
+import org.eclipse.cdt.core.parser.ParserLanguage;
+import org.eclipse.cdt.core.parser.ParserMode;
+import org.eclipse.cdt.core.parser.ScannerInfo;
+import org.eclipse.cdt.internal.core.dom.parser.ISourceCodeParser;
+import org.eclipse.cdt.internal.core.dom.parser.c.ANSICParserExtensionConfiguration;
+import org.eclipse.cdt.internal.core.dom.parser.c.GCCParserExtensionConfiguration;
+import org.eclipse.cdt.internal.core.dom.parser.c.GNUCSourceParser;
+import org.eclipse.cdt.internal.core.dom.parser.c.ICParserExtensionConfiguration;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ANSICPPParserExtensionConfiguration;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.GNUCPPSourceParser;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.GPPParserExtensionConfiguration;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPParserExtensionConfiguration;
+import org.eclipse.cdt.internal.core.parser.ParserException;
+import org.eclipse.cdt.internal.core.parser.scanner2.DOMScanner;
+import org.eclipse.cdt.internal.core.parser.scanner2.FileCodeReaderFactory;
+import org.eclipse.cdt.internal.core.parser.scanner2.GCCScannerExtensionConfiguration;
+import org.eclipse.cdt.internal.core.parser.scanner2.GPPScannerExtensionConfiguration;
+import org.eclipse.cdt.internal.core.parser.scanner2.IScannerExtensionConfiguration;
+
+public class CompletionTestBase extends TestCase {
+
+    private static final IParserLogService NULL_LOG = new NullLogService();
+
+	protected ASTCompletionNode getCompletionNode(String code, ParserLanguage lang, boolean useGNUExtensions) throws ParserException {
+        CodeReader codeReader = new CodeReader(code.toCharArray());
+        ScannerInfo scannerInfo = new ScannerInfo();
+        IScannerExtensionConfiguration configuration = null;
+        if( lang == ParserLanguage.C )
+            configuration = new GCCScannerExtensionConfiguration();
+        else
+            configuration = new GPPScannerExtensionConfiguration();
+        IScanner scanner = new DOMScanner( codeReader, scannerInfo, ParserMode.COMPLETE_PARSE, lang, NULL_LOG, configuration, FileCodeReaderFactory.getInstance() );
+        
+        ISourceCodeParser parser = null;
+        if( lang == ParserLanguage.CPP )
+        {
+            ICPPParserExtensionConfiguration config = null;
+            if (useGNUExtensions)
+            	config = new GPPParserExtensionConfiguration();
+            else
+            	config = new ANSICPPParserExtensionConfiguration();
+            parser = new GNUCPPSourceParser(scanner, ParserMode.COMPLETE_PARSE,
+                NULL_LOG,
+                config );
+        }
+        else
+        {
+            ICParserExtensionConfiguration config = null;
+
+            if (useGNUExtensions)
+            	config = new GCCParserExtensionConfiguration();
+            else
+            	config = new ANSICParserExtensionConfiguration();
+            
+            parser = new GNUCSourceParser( scanner, ParserMode.COMPLETE_PARSE, 
+                NULL_LOG, config );
+        }
+        
+		scanner.setContentAssistMode(code.length());
+        parser.parse();
+		return parser.getCompletionNode();
+    }
+
+	protected ASTCompletionNode getGPPCompletionNode(String code) throws ParserException {
+		return getCompletionNode(code, ParserLanguage.CPP, true);
+	}
+	
+	protected ASTCompletionNode getGCCCompletionNode(String code) throws ParserException {
+		return getCompletionNode(code, ParserLanguage.C, true);
+	}
+	
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestSuite.java
new file mode 100644
index 00000000000..2cd4eafff1f
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestSuite.java
@@ -0,0 +1,21 @@
+/**********************************************************************
+ * Copyright (c) 2004 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ **********************************************************************/
+package org.eclipse.cdt.core.parser.tests.prefix;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class CompletionTestSuite extends TestCase {
+
+	public static Test suite() { 
+		TestSuite suite= new TestSuite(CompletionTestSuite.class.getName());
+		suite.addTestSuite(BasicCompletionTest.class);
+		return suite;
+	}
+}