diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java index 1e2146b6ee1..01160620e8b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java @@ -293,4 +293,15 @@ public class SelectionParseTest extends SelectionParseBaseTest { int startIndex = code.indexOf( "EColours color"); //$NON-NLS-1$ parse( code, startIndex, startIndex + 8 ); } + + public void testBug43021() throws Exception + { + Writer writer = new StringWriter(); + writer.write( "extern int johnc(__const char *__restrict __format, ...);\n" ); //$NON-NLS-1$ + writer.write( "void m() {johnc(\"HI\");}" ); //$NON-NLS-1$ + String code = writer.toString(); + int startIndex = code.indexOf( "{johnc") + 1; //$NON-NLS-1$ + IASTNode node = parse( code, startIndex, startIndex + 5 ); + assertNotNull( node ); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java index b4eab4c49e2..b432b898b7f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java @@ -2376,6 +2376,8 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto symbol.addPtrOperator( new TypeInfo.PtrOp( TypeInfo.PtrOp.t_pointer, true, false )); else if( pointerOperator == ASTPointerOperator.VOLATILE_POINTER ) symbol.addPtrOperator( new TypeInfo.PtrOp( TypeInfo.PtrOp.t_pointer, false, true)); + else if( pointerOperator == ASTPointerOperator.RESTRICT_POINTER ) + symbol.addPtrOperator( new TypeInfo.PtrOp( TypeInfo.PtrOp.t_pointer )); // else // assert false : pointerOperator; }