From d3a0e98fd32aeec2116a6f8ff7fe8def456d7f34 Mon Sep 17 00:00:00 2001 From: Manindra Moharana Date: Mon, 15 Feb 2016 01:55:57 -0800 Subject: [PATCH] fixed bug in parsing imports with auto completion --- .../mode/java/pdex/ASTGenerator.java | 24 +++++++++++++++---- .../mode/java/pdex/ImportStatement.java | 21 ++++++++++++++-- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/java/src/processing/mode/java/pdex/ASTGenerator.java b/java/src/processing/mode/java/pdex/ASTGenerator.java index 469ee571c..f735ef2e9 100644 --- a/java/src/processing/mode/java/pdex/ASTGenerator.java +++ b/java/src/processing/mode/java/pdex/ASTGenerator.java @@ -1296,8 +1296,16 @@ public class ASTGenerator { for (ImportStatement impS : imports) { String temp = impS.getPackageName(); - if (impS.isStarredImport() && className.indexOf('.') == -1) { - temp = impS.getPackageName() + "." + className; + if (impS.isStarredImport()) { // case of starred import: pkg.foo.* + if (className.indexOf('.') == -1) { + temp = impS.getPackageName() + "." + className; + } else { + continue; + } + } else { // case of class import: pkg.foo.MyClass + if (!impS.getImportedClassName().equals(className)) { + continue; + } } tehClass = loadClass(temp); if (tehClass != null) { @@ -1309,8 +1317,16 @@ public class ASTGenerator { for (ImportStatement impS : errorCheckerService.codeFolderImports) { String temp = impS.getPackageName(); - if (impS.isStarredImport() && className.indexOf('.') == -1) { - temp = impS.getPackageName() + "." + className; + if (impS.isStarredImport()) { // case of starred import: pkg.foo.* + if (className.indexOf('.') == -1) { + temp = impS.getPackageName() + "." + className; + } else { + continue; + } + } else { // case of class import: pkg.foo.MyClass + if (!impS.getImportedClassName().equals(className)) { + continue; + } } tehClass = loadClass(temp); if (tehClass != null) { diff --git a/java/src/processing/mode/java/pdex/ImportStatement.java b/java/src/processing/mode/java/pdex/ImportStatement.java index d64b62f8c..6785519b0 100644 --- a/java/src/processing/mode/java/pdex/ImportStatement.java +++ b/java/src/processing/mode/java/pdex/ImportStatement.java @@ -78,9 +78,26 @@ public class ImportStatement { } public boolean isStarredImport() { - String ret = new String(importName.trim()); - if(ret.endsWith(";")) + String ret = importName.trim(); + if(ret.endsWith(";")) { ret = ret.substring(0, ret.length() - 1).trim(); + } return ret.endsWith(".*"); } + + public String getImportedClassName() { + if (isStarredImport()) { + return null; + } else { + String ret = importName.trim(); + if(ret.endsWith(";")) { + ret = ret.substring(0, ret.length() - 1).trim(); + } + if (ret.lastIndexOf('.') != -1) { + return ret.substring(ret.lastIndexOf('.') + 1); + } else { + return null; + } + } + } } \ No newline at end of file