emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] scratch/javaimp-wip 71be533: wip


From: Filipp Gunbin
Subject: [elpa] scratch/javaimp-wip 71be533: wip
Date: Tue, 3 Aug 2021 19:37:39 -0400 (EDT)

branch: scratch/javaimp-wip
commit 71be533317e07b0fa42729225d3eab41f6576fe4
Author: Filipp Gunbin <fgunbin@fastmail.fm>
Commit: Filipp Gunbin <fgunbin@fastmail.fm>

    wip
---
 javaimp-tests.el                 | 135 ++++++++++++++++++++-------------------
 javaimp-util.el                  |  22 ++++---
 javaimp.el                       |  39 ++++++-----
 testdata/test1-misc-classes.java |   9 ++-
 4 files changed, 107 insertions(+), 98 deletions(-)

diff --git a/javaimp-tests.el b/javaimp-tests.el
index b4788e2..d84a131 100644
--- a/javaimp-tests.el
+++ b/javaimp-tests.el
@@ -224,61 +224,63 @@ throws E1 {"
         (expected
          '(((class "Top"))
            ((class "CInner1") (class "Top"))
-           ((method "foo") (class "CInner1") (class "Top"))
+           ((method "foo()") (class "CInner1") (class "Top"))
            ((local-class "CInner1_CLocal1")
-            (method "foo") (class "CInner1") (class "Top"))
-           ((method "foo")
+            (method "foo()") (class "CInner1") (class "Top"))
+           ((method "foo()")
             (local-class "CInner1_CLocal1")
-            (method "foo") (class "CInner1") (class "Top"))
+            (method "foo()") (class "CInner1") (class "Top"))
            ((local-class "CInner1_CLocal1_CLocal1")
-            (method "foo")
+            (method "foo()")
             (local-class "CInner1_CLocal1")
-            (method "foo") (class "CInner1") (class "Top"))
-           ((method "foo")
+            (method "foo()") (class "CInner1") (class "Top"))
+           ((method "foo()")
             (local-class "CInner1_CLocal1_CLocal1")
-            (method "foo")
+            (method "foo()")
             (local-class "CInner1_CLocal1")
-            (method "foo") (class "CInner1") (class "Top"))
+            (method "foo()") (class "CInner1") (class "Top"))
 
            ((local-class "CInner1_CLocal2")
-            (method "foo") (class "CInner1") (class "Top"))
-           ((method "foo")
+            (method "foo()") (class "CInner1") (class "Top"))
+           ((method "foo()")
             (local-class "CInner1_CLocal2")
-            (method "foo") (class "CInner1") (class "Top"))
+            (method "foo()") (class "CInner1") (class "Top"))
 
            ((class "CInner1_CInner") (class "CInner1") (class "Top"))
