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();
|
Iterator i = callback.getProblems();
|
||||||
assertFalse( i.hasNext() );
|
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 (p + 1 < limit) {
|
||||||
if (buffer[p + 1] == '/') {
|
if (buffer[p + 1] == '/') {
|
||||||
// C++ comment, skip rest of line
|
// C++ comment, skip rest of line
|
||||||
return;
|
for (bufferPos[bufferStackPos] += 2;
|
||||||
} else if (buffer[p + 1] == '*') {
|
bufferPos[bufferStackPos] < limit;
|
||||||
// C comment, find closing */
|
++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;
|
for (bufferPos[bufferStackPos] += 2;
|
||||||
bufferPos[bufferStackPos] < limit;
|
bufferPos[bufferStackPos] < limit;
|
||||||
++bufferPos[bufferStackPos]) {
|
++bufferPos[bufferStackPos]) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue