mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 17:05:26 +02:00
Placement new in conditional expressions, bug 227104.
This commit is contained in:
parent
a7cc2f119c
commit
f040526748
2 changed files with 25 additions and 8 deletions
|
@ -4332,11 +4332,11 @@ public class AST2Tests extends AST2BaseTest {
|
|||
ICPPFunction fn= ba.assertNonProblem("five() {", 4, ICPPFunction.class);
|
||||
assertFalse(fn.getType().getReturnType() instanceof IProblemBinding);
|
||||
|
||||
ba.assertProblem("fa(5",2);
|
||||
ba.assertProblem("fa(5", 2);
|
||||
ICPPFunction fb= ba.assertNonProblem("fb(5", 2, ICPPFunction.class);
|
||||
ba.assertProblem("fc(5",2);
|
||||
ba.assertProblem("fc(5", 2);
|
||||
ba.assertProblem("fd(5",2);
|
||||
|
||||
|
||||
ICPPFunction fb2= ba.assertNonProblem("fb(f", 2, ICPPFunction.class);
|
||||
ba.assertProblem("fa(f",2);
|
||||
ba.assertProblem("fc(f",2);
|
||||
|
@ -4350,9 +4350,9 @@ public class AST2Tests extends AST2BaseTest {
|
|||
// public:
|
||||
// X(int x) {}
|
||||
// };
|
||||
//
|
||||
//
|
||||
// void f_const(const X& x) {}
|
||||
// void f_nonconst(X& x) {}
|
||||
// void f_nonconst(X& x) {}
|
||||
//
|
||||
// void ref() {
|
||||
// f_const(2); // ok
|
||||
|
@ -4398,7 +4398,7 @@ public class AST2Tests extends AST2BaseTest {
|
|||
// f4(cvi);
|
||||
// }
|
||||
public void _testBug222418_e() throws Exception {
|
||||
BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true);
|
||||
BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true);
|
||||
ba.assertNonProblem("f1(i)",2);
|
||||
ba.assertProblem("f1(ci)", 2);
|
||||
ba.assertProblem("f1(vi)", 2);
|
||||
|
@ -4418,8 +4418,8 @@ public class AST2Tests extends AST2BaseTest {
|
|||
ba.assertNonProblem("f4(ci)", 2);
|
||||
ba.assertNonProblem("f4(vi)", 2);
|
||||
ba.assertNonProblem("f4(cvi)",2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// class B {};
|
||||
//
|
||||
// class A {
|
||||
|
@ -4741,4 +4741,19 @@ public class AST2Tests extends AST2BaseTest {
|
|||
parseAndCheckBindings(code, ParserLanguage.C);
|
||||
parseAndCheckBindings(code, ParserLanguage.CPP);
|
||||
}
|
||||
|
||||
// class X {
|
||||
// public:
|
||||
// void* operator new(unsigned int sz, char* buf) {return buf;}
|
||||
// };
|
||||
//
|
||||
// char* buffer;
|
||||
// void test1() {
|
||||
// X* it = buffer == 0 ? new (buffer) X : 0;
|
||||
// }
|
||||
public void testPlacementNewInConditionalExpression_Bug227104() throws Exception {
|
||||
final String code = getAboveComment();
|
||||
parseAndCheckBindings(code, ParserLanguage.CPP);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3667,6 +3667,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
|||
finalOffset = calculateEndOffset(arrayMods.get(arrayMods.size() - 1));
|
||||
continue;
|
||||
case IToken.tCOLON:
|
||||
if (forNewTypeId)
|
||||
break;
|
||||
consume();
|
||||
bitField = constantExpression();
|
||||
finalOffset = calculateEndOffset(bitField);
|
||||
|
|
Loading…
Add table
Reference in a new issue