diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index a4256dd60de..d3af205f92f 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -4756,4 +4756,11 @@ public class AST2CPPTests extends AST2BaseTest { assertTrue(((IASTIdExpression)((IASTFunctionCallExpression)((IASTReturnStatement)((IASTCompoundStatement)((IASTFunctionDefinition)tu.getDeclarations()[1]).getBody()).getStatements()[0]).getReturnValue()).getFunctionNameExpression()).getName().resolveBinding() instanceof IFunction); } + public void testBug100408() throws Exception { + IASTTranslationUnit tu = parse( "int foo() { int x=1; (x)*3; }", ParserLanguage.CPP ); + CPPNameCollector col = new CPPNameCollector(); + tu.accept( col ); + assertNoProblemBindings( col ); + } + } 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 af5918b47f7..a427f5e55b8 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 @@ -3195,4 +3195,12 @@ public class AST2Tests extends AST2BaseTest { assertSame( a1, a2 ); assertNotSame( a2, a3 ); } + + public void testBug100408() throws Exception { + IASTTranslationUnit tu = parse( "int foo() { int x=1; (x)*3; }", ParserLanguage.C ); + CNameCollector col = new CNameCollector(); + tu.accept( col ); + assertNoProblemBindings( col ); + } + } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..c29cfe03a58 --- /dev/null +++ b/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,10 @@ +#Thu Jun 16 13:15:47 EDT 2005 +eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= diff --git a/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000000..2a78c1ae30a --- /dev/null +++ b/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,6 @@ +#Thu Jun 16 13:15:47 EDT 2005 +eclipse.preferences.version=1 +internal.default.compliance=default +org.eclipse.jdt.ui.exception.name=e +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.overrideannotation=true 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 a42a4e2c4a3..68a41c143a1 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 @@ -37,7 +37,6 @@ import org.eclipse.cdt.core.dom.ast.IASTGotoStatement; import org.eclipse.cdt.core.dom.ast.IASTIdExpression; import org.eclipse.cdt.core.dom.ast.IASTIfStatement; import org.eclipse.cdt.core.dom.ast.IASTLabelStatement; -import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNamedTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTNode; @@ -893,20 +892,6 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { */ protected abstract IASTConditionalExpression createConditionalExpression(); - protected IASTExpression unaryOperatorCastExpression(int operator) - throws EndOfFileException, BacktrackException { - IToken mark = mark(); - int offset = consume().getOffset(); - IASTExpression castExpression = castExpression(); - if( castExpression instanceof IASTLiteralExpression && operator == IASTUnaryExpression.op_amper ) - { - backup( mark ); - throwBacktrack( mark ); - } - return buildUnaryExpression(operator, castExpression, offset, - calculateEndOffset(castExpression)); - } - /** * @param operator * @param operand diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java index 2bd0e64c767..ca4ac17afda 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java @@ -2778,5 +2778,18 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser { return result; } + protected IASTExpression unaryOperatorCastExpression(int operator) throws EndOfFileException, BacktrackException { + IToken mark = mark(); + int offset = consume().getOffset(); + IASTExpression castExpression = castExpression(); + if( castExpression instanceof IASTLiteralExpression && ( operator == IASTUnaryExpression.op_amper || operator == IASTUnaryExpression.op_star ) ) + { + backup( mark ); + throwBacktrack( mark ); + } + return buildUnaryExpression(operator, castExpression, offset, + calculateEndOffset(castExpression)); + } + } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index 54b9de2ed02..08c57de0cfb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -5311,4 +5311,21 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { protected IASTDeclaration simpleDeclaration() throws BacktrackException, EndOfFileException { return simpleDeclarationStrategyUnion(); } + + protected IASTExpression unaryOperatorCastExpression(int operator) throws EndOfFileException, BacktrackException { + IToken mark = mark(); + int offset = consume().getOffset(); + IASTExpression castExpression = castExpression(); + if( castExpression instanceof IASTLiteralExpression && ( operator == IASTUnaryExpression.op_amper || operator == IASTUnaryExpression.op_star ) ) + { + IASTLiteralExpression literal = (IASTLiteralExpression) castExpression; + if( literal.getKind() != ICPPASTLiteralExpression.lk_this ) + { + backup( mark ); + throwBacktrack( mark ); + } + } + return buildUnaryExpression(operator, castExpression, offset, + calculateEndOffset(castExpression)); + } }