-           ((method "foo")
+           ((method "foo()")
             (class "CInner1_CInner") (class "CInner1") (class "Top"))
-           ((method "bar")
+           ((method "bar()")
             (class "CInner1_CInner") (class "CInner1") (class "Top"))
 
            ((interface "IInner1") (class "Top"))
-           ((method "foo") (interface "IInner1") (class "Top"))
+           ((method "foo()") (interface "IInner1") (class "Top"))
            ((class "IInner1_CInner1") (interface "IInner1") (class "Top"))
-           ((method "foo")
+           ((method "foo()")
             (class "IInner1_CInner1") (interface "IInner1") (class "Top"))
-           ((method "defaultMethod") (interface "IInner1") (class "Top"))
+           ((method "defaultMethod(String, String)")
+            (interface "IInner1") (class "Top"))
 
            ((interface "IInner1_IInner1") (interface "IInner1") (class "Top"))
-           ((method "defaultMethod")
+           ((method "defaultMethod(String, String)")
             (interface "IInner1_IInner1") (interface "IInner1") (class "Top"))
 
            ((enum "EnumInner1") (class "Top"))
            ((method "EnumInner1") (enum "EnumInner1") (class "Top"))
-           ((method "foo") (enum "EnumInner1") (class "Top"))
+           ((method "foo()") (enum "EnumInner1") (class "Top"))
            ((enum "EnumInner1_EInner1") (enum "EnumInner1") (class "Top"))
 
            ((class "ColocatedTop"))
-           ((method "foo") (class "ColocatedTop")))))
+           ((method "foo()") (class "ColocatedTop"))
+           ((method "bar(String, String)") (class "ColocatedTop")))))
     (should (= (length expected) (length actual)))
     (dotimes (i (length expected))
       (should (equal (nth i expected) (nth i actual)))))
   ;;
   (let ((data
          `((,(nth 0 scopes) "Top" 26 36)
-           (,(nth 15 scopes) "Top.IInner1.IInner1_CInner1.foo" 1810 1816)
-           (,(nth 22 scopes) "Top.EnumInner1_EInner1" 2452 2476)
-           (,(nth 24 scopes) "ColocatedTop.foo" 2544 2550))))
+           (,(nth 15 scopes) "Top.IInner1.IInner1_CInner1.foo" 1798 1804)
+           (,(nth 22 scopes) "Top.EnumInner1_EInner1" 24574 2498)
+           (,(nth 24 scopes) "ColocatedTop.foo" 2566 2572))))
     (dolist (elt data)
       (let ((scope (nth 0 elt)))
         (should (equal (nth 1 elt) (javaimp-scope-name scope)))
@@ -297,24 +299,25 @@ throws E1 {"
       actual
       '(("Top"
          ("CInner1"
-          ("foo" . 98)
+          ("foo()" . 98)
           ("CInner1_CInner1"
-           ("foo" . 1099)
-           ("bar" . 1192)))
+           ("foo()" . 1099)
+           ("bar()" . 1192)))
          ("IInner1"
-          ("foo" . 1603)
+          ("foo()" . 1603)
           ("IInner1_CInner1"
-           ("foo" . 1810))
-          ("defaultMethod" . 1975)
+           ("foo()" . 1810))
+          ("defaultMethod(String)" . 1975)
           ("IInner1_IInner1"
-           ("defaultMethod" . 2158)))
+           ("defaultMethod(String)" . 2169)))
          ("EnumInner1"
-          ("EnumInner1" . 2343)
-          ("foo" . 2389)
-          ;; "EnumInner1_EInner1" empty - omitted
+          ("EnumInner1()" . 2365)
+          ("foo()" . 2411)
+          ;; "EnumInner1_EInner1" omitted because no methods inside
           ))
         ("ColocatedTop"
-         ("foo" . 2544)))))))
+         ("foo()" . 2566)
+         ("bar(String, String)" . 2578)))))))
 
 (ert-deftest javaimp-test--imenu-simple ()
   (let* ((javaimp-imenu-group-methods nil)
@@ -322,46 +325,50 @@ throws E1 {"
     (should
      (equal
       actual
-      '(("foo (Top.CInner1)" . 98)
-        ("foo (Top.CInner1.CInner1_CInner1)" . 1099)
-        ("bar" . 1192)
-        ("foo (Top.IInner1)" . 1603)
-        ("foo (Top.IInner1.IInner1_CInner1)" . 1810)
-        ("defaultMethod (Top.IInner1)" . 1975)
-        ("defaultMethod (Top.IInner1.IInner1_IInner1)" . 2158)
-        ("EnumInner1" . 2343)
-        ("foo (Top.EnumInner1)" . 2389)
-        ("foo (ColocatedTop)" . 2544))))))
+      '(("foo() [Top.CInner1]" . 98)
+        ("foo() [Top.CInner1.CInner1_CInner1]" . 1099)
+        ("bar()" . 1192)
+        ("foo() [Top.IInner1]" . 1603)
+        ("foo() [Top.IInner1.IInner1_CInner1]" . 1810)
+        ("defaultMethod(String) [Top.IInner1]" . 1975)
+        ("defaultMethod(String) [Top.IInner1.IInner1_IInner1]" . 2169)
+        ("EnumInner1()" . 2365)
+        ("foo() [Top.EnumInner1]" . 2411)
+        ("foo() [ColocatedTop]" . 2566)
+        ("bar(String, String)" . 2578))))))
 
 (ert-deftest javaimp-test--imenu-qualified ()
   (let* ((javaimp-imenu-group-methods 'qualified)
-         (actual
-          (mapcar (lambda (entry)
-
-          (javaimp-test--imenu-get-index)))
+         (actual (javaimp-test--imenu-get-index)))
     (should
      (equal
-
-      (lambda (s)
-       (cons (javaimp-scope-name entry) (javaimp-scope-start entry)))
-
-
       actual
-      '(("Top.CInner1.foo" . 98)
-        ("Top.CInner1.CInner1_CInner1.foo" . 1099)
-        ("Top.CInner1.CInner1_CInner1.bar" . 1192)
-        ("Top.IInner1.foo" . 1603)
-        ("Top.IInner1.IInner1_CInner1.foo" . 1810)
-        ("Top.IInner1.defaultMethod" . 1975)
-        ("Top.IInner1.IInner1_IInner1.defaultMethod" . 2158)
-        ("Top.EnumInner1.EnumInner1" . 2343)
-        ("Top.EnumInner1.foo" . 2389)
-        ("ColocatedTop.foo" . 2544))))))
+      '(("Top.CInner1.foo()" . 98)
+        ("Top.CInner1.CInner1_CInner1.foo()" . 1099)
+        ("Top.CInner1.CInner1_CInner1.bar()" . 1192)
+        ("Top.IInner1.foo()" . 1603)
+        ("Top.IInner1.IInner1_CInner1.foo()" . 1810)
+        ("Top.IInner1.defaultMethod(String)" . 1975)
+        ("Top.IInner1.IInner1_IInner1.defaultMethod(String)" . 2169)
+        ("Top.EnumInner1.EnumInner1()" . 2365)
+        ("Top.EnumInner1.foo()" . 2411)
+        ("ColocatedTop.foo()" . 2566)
+        ("ColocatedTop.bar(String, String)" . 2578))))))
 
 (defun javaimp-test--imenu-get-index ()
   (with-temp-buffer
     (insert-file-contents
      (concat javaimp--basedir "testdata/test1-misc-classes.java"))
-    (javaimp-imenu-create-index)))
+    (let* ((javaimp-parse-format-method-name
+            javaimp--parse-format-method-name-types)
+           (alist (javaimp-imenu-create-index)))
+      (javaimp-test--imenu-simplify-entries alist))))
+
+(defun javaimp-test--imenu-simplify-entries (alist)
+  (dolist (elt alist)
+    (if (and (= (length elt) 4)
+             (functionp (nth 2 elt)))
+        (setcdr elt (nth 1 elt))
+      (javaimp-test--imenu-simplify-entries (cdr elt)))))
 
 (provide 'javaimp-tests)
diff --git a/javaimp-util.el b/javaimp-util.el
index 1bf2a79..25dd12d 100644
--- a/javaimp-util.el
+++ b/javaimp-util.el
@@ -160,9 +160,9 @@ PARENT-NODE is indented for recursive calls."
 (defun javaimp--find-node (pred forest &optional unwrap)
   (catch 'found
     (dolist (tree forest)
-      (javaimp--find-node-in-tree-1 tree pred unwrap))))
+      (javaimp--find-node-in-tree tree pred unwrap))))
 
-(defun javaimp--find-node-in-tree-1 (tree pred unwrap)
+(defun javaimp--find-node-in-tree (tree pred unwrap)
   (when tree
     (if (funcall pred (javaimp-node-contents tree))
        (throw 'found
@@ -170,23 +170,25 @@ PARENT-NODE is indented for recursive calls."
                    (javaimp-node-contents tree)
                  tree)))
     (dolist (child (javaimp-node-children tree))
-      (javaimp--find-node-in-tree-1 child pred unwrap))))
+      (javaimp--find-node-in-tree child pred unwrap))))
 
 
 (defun javaimp--collect-nodes (pred forest)
   (apply #'seq-concatenate 'list
         (mapcar (lambda (tree)
-                  (javaimp--collect-nodes-from-tree tree pred))
+                   (delq nil
+                        (javaimp--collect-nodes-from-tree tree pred)))
                 forest)))
 
 (defun javaimp--collect-nodes-from-tree (tree pred)
   (when tree
-    (append (when (funcall pred (javaimp-node-contents tree))
-             (list (javaimp-node-contents tree)))
-           (apply #'seq-concatenate 'list
-                  (mapcar (lambda (child)
-                            (javaimp--collect-nodes-from-tree child pred))
-                          (javaimp-node-children tree))))))
+    (cons (and (funcall pred (javaimp-node-contents tree))
+               (javaimp-node-contents tree))
+         (apply #'seq-concatenate 'list
+                (mapcar (lambda (child)
+                           (delq nil
+                                (javaimp--collect-nodes-from-tree child pred)))
+                        (javaimp-node-children tree))))))
 
 
 (defun javaimp--map-nodes (mapper pred forest)
diff --git a/javaimp.el b/javaimp.el
index 86b16cd..3585e32 100644
--- a/javaimp.el
+++ b/javaimp.el
@@ -578,10 +578,10 @@ is `ordinary' or `static'.  Interactively, NEW-IMPORTS is 
nil."
                                   (javaimp--collect-nodes
                                    #'javaimp-imenu--included-method forest))))
              (mapcar (lambda (entry)
-                       ;; disambiguate similar method names
+                       ;; disambiguate same method names
                        (when (assoc (car entry) entries)
                          (setcar entry
-                                 (format "%s (%s)"
+                                 (format "%s [%s]"
                                          (car entry)
                                          (javaimp-imenu--concat-parent-names
                                           (nth 3 entry))))))
@@ -620,31 +620,16 @@ is `ordinary' or `static'.  Interactively, NEW-IMPORTS is 
nil."
         #'javaimp-imenu--go
         scope))
 
+(defun javaimp-imenu--go (scope)
+  (goto-char (javaimp-scope-start scope))
+  (back-to-indentation))
+
 (defun javaimp-imenu--concat-parent-names (scope)
   (let (parents)
     (while (setq scope (javaimp-scope-parent scope))
       (push scope parents))
     (mapconcat #'javaimp-scope-name parents ".")))
 
-
-(defun javaimp-imenu--go (scope)
-  (goto-char (javaimp-scope-start scope))
-  (back-to-indentation))
-
-
-
-;; Misc
-
-(defun javaimp-reset (arg)
-  "Forget loaded trees state.  With prefix arg, also reset jars
-cache."
-  (interactive "P")
-  (setq javaimp-project-forest nil
-        javaimp--jdk-classes 'need-init)
-  (when arg
-    (setq javaimp-cached-jars nil)))
-
-
 
 ;; Help
 
@@ -713,6 +698,18 @@ scopes cache."
       (setq buffer-read-only t))
     (display-buffer buf)))
 
+
+;; Misc
+
+(defun javaimp-reset (arg)
+  "Forget loaded trees state.  With prefix arg, also reset jars
+cache."
+  (interactive "P")
+  (setq javaimp-project-forest nil
+        javaimp--jdk-classes 'need-init)
+  (when arg
+    (setq javaimp-cached-jars nil)))
+
 (provide 'javaimp)
 
 ;;; javaimp.el ends here
diff --git a/testdata/test1-misc-classes.java b/testdata/test1-misc-classes.java
index d916221..c010604 100644
--- a/testdata/test1-misc-classes.java
+++ b/testdata/test1-misc-classes.java
@@ -72,7 +72,7 @@ public class Top {
             }
         }
 
-        String bar(String arg1, String arg2);
+        String abstract_method();
 
         static class IInner1_CInner1 {
             public void foo() {
@@ -84,14 +84,14 @@ public class Top {
 
         void baz();
 
-        default void defaultMethod() {
+        default void defaultMethod(String arg1) {
             System.out.println("");
         }
 
         interface IInner1_IInner1 extends A<B, C>, Serializable {
             void foo();
 
-            default String defaultMethod() {
+            default String defaultMethod(String arg2) {
                 System.out.println("");
             }
 
@@ -119,4 +119,7 @@ public class Top {
 class ColocatedTop {
     void foo() {
     }
+
+    void bar(String arg1, String arg2) {
+    }
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]