Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Schorn2009-06-22 13:44:54 +0000
committerMarkus Schorn2009-06-22 13:44:54 +0000
commitc48dff14d70c32964ba442052e8b00e16a19cd92 (patch)
treed9e4c18c2cfe411bac1916b3c02874b1964eb3e7 /core/org.eclipse.cdt.core
parentf36c6d3c70e26b17c814275064aa56167f7e67b1 (diff)
downloadorg.eclipse.cdt-c48dff14d70c32964ba442052e8b00e16a19cd92.tar.gz
org.eclipse.cdt-c48dff14d70c32964ba442052e8b00e16a19cd92.tar.xz
org.eclipse.cdt-c48dff14d70c32964ba442052e8b00e16a19cd92.zip
getSyntax() does not work correctly with newlines, bug 280175
Diffstat (limited to 'core/org.eclipse.cdt.core')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTNode.java33
1 files changed, 19 insertions, 14 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTNode.java
index 0117daefe1f..e3e32bb477e 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTNode.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTNode.java
@@ -319,23 +319,28 @@ public abstract class ASTNode implements IASTNode {
char[] txt= lr.getUnpreprocessedSignature(total);
Lexer lex= new Lexer(txt, (LexerOptions) tu.getAdapter(LexerOptions.class), ILexerLog.NULL, null);
try {
- Token result= lex.nextToken();
- if (result.getType() == IToken.tEND_OF_INPUT)
- return null;
-
- Token last= result;
- for(;;) {
- int offset= last.getOffset() + adjustment;
- int endOffset= last.getEndOffset() + adjustment;
- last.setOffset(offset, endOffset);
-
+ Token result= null;
+ Token last= null;
+ for(;;) {
Token t= lex.nextToken();
- if (t.getType() == IToken.tEND_OF_INPUT)
+ switch (t.getType()) {
+ case IToken.tEND_OF_INPUT:
+ return result;
+ case Lexer.tNEWLINE:
break;
- last.setNext(t);
- last= t;
+ default:
+ int offset= t.getOffset() + adjustment;
+ int endOffset= t.getEndOffset() + adjustment;
+ t.setOffset(offset, endOffset);
+ if (last == null) {
+ result= last= t;
+ } else {
+ last.setNext(t);
+ last= t;
+ }
+ break;
+ }
}
- return result;
} catch (OffsetLimitReachedException e) {
// does not happen without using content assist limit
}

Back to the top