mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-04 06:45:43 +02:00
patch from Devin Steffler for 77805
This commit is contained in:
parent
50054ebf36
commit
ead89d4bbb
2 changed files with 25 additions and 3 deletions
|
@ -2325,5 +2325,12 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
|
|||
Iterator i = callback.getProblems();
|
||||
assertFalse( i.hasNext() );
|
||||
}
|
||||
public void testBug77805() throws Exception {
|
||||
Writer writer = new StringWriter();
|
||||
writer.write("#if X // Do something only if X is true\n"); //$NON-NLS-1$
|
||||
writer.write("/* some statements */\n"); //$NON-NLS-1$
|
||||
writer.write("#endif\n"); //$NON-NLS-1$
|
||||
parse(writer.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -798,9 +798,24 @@ public class ExpressionEvaluator {
|
|||
if (p + 1 < limit) {
|
||||
if (buffer[p + 1] == '/') {
|
||||
// C++ comment, skip rest of line
|
||||
return;
|
||||
} else if (buffer[p + 1] == '*') {
|
||||
// C comment, find closing */
|
||||
for (bufferPos[bufferStackPos] += 2;
|
||||
bufferPos[bufferStackPos] < limit;
|
||||
++bufferPos[bufferStackPos]) {
|
||||
p = bufferPos[bufferStackPos];
|
||||
if (buffer[p] == '\\' && p + 1 < limit && buffer[p + 1] == '\n') {
|
||||
bufferPos[bufferStackPos]+=2;
|
||||
continue;
|
||||
}
|
||||
if (buffer[p] == '\\' && p + 1 < limit && buffer[p + 1] == '\r' && p + 2 < limit && buffer[p + 2] == '\n') {
|
||||
bufferPos[bufferStackPos]+=3;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (buffer[p] == '\n')
|
||||
break; // break when find non-escaped newline
|
||||
}
|
||||
continue;
|
||||
} else if (buffer[p + 1] == '*') { // C comment, find closing */
|
||||
for (bufferPos[bufferStackPos] += 2;
|
||||
bufferPos[bufferStackPos] < limit;
|
||||
++bufferPos[bufferStackPos]) {
|
||||
|
|
Loading…
Add table
Reference in a new issue