1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00
John Camelon 2004-05-25 00:47:19 +00:00
parent cc0e391d69
commit 18de33d8a9
2 changed files with 19 additions and 4 deletions

View file

@ -1616,4 +1616,12 @@ public class ScannerTestCase extends BaseScannerTest
initializeScanner( writer.toString(), ParserMode.QUICK_PARSE, callback ); initializeScanner( writer.toString(), ParserMode.QUICK_PARSE, callback );
fullyTokenize(); fullyTokenize();
} }
public void testBug62009() throws Exception
{
Callback callback = new Callback( ParserMode.QUICK_PARSE );
initializeScanner( "#define def(x) (x#)\ndef(orange)\n", ParserMode.QUICK_PARSE, callback ); //$NON-NLS-1$
fullyTokenize();
assertFalse( callback.problems.isEmpty() );
}
} }

View file

@ -2654,9 +2654,10 @@ public class Scanner implements IScanner {
protected List tokenizeReplacementString( int beginning, String key, String replacementString, List parameterIdentifiers ) protected List tokenizeReplacementString( int beginning, String key, String replacementString, List parameterIdentifiers )
{ {
List macroReplacementTokens = new ArrayList();
if( replacementString.trim().equals( "" ) ) //$NON-NLS-1$ if( replacementString.trim().equals( "" ) ) //$NON-NLS-1$
return macroReplacementTokens; return Collections.EMPTY_LIST;
List macroReplacementTokens = new ArrayList();
IScanner helperScanner=null; IScanner helperScanner=null;
try { try {
helperScanner = new Scanner( helperScanner = new Scanner(
@ -2702,7 +2703,7 @@ public class Scanner implements IScanner {
strbuff.append( replacementString ); strbuff.append( replacementString );
handleProblem( IProblem.PREPROCESSOR_MACRO_PASTING_ERROR, strbuff.toString(), handleProblem( IProblem.PREPROCESSOR_MACRO_PASTING_ERROR, strbuff.toString(),
beginning, false, true ); beginning, false, true );
return null; return Collections.EMPTY_LIST;
} }
} }
} }
@ -3097,7 +3098,13 @@ public class Scanner implements IScanner {
strbuff.startString(); strbuff.startString();
strbuff.append(cache); strbuff.append(cache);
} }
t = (SimpleToken) tokens.get( ++i ); ++i;
if( tokens.size() == i ){
handleProblem( IProblem.PREPROCESSOR_MACRO_USAGE_ERROR, expansion.getName(), getCurrentOffset(), false, true );
return;
}
t = (SimpleToken) tokens.get( i );
int index = parameterNames.indexOf(t.getImage()); int index = parameterNames.indexOf(t.getImage());
if( index == -1 ){ if( index == -1 ){
handleProblem( IProblem.PREPROCESSOR_MACRO_USAGE_ERROR, expansion.getName(), getCurrentOffset(), false, true ); handleProblem( IProblem.PREPROCESSOR_MACRO_USAGE_ERROR, expansion.getName(), getCurrentOffset(), false, true );