diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java index 04b94b34269..7765353beb1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java @@ -638,9 +638,13 @@ public class CModelBuilder { type.append(getDeclarationType(declaration)); // add pointerr or reference from declarator if any type.append(getDeclaratorPointerOperation(declarator)); - // pointer to function or array of functions - if(declarator.getDeclarator() != null) - type.append("(*)"); + if(declarator.getDeclarator() != null){ + // pointer to function or array of functions + type.append("("); + // add pointerr or reference from declarator if any + type.append(getDeclaratorPointerOperation(declarator.getDeclarator())); + type.append(")"); + } // arrays type.append(getDeclaratorArrayQualifiers(declarator)); return type.toString(); @@ -729,7 +733,7 @@ public class CModelBuilder { } return pointerString.toString(); } - + private String getDeclaratorArrayQualifiers(Declarator declarator){ StringBuffer arrayString = new StringBuffer(); List arrayQualifiers = declarator.getArrayQualifiers(); diff --git a/core/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/STLFailedTests.java b/core/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/STLFailedTests.java index ffd30977102..e9ac27bc770 100644 --- a/core/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/STLFailedTests.java +++ b/core/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/STLFailedTests.java @@ -49,4 +49,14 @@ public class STLFailedTests extends BaseDOMTest { code.write("{}\n"); failTest(code.toString()); } + + public void testBug36805() throws Exception{ + Writer code = new StringWriter(); + code.write("__STL_BEGIN_NAMESPACE\n"); + code.write("template class char_traits\n"); + code.write(": public __char_traits_base<_CharT, _CharT>\n"); + code.write("{};\n"); + failTest(code.toString()); + } + }