Bug 574578 - Syntax error when using __declspec as type-id specifier

I initially applied a fix only to alias declarations by parsing it
before the type-id but to my surprise __declspec works more widely as a
type-id specifier.

Change-Id: I50217e2453f888207b73fc3f4c7ff1ea67bf5937
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java
index 381c576..0de1810 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java
@@ -5421,6 +5421,18 @@
 		}
 	}
 
+	//	using MyType = __declspec(dllexport) int;
+	//
+	//	template <typename T>
+	//	class Vector {
+	//	};
+	//	void test() {
+	//		Vector <__declspec(dllexport) int> a;
+	//	}
+	public void testDeclspecTypeId_574578() throws Exception {
+		parseAndCheckBindings(getAboveComment(), CPP, true);
+	}
+
 	// struct Outer {
 	//    struct {int a1;};
 	//    struct {int a2;} a3;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java
index 9698bfa..58e28e2 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java
@@ -2816,6 +2816,9 @@
 		case IGCCToken.t__attribute__:
 		case IGCCToken.tTT_underlying_type:
 
+			// msvc-compatibility
+		case IGCCToken.t__declspec:
+
 			// content assist
 		case IToken.tCOMPLETION:
 			return true;