From 74618473526e417bc879f22a668cf89ac8695d4f Mon Sep 17 00:00:00 2001 From: Manindra Moharana Date: Mon, 19 Aug 2013 20:43:19 +0530 Subject: [PATCH] fixing regression --- .../mode/experimental/ASTGenerator.java | 29 ++++++++++--------- .../experimental/ErrorCheckerService.java | 8 ++++- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/pdex/src/processing/mode/experimental/ASTGenerator.java b/pdex/src/processing/mode/experimental/ASTGenerator.java index 034522b01..24ca2befc 100644 --- a/pdex/src/processing/mode/experimental/ASTGenerator.java +++ b/pdex/src/processing/mode/experimental/ASTGenerator.java @@ -269,13 +269,14 @@ public class ASTGenerator { protected void done() { if (codeTree != null) { -// if (jtree.hasFocus() || frame2.hasFocus()) -// return; -// jtree.setModel(new DefaultTreeModel(codeTree)); -// ((DefaultTreeModel) jtree.getModel()).reload(); -// if (!frame2.isVisible()) { -// frame2.setVisible(true); -// } + if (jtree.hasFocus() || frame2.hasFocus()) + return; + jtree.setModel(new DefaultTreeModel(codeTree)); + ((DefaultTreeModel) jtree.getModel()).reload(); + jtree.validate(); + if (!frame2.isVisible()) { + frame2.setVisible(true); + } // if (!frameAutoComp.isVisible()) { // // frameAutoComp.setVisible(true); @@ -293,7 +294,6 @@ public class ASTGenerator { // .getY(), 450, 600)); // jdocWindow.setVisible(true); // } -// jtree.validate(); } } }; @@ -1379,18 +1379,20 @@ public class ASTGenerator { } private static ASTNode findClosestNode(int lineNumber, ASTNode node) { + log("findClosestNode to line " + lineNumber); ASTNode parent = findClosestParentNode(lineNumber, node); + log("findClosestParentNode returned " + getNodeAsString(parent)); if (parent == null) return null; - if (getLineNumber(parent) == lineNumber) + if (getLineNumber(parent) == lineNumber){ + log(parent + "|PNode " + getLineNumber(parent) + ", lfor " + lineNumber ); return parent; + } List nodes = null; if (parent instanceof TypeDeclaration) { - nodes = (List) ((TypeDeclaration) parent) - .getStructuralProperty(TypeDeclaration.BODY_DECLARATIONS_PROPERTY); + nodes = (List) ((TypeDeclaration) parent).bodyDeclarations(); } else if (parent instanceof Block) { - nodes = (List) ((Block) parent) - .getStructuralProperty(Block.STATEMENTS_PROPERTY); + nodes = (List) ((Block) parent).statements(); } else { System.err.println("THIS CONDITION SHOULD NOT OCCUR - findClosestNode " + getNodeAsString(parent)); @@ -1401,6 +1403,7 @@ public class ASTGenerator { ASTNode retNode = parent; for (int i = 0; i < nodes.size(); i++) { ASTNode cNode = nodes.get(i); + log(cNode + "|cNode " + getLineNumber(cNode) + ", lfor " + lineNumber ); if (getLineNumber(cNode) <= lineNumber) retNode = cNode; } diff --git a/pdex/src/processing/mode/experimental/ErrorCheckerService.java b/pdex/src/processing/mode/experimental/ErrorCheckerService.java index 99fb31515..237cafce5 100644 --- a/pdex/src/processing/mode/experimental/ErrorCheckerService.java +++ b/pdex/src/processing/mode/experimental/ErrorCheckerService.java @@ -250,6 +250,11 @@ public class ErrorCheckerService implements Runnable{ checkCode(); if(!hasSyntaxErrors()) editor.showProblemListView(XQConsoleToggle.CONSOLE); + // Make sure astGen has at least one CU to start with + // This is when the loaded sketch already has syntax errors. + // Completion wouldn't be complete, but it'd be still something + // better than nothing + astGenerator.buildAST(cu); while (!stopThread) { try { // Take a nap. @@ -313,7 +318,7 @@ public class ErrorCheckerService implements Runnable{ + mainClassOffset); // No syntax errors, proceed for compilation check, Stage 2. - astGenerator.buildAST(cu); + //if(hasSyntaxErrors()) astGenerator.buildAST(null); if (problems.length == 0 && editor.compilationCheckEnabled) { //mainClassOffset++; // just a hack. @@ -327,6 +332,7 @@ public class ErrorCheckerService implements Runnable{ // log(sourceCode); // log("--------------------------"); compileCheck(); + astGenerator.buildAST(cu); log(editor.getSketch().getName() + "2 MCO " + mainClassOffset); }