diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog-parser b/core/org.eclipse.cdt.core/parser/ChangeLog-parser index 326af760b7e..2f771f2fe11 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog-parser +++ b/core/org.eclipse.cdt.core/parser/ChangeLog-parser @@ -1,3 +1,6 @@ +2004-01-30 John Camelon + Fixed Bug 50487 - Wrong completion kind and prefix after "#ifdef" + 2004-01-29 Hoda Amer Removed CompletionKind.KEYWORD. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ContextualParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ContextualParser.java index 924eea69f28..46903d68bc6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ContextualParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ContextualParser.java @@ -169,13 +169,36 @@ public class ContextualParser extends Parser implements IParser { * @see org.eclipse.cdt.internal.core.parser.Parser#handleOffsetLimitException() */ protected void handleOffsetLimitException(OffsetLimitReachedException exception) throws OffsetLimitReachedException { - setCompletionToken( exception.getFinalToken() ); - if( (finalToken!= null )&& (finalToken.isKeywordOrOperator() )) - setCompletionToken(null); + if( exception.getCompletionNode() == null ) + { + setCompletionToken( exception.getFinalToken() ); + if( (finalToken!= null )&& (finalToken.isKeywordOrOperator() )) + setCompletionToken(null); + } + else + { + ASTCompletionNode node = (ASTCompletionNode) exception.getCompletionNode(); + setCompletionValues( node.getCompletionKind(), node.getKeywordSet(), node.getCompletionPrefix() ); + } throw exception; } + /** + * @param compilationUnit + * @param kind2 + * @param set + * @param object + * @param string + */ + private void setCompletionValues(CompletionKind kind, Set keywordSet, String prefix ) { + setCompletionScope(compilationUnit); + this.keywordSet = keywordSet; + setCompletionKind(kind); + setCompletionContext(null); + setCompletionToken( new Token( IToken.tIDENTIFIER, prefix ) ); + } + /* (non-Javadoc) * @see org.eclipse.cdt.internal.core.parser.Parser#setCompletionKeywords(java.lang.String[]) */ @@ -217,8 +240,8 @@ public class ContextualParser extends Parser implements IParser { CompletionKind kind, Key key, IASTNode node, String prefix) throws EndOfFileException { - setCompletionValues(scope, kind, key, node ); setCompletionToken( new Token( IToken.tIDENTIFIER, prefix ) ); + setCompletionValues(scope, kind, key, node ); } /* (non-Javadoc) @@ -256,7 +279,6 @@ public class ContextualParser extends Parser implements IParser { else if( scope instanceof IASTClassSpecifier ) kind = CompletionKind.FIELD_TYPE; else if (scope instanceof IASTCodeScope) -// kind = CompletionKind.STATEMENT_START; kind = CompletionKind.SINGLE_NAME_REFERENCE; else kind = CompletionKind.VARIABLE_TYPE; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index 10bf209fd55..f66226e35a2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -161,7 +161,6 @@ public abstract class Parser implements IParser */ protected void translationUnit() { - IASTCompilationUnit compilationUnit; try { compilationUnit = astFactory.createCompilationUnit(); @@ -5275,6 +5274,7 @@ public abstract class Parser implements IParser protected IToken currToken, // current token we plan to consume next lastToken; // last token we consumed private boolean limitReached = false; + protected IASTCompilationUnit compilationUnit; /** * Fetches a token from the scanner. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTCompletionNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTCompletionNode.java index 6dfa5dac3dd..d525e0a7a51 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTCompletionNode.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTCompletionNode.java @@ -73,5 +73,11 @@ public class ASTCompletionNode implements IASTCompletionNode { return new EmptyIterator(); return keywordSet.iterator(); } + + public Set getKeywordSet() + { + return keywordSet; + + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ContextStack.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ContextStack.java index 50d33ce3261..262c6e3c21e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ContextStack.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ContextStack.java @@ -33,8 +33,10 @@ import org.eclipse.cdt.internal.core.parser.scanner.IScannerContext.ContextKind; public class ContextStack { private final IParserLogService log; + private Scanner scanner; - public ContextStack( IParserLogService l ) { + public ContextStack( Scanner s, IParserLogService l ) { + scanner = s; log = l; } @@ -193,4 +195,9 @@ public class ContextStack { { return topContext.getLine(); } + + public Scanner getScanner() + { + return scanner; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LimitedScannerContext.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LimitedScannerContext.java index 54e9c11bf7e..e727f6780f4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LimitedScannerContext.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LimitedScannerContext.java @@ -21,6 +21,7 @@ public class LimitedScannerContext implements IScannerContext { private final int limit; + private final Scanner scanner; /** * @param reader @@ -29,8 +30,9 @@ public class LimitedScannerContext * @param object * @param offsetLimit */ - public LimitedScannerContext(Reader reader, String string, ContextKind kind, int offsetLimit) { + public LimitedScannerContext(Scanner scanner, Reader reader, String string, ContextKind kind, int offsetLimit) { super( reader, string, kind, null ); + this.scanner = scanner; limit = offsetLimit; } @@ -40,7 +42,11 @@ public class LimitedScannerContext * @see org.eclipse.cdt.internal.core.parser.IScannerContext#read() */ public int read() throws IOException { - if( getOffset() == limit ) throw new IOException(); + if( getOffset() == limit ) + { + scanner.setOffsetLimitReached(true); + throw new IOException(); + } return super.read(); } 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 baa58617e50..5cd6e4256c6 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 @@ -49,11 +49,14 @@ import org.eclipse.cdt.core.parser.ScannerException; import org.eclipse.cdt.core.parser.ScannerInfo; import org.eclipse.cdt.core.parser.IMacroDescriptor.MacroType; import org.eclipse.cdt.core.parser.ast.ASTExpressionEvaluationException; +import org.eclipse.cdt.core.parser.ast.IASTCompletionNode; import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTFactory; import org.eclipse.cdt.core.parser.ast.IASTInclusion; import org.eclipse.cdt.core.parser.extension.IScannerExtension; +import org.eclipse.cdt.internal.core.parser.ast.ASTCompletionNode; import org.eclipse.cdt.internal.core.parser.problem.IProblemFactory; +import org.eclipse.cdt.internal.core.parser.token.KeywordSets; import org.eclipse.cdt.internal.core.parser.token.Token; /** @@ -109,7 +112,7 @@ public class Scanner implements IScanner { scannerExtension = extension; scannerExtension.setScanner( this ); astFactory = ParserFactory.createASTFactory( mode, language ); - contextStack = new ContextStack( log ); + contextStack = new ContextStack( this, log ); try { //this is a hack to get around a sudden EOF experience contextStack.push( @@ -277,7 +280,7 @@ public class Scanner implements IScanner { if( offsetLimit == NO_OFFSET_LIMIT ) context = new ScannerContext(reader, resolvedFilename, ScannerContext.ContextKind.TOP, null ); else - context = new LimitedScannerContext( reader, resolvedFilename, ScannerContext.ContextKind.TOP, offsetLimit ); + context = new LimitedScannerContext( this, reader, resolvedFilename, ScannerContext.ContextKind.TOP, offsetLimit ); contextStack.push( context, requestor ); } catch( ContextException ce ) { @@ -633,6 +636,7 @@ public class Scanner implements IScanner { } private final ParserMode mode; + private static final IScannerInfo EMPTY_INFO = new ScannerInfo(); public int getCharacter() throws ScannerException { @@ -1328,6 +1332,10 @@ public class Scanner implements IScanner { // get the rest of the line int currentOffset = getCurrentOffset(); String expression = getRestOfPreprocessorLine(); + + + if( isLimitReached() ) + handleCompletionOnExpression( expression ); if (expression.trim().equals("")) handleProblem( IProblem.PREPROCESSOR_INVALID_DIRECTIVE, "#if", beginningOffset, false, true ); @@ -1344,7 +1352,12 @@ public class Scanner implements IScanner { case PreprocessorDirectives.IFDEF : //TODO add in content assist stuff here skipOverWhitespace(); - if (getDefinition(getNextIdentifier()) == null) { + + String definition = getNextIdentifier(); + if( isLimitReached() ) + handleCompletionOnDefinition( definition ); + + if (getDefinition(definition) == null) { // not defined passOnToClient = branches.poundIf( false ); skipOverTextUntilNewline(); @@ -1369,7 +1382,12 @@ public class Scanner implements IScanner { case PreprocessorDirectives.IFNDEF : //TODO add in content assist stuff here skipOverWhitespace(); - if (getDefinition(getNextIdentifier()) != null) { + + String definition2 = getNextIdentifier(); + if( isLimitReached() ) + handleCompletionOnDefinition( definition2 ); + + if (getDefinition(definition2) != null) { // not defined skipOverTextUntilNewline(); passOnToClient = branches.poundIf( false ); @@ -1401,14 +1419,17 @@ public class Scanner implements IScanner { case PreprocessorDirectives.ELIF : //TODO add in content assist stuff here int co = getCurrentOffset(); - String elsifExpression = getRestOfPreprocessorLine().trim(); - - if (elsifExpression.equals("")) + String elifExpression = getRestOfPreprocessorLine(); + if( isLimitReached() ) + handleCompletionOnExpression( elifExpression ); + + + if (elifExpression.equals("")) handleProblem( IProblem.PREPROCESSOR_INVALID_DIRECTIVE, "#elif", beginningOffset, false, true ); boolean elsifResult = false; if( branches.queryCurrentBranchForElif() ) - elsifResult = evaluateExpression(elsifExpression, co ); + elsifResult = evaluateExpression(elifExpression, co ); try { @@ -1418,7 +1439,7 @@ public class Scanner implements IScanner { { StringBuffer buffer = new StringBuffer( token ); buffer.append( ' ' ); - buffer.append( elsifExpression ); + buffer.append( elifExpression ); handleProblem( IProblem.PREPROCESSOR_UNBALANCE_CONDITION, buffer.toString(), beginningOffset, @@ -1784,7 +1805,7 @@ public class Scanner implements IScanner { continue; } - throwEOF(); + throwEOF(null); } } @@ -1795,13 +1816,57 @@ public class Scanner implements IScanner { } // we're done - throwEOF(); + throwEOF(null); return null; } /** + * @param definition + */ + private void handleCompletionOnDefinition(String definition) throws EndOfFileException { + IASTCompletionNode node = new ASTCompletionNode( IASTCompletionNode.CompletionKind.MACRO_REFERENCE, + null, null, definition, KeywordSets.getKeywords(KeywordSets.Key.MACRO, language) ); + + throwEOF( node ); + } + + /** + * @param expression2 + */ + private void handleCompletionOnExpression(String expression) throws EndOfFileException { + int completionPoint = expression.length(); + IScanner subScanner = ParserFactory.createScanner( new StringReader(expression), SCRATCH, EMPTY_INFO, ParserMode.QUICK_PARSE, language, new NullSourceElementRequestor(), new NullLogService()); + IToken lastToken = null; + try + { + lastToken = subScanner.nextToken(); + } + catch( EndOfFileException eof ) + { + // ok + } catch (ScannerException e) { + handleInternalError(); + } + + String prefix = ""; + if( ( lastToken != null )) + { + if( ( lastToken.getType() == IToken.tIDENTIFIER ) + && ( lastToken.getEndOffset() == completionPoint ) ) + { + prefix = lastToken.getImage(); + } + } + + IASTCompletionNode node = new ASTCompletionNode( IASTCompletionNode.CompletionKind.MACRO_REFERENCE, + null, null, prefix, KeywordSets.getKeywords(KeywordSets.Key.MACRO, language) ); + + throwEOF( node ); + } + + /** * @param key */ protected void removeSymbol(String key) { @@ -1961,7 +2026,7 @@ public class Scanner implements IScanner { } // we're done - throwEOF(); + throwEOF(null); return null; } @@ -1969,13 +2034,17 @@ public class Scanner implements IScanner { /** * */ - protected void throwEOF() throws EndOfFileException, OffsetLimitReachedException { - if( offsetLimit == NO_OFFSET_LIMIT ) - throw new EndOfFileException(); - - if( finalToken.getEndOffset() == offsetLimit ) - throw new OffsetLimitReachedException(finalToken); - throw new OffsetLimitReachedException( (IToken)null ); + protected void throwEOF(IASTCompletionNode node) throws EndOfFileException, OffsetLimitReachedException { + if( node == null ) + { + if( offsetLimit == NO_OFFSET_LIMIT ) + throw new EndOfFileException(); + + if( finalToken.getEndOffset() == offsetLimit ) + throw new OffsetLimitReachedException(finalToken); + throw new OffsetLimitReachedException( (IToken)null ); + } + throw new OffsetLimitReachedException( node ); } @@ -2973,7 +3042,8 @@ public class Scanner implements IScanner { private final ISourceElementRequestor requestor; private IASTFactory astFactory = null; private static final int NO_OFFSET_LIMIT = -1; - private int offsetLimit = NO_OFFSET_LIMIT; + private int offsetLimit = NO_OFFSET_LIMIT; + private boolean limitReached = false; /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.IScanner#setASTFactory(org.eclipse.cdt.internal.core.parser.ast.IASTFactory) @@ -2996,4 +3066,17 @@ public class Scanner implements IScanner { return definitions; } + /** + * @param b + */ + public void setOffsetLimitReached(boolean b) { + limitReached = b; + } + + protected boolean isLimitReached() + { + if( offsetLimit == NO_OFFSET_LIMIT ) return false; + return limitReached; + } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java index a6ad4759532..fc32cb1e67e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java @@ -35,6 +35,7 @@ public class KeywordSets { public static final Key POST_USING = new Key( 5 ); public static final Key FUNCTION_MODIFIER = new Key( 6 ); public static final Key NAMESPACE_ONLY = new Key(6); + public static final Key MACRO = new Key( 7 ); /** * @param enumValue */ @@ -62,6 +63,8 @@ public class KeywordSets { return (Set) FUNCTION_MODIFIER.get( language ); if( kind == Key.NAMESPACE_ONLY ) return NAMESPACE_ONLY; + if( kind == Key.MACRO ) + return MACRO_ONLY; //TODO finish this return null; @@ -76,6 +79,14 @@ public class KeywordSets { NAMESPACE_ONLY.add(Keywords.NAMESPACE ); } + private static final Set MACRO_ONLY; + static + { + MACRO_ONLY = new HashSet(); + MACRO_ONLY.add("defined()" ); + } + + private static final Set DECL_SPECIFIER_SEQUENCE_C; static { diff --git a/core/org.eclipse.cdt.ui.tests/ChangeLog b/core/org.eclipse.cdt.ui.tests/ChangeLog index 6bc12324f59..2dd6a29edca 100644 --- a/core/org.eclipse.cdt.ui.tests/ChangeLog +++ b/core/org.eclipse.cdt.ui.tests/ChangeLog @@ -1,3 +1,7 @@ +2004-01-30 John Camelon + Updated CompletionFailedTest_MacroRef_NoPrefix_Bug50487, renamed it to CompletionTest_MacroRef_NoPrefix and moved to passed test package. + Updated CompletionFailedTest_MacroRef_Prefix_Bug50487, renamed it to Y and moved to passed test package. + 2004-01-29 Hoda Amer -Added CompletionTest_SingleName_Parameter test to success tests. -Changed BaseTest to check if the expected values exist in the proposed values diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java index 7d4336da3d7..777ff704620 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java @@ -71,8 +71,8 @@ public class AutomatedSuite extends TestSuite { // Failed Tests addTest(CompletionFailedTest_ScopedReference_NoPrefix_Bug50152.suite()); addTest(CompletionFailedTest_ScopedReference_Prefix_Bug50152.suite()); - addTest(CompletionFailedTest_MacroRef_NoPrefix_Bug50487.suite()); - addTest(CompletionFailedTest_MacroRef_Prefix_Bug50487.suite()); + addTest(CompletionTest_MacroRef_NoPrefix.suite()); + addTest(CompletionTest_MacroRef_Prefix.suite()); addTest(CompletionFailedTest_FunctionReference_Bug50807.suite()); addTest(CompletionFailedTest_ConstructorReference_Bug50808.suite()); } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/failedtests/CompletionFailedTest_MacroRef_NoPrefix_Bug50487.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionTest_MacroRef_NoPrefix.java similarity index 84% rename from core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/failedtests/CompletionFailedTest_MacroRef_NoPrefix_Bug50487.java rename to core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionTest_MacroRef_NoPrefix.java index bc1edd97768..674a5f049cc 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/failedtests/CompletionFailedTest_MacroRef_NoPrefix_Bug50487.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionTest_MacroRef_NoPrefix.java @@ -8,12 +8,11 @@ * Contributors: * IBM Rational Software - Initial API and implementation ***********************************************************************/ -package org.eclipse.cdt.ui.tests.text.contentassist.failedtests; +package org.eclipse.cdt.ui.tests.text.contentassist; import junit.framework.Test; import junit.framework.TestSuite; import org.eclipse.cdt.core.parser.ast.IASTCompletionNode.CompletionKind; -import org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest; /** * @author hamer @@ -22,7 +21,7 @@ import org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest; * Bug#50487 :Wrong completion kind and prefix after "#ifdef" * */ -public class CompletionFailedTest_MacroRef_NoPrefix_Bug50487 extends CompletionProposalsBaseTest{ +public class CompletionTest_MacroRef_NoPrefix extends CompletionProposalsBaseTest{ private final String fileName = "CompletionTestStart26.cpp"; private final String fileFullPath ="resources/contentassist/" + fileName; @@ -30,7 +29,7 @@ public class CompletionFailedTest_MacroRef_NoPrefix_Bug50487 extends Completion private final String headerFileFullPath ="resources/contentassist/" + headerFileName; private final String expectedScopeName = "ASTCompilationUnit"; private final String expectedContextName = "null"; - private final CompletionKind expectedKind = CompletionKind.VARIABLE_TYPE; // should be CompletionKind.MACRO_REFERENCE; + private final CompletionKind expectedKind = CompletionKind.MACRO_REFERENCE; private final String expectedPrefix = ""; private final String[] expectedResults = { // Should be @@ -39,13 +38,13 @@ public class CompletionFailedTest_MacroRef_NoPrefix_Bug50487 extends Completion // "xMacro(x,y)" }; - public CompletionFailedTest_MacroRef_NoPrefix_Bug50487(String name) { + public CompletionTest_MacroRef_NoPrefix(String name) { super(name); } public static Test suite() { - TestSuite suite= new TestSuite(CompletionFailedTest_MacroRef_NoPrefix_Bug50487.class.getName()); - suite.addTest(new CompletionFailedTest_MacroRef_NoPrefix_Bug50487("testCompletionProposals")); + TestSuite suite= new TestSuite(CompletionTest_MacroRef_NoPrefix.class.getName()); + suite.addTest(new CompletionTest_MacroRef_NoPrefix("testCompletionProposals")); return suite; } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/failedtests/CompletionFailedTest_MacroRef_Prefix_Bug50487.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionTest_MacroRef_Prefix.java similarity index 82% rename from core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/failedtests/CompletionFailedTest_MacroRef_Prefix_Bug50487.java rename to core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionTest_MacroRef_Prefix.java index 3829a363f3e..8f1cdbcb530 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/failedtests/CompletionFailedTest_MacroRef_Prefix_Bug50487.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionTest_MacroRef_Prefix.java @@ -8,12 +8,11 @@ * Contributors: * IBM Rational Software - Initial API and implementation ***********************************************************************/ -package org.eclipse.cdt.ui.tests.text.contentassist.failedtests; +package org.eclipse.cdt.ui.tests.text.contentassist; import junit.framework.Test; import junit.framework.TestSuite; import org.eclipse.cdt.core.parser.ast.IASTCompletionNode.CompletionKind; -import org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest; /** * @author hamer @@ -22,7 +21,7 @@ import org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest; * Bug#50487 :Wrong completion kind and prefix after "#ifdef" * */ -public class CompletionFailedTest_MacroRef_Prefix_Bug50487 extends CompletionProposalsBaseTest{ +public class CompletionTest_MacroRef_Prefix extends CompletionProposalsBaseTest{ private final String fileName = "CompletionTestStart27.cpp"; private final String fileFullPath ="resources/contentassist/" + fileName; @@ -30,20 +29,20 @@ public class CompletionFailedTest_MacroRef_Prefix_Bug50487 extends CompletionPr private final String headerFileFullPath ="resources/contentassist/" + headerFileName; private final String expectedScopeName = "ASTCompilationUnit"; private final String expectedContextName = "null"; - private final CompletionKind expectedKind = CompletionKind.VARIABLE_TYPE; // should be CompletionKind.MACRO_REFERENCE; - private final String expectedPrefix = ""; // should be "D"; + private final CompletionKind expectedKind = CompletionKind.MACRO_REFERENCE; + private final String expectedPrefix = "D"; private final String[] expectedResults = { // Should be // "Debug" }; - public CompletionFailedTest_MacroRef_Prefix_Bug50487(String name) { + public CompletionTest_MacroRef_Prefix(String name) { super(name); } public static Test suite() { - TestSuite suite= new TestSuite(CompletionFailedTest_MacroRef_Prefix_Bug50487.class.getName()); - suite.addTest(new CompletionFailedTest_MacroRef_Prefix_Bug50487("testCompletionProposals")); + TestSuite suite= new TestSuite(CompletionTest_MacroRef_Prefix.class.getName()); + suite.addTest(new CompletionTest_MacroRef_Prefix("testCompletionProposals")); return suite; }