mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-08 18:26:01 +02:00
Restrict references, bug 227110.
This commit is contained in:
parent
51f43ad2c5
commit
54eba1ba20
2 changed files with 14 additions and 3 deletions
|
@ -4531,4 +4531,10 @@ public class AST2Tests extends AST2BaseTest {
|
||||||
parseAndCheckBindings(code, ParserLanguage.CPP, true);
|
parseAndCheckBindings(code, ParserLanguage.CPP, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// struct X;
|
||||||
|
// void test(struct X* __restrict result);
|
||||||
|
public void testRestrictReference_Bug227110() throws Exception {
|
||||||
|
final String code = getAboveComment();
|
||||||
|
parseAndCheckBindings(code, ParserLanguage.CPP, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -556,10 +556,15 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
__attribute_decl_seq(supportAttributeSpecifiers, false);
|
__attribute_decl_seq(supportAttributeSpecifiers, false);
|
||||||
|
|
||||||
if (LT(1) == IToken.tAMPER) {
|
if (LT(1) == IToken.tAMPER) {
|
||||||
int length = LA(1).getEndOffset() - LA(1).getOffset();
|
// boolean isRestrict= false;
|
||||||
int o = consume().getOffset();
|
IToken lastToken= consume();
|
||||||
|
final int from= lastToken.getOffset();
|
||||||
|
if (allowCPPRestrict && LT(1) == IToken.t_restrict) {
|
||||||
|
// isRestrict= true;
|
||||||
|
lastToken= consume();
|
||||||
|
}
|
||||||
ICPPASTReferenceOperator refOp = createReferenceOperator();
|
ICPPASTReferenceOperator refOp = createReferenceOperator();
|
||||||
((ASTNode) refOp).setOffsetAndLength(o, length);
|
((ASTNode) refOp).setOffsetAndLength(from, lastToken.getEndOffset());
|
||||||
collection.add(refOp);
|
collection.add(refOp);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue