Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kucera2008-05-28 19:50:25 +0000
committerMike Kucera2008-05-28 19:50:25 +0000
commit8037d270d822429df01aa6b6d4d98dedbe7bd76b (patch)
tree6c37e298818bf9472ada68a3f1a807952c1d8925 /lrparser
parent3e8493f50536a5b4fb97460e990b65e50ae842fc (diff)
downloadorg.eclipse.cdt-8037d270d822429df01aa6b6d4d98dedbe7bd76b.tar.gz
org.eclipse.cdt-8037d270d822429df01aa6b6d4d98dedbe7bd76b.tar.xz
org.eclipse.cdt-8037d270d822429df01aa6b6d4d98dedbe7bd76b.zip
bug 234463, fix for testForStatement1
Diffstat (limited to 'lrparser')
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java15
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java13
2 files changed, 28 insertions, 0 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java
index cd79d57abf8..fb6ccc87552 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java
@@ -28,6 +28,7 @@ import org.eclipse.cdt.core.dom.ast.IASTFieldReference;
import org.eclipse.cdt.core.dom.ast.IASTForStatement;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
+import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
import org.eclipse.cdt.core.dom.ast.IASTIfStatement;
import org.eclipse.cdt.core.dom.ast.IASTInitializer;
import org.eclipse.cdt.core.dom.ast.IASTInitializerList;
@@ -667,6 +668,20 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
else // its null
initializer = nodeFactory.newNullStatement();
+
+ // bug 234463, fix for content assist to work in this case
+ int TK_EOC = TK_EndOfCompletion; // TODO: change this in the grammar file
+ List<IToken> tokens = parser.getRuleTokens();
+ if(matchTokens(tokens, tokenMap,
+ TK_for, TK_LeftParen, TK_Completion, TK_EOC, TK_EOC, TK_EOC, TK_EOC)) {
+ IASTName name = createName(tokens.get(2));
+ IASTIdExpression idExpression = nodeFactory.newIdExpression(name);
+ setOffsetAndLength(idExpression, offset(name), length(name));
+ initializer = nodeFactory.newExpressionStatement(idExpression);
+ setOffsetAndLength(initializer, offset(name), length(name));
+ }
+
+
if(node != null)
setOffsetAndLength(initializer, offset(node), length(node));
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
index 51f2f5a91c3..1e71bb37fe5 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
@@ -637,6 +637,19 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
Object condition = astStack.pop(); // can be an expression or a declaration
IASTStatement initializer = (IASTStatement) astStack.pop();
+ // bug 234463, fix for content assist to work in this case
+ int TK_EOC = TK_EndOfCompletion; // TODO: change this in the grammar file
+ List<IToken> tokens = parser.getRuleTokens();
+ if(matchTokens(tokens, tokenMap,
+ TK_for, TK_LeftParen, TK_Completion, TK_EOC, TK_EOC, TK_EOC, TK_EOC)) {
+ IASTName name = createName(tokens.get(2));
+ IASTIdExpression idExpression = nodeFactory.newIdExpression(name);
+ setOffsetAndLength(idExpression, offset(name), length(name));
+ initializer = nodeFactory.newExpressionStatement(idExpression);
+ setOffsetAndLength(initializer, offset(name), length(name));
+ }
+
+
IASTForStatement forStat;
if(condition instanceof IASTExpression)
forStat = nodeFactory.newForStatement(initializer, (IASTExpression)condition, expr, body);

Back to the top