< prev index next >

src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/NashornCompleter.java

Print this page

        

@@ -53,16 +53,19 @@
 // A simple source completer for nashorn
 final class NashornCompleter implements Completer {
     private final Context context;
     private final Global global;
     private final PartialParser partialParser;
+    private final PropertiesHelper propsHelper;
     private final Parser parser;
 
-    NashornCompleter(final Context context, final Global global, final PartialParser partialParser) {
+    NashornCompleter(final Context context, final Global global,
+            final PartialParser partialParser, final PropertiesHelper propsHelper) {
         this.context = context;
         this.global = global;
         this.partialParser = partialParser;
+        this.propsHelper = propsHelper;
         this.parser = Parser.create();
     }
 
     // Pattern to match a unfinished member selection expression. object part and "."
     // but property name missing pattern.

@@ -120,34 +123,37 @@
 
         // try to evaluate the object expression part as a script
         Object obj = null;
         try {
             obj = context.eval(global, objExprCode, global, "<suggestions>");
-        } catch (Exception ignored) {
-            // throw the exception - this is during tab-completion
+        } catch (Exception exp) {
+            // throw away the exception - this is during tab-completion
+            if (Main.DEBUG) {
+                exp.printStackTrace();
+            }
         }
 
         if (obj != null && obj != ScriptRuntime.UNDEFINED) {
             if (endsWithDot) {
                 // no user specified "prefix". List all properties of the object
-                result.addAll(PropertiesHelper.getProperties(obj));
+                result.addAll(propsHelper.getProperties(obj));
                 return cursor;
             } else {
                 // list of properties matching the user specified prefix
                 final String prefix = select.getIdentifier();
-                result.addAll(PropertiesHelper.getProperties(obj, prefix));
+                result.addAll(propsHelper.getProperties(obj, prefix));
                 return cursor - prefix.length();
             }
         }
 
         return cursor;
     }
 
     private int completeIdentifier(final String test, final int cursor, final List<CharSequence> result,
                 final IdentifierTree ident) {
         final String name = ident.getName();
-        result.addAll(PropertiesHelper.getProperties(global, name));
+        result.addAll(propsHelper.getProperties(global, name));
         return cursor - name.length();
     }
 
     // returns ExpressionTree if the given code parses to a top level expression.
     // Or else returns null.
< prev index next >