diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index 0744bcfacff..9a42b7ba135 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,6 @@ +2004-04-14 John Camelon + Added CompletionTest::testBug58178(). + 2004-04-14 Andrew Niefer updated FullParseCallback with acceptFriendDeclaration added parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.testBug45235() diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java index b8cb780e275..15d117900a6 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java @@ -69,7 +69,7 @@ public class CompletionParseTest extends CompleteParseBaseTest { callback, ParserMode.COMPLETION_PARSE, ParserLanguage.CPP, - ParserUtil.getParserLogService()); + null); return parser.parse( offset ); @@ -829,4 +829,17 @@ public class CompletionParseTest extends CompleteParseBaseTest { assertFalse( i.hasNext() ); } + public void testBug58178() throws Exception + { + Writer writer = new StringWriter(); + writer.write( "#define GL_T 0x2001\n"); + writer.write( "#define GL_TRUE 0x1\n"); + writer.write( "typedef unsigned char GLboolean;\n"); + writer.write( "static GLboolean should_rotate = GL_T"); + String code = writer.toString(); + final String where = "= GL_T"; + IASTCompletionNode node = parse( code, code.indexOf( where ) + where.length() ); + assertEquals( node.getCompletionPrefix(), "GL_T"); + } + } diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog-parser b/core/org.eclipse.cdt.core/parser/ChangeLog-parser index 07f76e1aeea..e4ca58a5472 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog-parser +++ b/core/org.eclipse.cdt.core/parser/ChangeLog-parser @@ -1,3 +1,7 @@ +2004-04-14 John Camelon + Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=58500 + Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=58178 + 2004-04-14 Andrew Niefer friends in the AST (bugs 45235 & 53759 ) - added acceptFriendDeclaration to ISourceElementRequestor diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java index da8c85b9259..20a53fba227 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java @@ -961,6 +961,8 @@ public class ExpressionParser implements IExpressionParser { buffer.append( "Parser: Unexpected exception in "); //$NON-NLS-1$ buffer.append( methodName ); buffer.append( ":"); //$NON-NLS-1$ + buffer.append( e.getClass().getName() ); + buffer.append( "::"); //$NON-NLS-1$ buffer.append( e.getMessage() ); buffer.append( ". w/"); //$NON-NLS-1$ buffer.append( scanner.toString() ); @@ -1300,7 +1302,7 @@ public class ExpressionParser implements IExpressionParser { // If this isn't a type name, then we shouldn't be here try { - typeId = typeId(scope, false, CompletionKind.TYPE_REFERENCE); + typeId = typeId(scope, false, ((kind == CompletionKind.SINGLE_NAME_REFERENCE )? kind : CompletionKind.TYPE_REFERENCE)); consume(IToken.tRPAREN); if( templateIdScopes != null ){ templateIdScopes.pop(); popped = true;} IASTExpression castExpression = castExpression(scope,kind); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java index 6afeb457191..0bb0674a7ec 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java @@ -1544,7 +1544,7 @@ public class Scanner implements IScanner { IMacroDescriptor mapping = getDefinition(ident); - if (mapping != null) + if (mapping != null && !isLimitReached()) if( scannerData.getContextStack().shouldExpandDefinition( ident ) ) { expandDefinition(ident, mapping, baseOffset); return null;