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

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

[elpa] externals/javaimp 88b9c2a: * javaimp-parse.el: Return class name


From: Filipp Gunbin
Subject: [elpa] externals/javaimp 88b9c2a: * javaimp-parse.el: Return class name without generics from scope parsers.
Date: Mon, 5 Jul 2021 14:12:41 -0400 (EDT)

branch: externals/javaimp
commit 88b9c2ae3d8fed76fb1bb612352e22a5ace0bd74
Author: Filipp Gunbin <fgunbin@fastmail.fm>
Commit: Filipp Gunbin <fgunbin@fastmail.fm>

    * javaimp-parse.el: Return class name without generics from scope parsers.
---
 javaimp-parse.el | 10 ++++++++--
 javaimp-tests.el | 38 ++++++++++++++++++++++----------------
 2 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/javaimp-parse.el b/javaimp-parse.el
index d69cf5f..009bbc4 100644
--- a/javaimp-parse.el
+++ b/javaimp-parse.el
@@ -58,6 +58,12 @@ present."
   "Enables parsing angle brackets as lists")
 
 
+(defsubst javaimp--parse-substr-before-< (str)
+  (let ((end (string-search "<" str)))
+    (if end
+        (string-trim (substring str 0 end))
+      str)))
+
 (defun javaimp--parse-arglist (beg end &optional only-type)
   "Parse arg list between BEG and END, of the form 'TYPE NAME,
 ...'.  Return list of conses (TYPE . NAME).  If ONLY-TYPE is
@@ -261,7 +267,7 @@ those may later become 'local-class' (see 
`javaimp--parse-scopes')."
               (make-javaimp-scope :type (intern
                                          (buffer-substring-no-properties
                                           keyword-start keyword-end))
-                                  :name (caar arglist)
+                                  :name (javaimp--parse-substr-before-< (caar 
arglist))
                                   :start keyword-start
                                   :open-brace (nth 1 state))))))))
 
@@ -298,7 +304,7 @@ those may later become 'local-class' (see 
`javaimp--parse-scopes')."
                 arglist (javaimp--parse-arglist (match-end 0) end t))
           (when (= (length arglist) 1)
             (make-javaimp-scope :type 'anonymous-class
-                                :name (caar arglist)
+                                :name (javaimp--parse-substr-before-< (caar 
arglist))
                                 :start start
                                 :open-brace (nth 1 state))))))))
 
diff --git a/javaimp-tests.el b/javaimp-tests.el
index 26c6a54..55bcbc0 100644
--- a/javaimp-tests.el
+++ b/javaimp-tests.el
@@ -47,34 +47,40 @@
       class "Foo")
     '("class Foo implements Bar, Baz {"
       class "Foo")
-    '("class Foo extends Bar implements Baz1, Baz2 {"
+    '("public class Foo extends Bar implements Baz1 , Baz2 {"
       class "Foo")
-    '("public\nclass\nFoo\nextends\nBar\nimplements\nBaz1\n,\nBaz2\n{"
+    `(,(subst-char-in-string
+        ?  ?\n
+        "public class Foo extends Bar implements Baz1 , Baz2 {")
       class "Foo")
     '("class Foo<Bar, Baz> extends FooSuper<Bar, Baz> \
 implements Interface1<Bar, Baz>, Interface2 {"
-      class "Foo<Bar, Baz>")
+      class "Foo")
     '("interface Foo<Bar, Baz> {"
-      interface "Foo<Bar, Baz>")
+      interface "Foo")
     '("private enum Foo {"
       enum "Foo")))
 
 (ert-deftest javaimp-test--parse-scope-anonymous-class ()
   (javaimp-test--check-scope #'javaimp--parse-scope-anonymous-class
-    '(" = new Object<Class1, Class2>(1 + 1, baz) {"
-      anonymous-class "Object<Class1, Class2>")
-    '(" =\nnew\nObject\n<\nClass1\n,\nClass2\n>\n(\n1\n+\n1\n,\nbaz\n)\n{"
-      anonymous-class "Object < Class1 , Class2 >")
+    '(" = new Object < Class1 , Class2 > ( 1 + 1 , baz ) {"
+      anonymous-class "Object")
+    `(,(subst-char-in-string
+        ?  ?\n
+        " = new Object < Class1 , Class2 > ( 1 + 1 , baz ) {")
+      anonymous-class "Object")
     '(" = (obj.getField()).new Object<Class1, Class2>(1, baz) {"
-      anonymous-class "Object<Class1, Class2>")
+      anonymous-class "Object")
     '(" = obj.new Object<>(1, baz) {"
-      anonymous-class "Object<>")))
+      anonymous-class "Object")))
 
 (ert-deftest javaimp-test--parse-scope-method-or-stmt ()
   (javaimp-test--check-scope #'javaimp--parse-scope-method-or-stmt
-    '("static void foo_bar(String a, int b) {"
+    '("static void foo_bar ( String a , int b ) {"
       method "foo_bar(String a, int b)")
-    '("static void\nfoo_bar\n(\nString\na\n,\nint\nb\n)\n{"
+    `(,(subst-char-in-string
+        ?  ?\n
+        "static void foo_bar ( String a , int b ) {")
       method "foo_bar(String a, int b)")
     '("void foo_bar(String a, int b) throws E1, E2 {"
       method "foo_bar(String a, int b) throws E1, E2")
@@ -86,9 +92,9 @@ throws E1 {"
 
 (ert-deftest javaimp-test--parse-scope-simple-stmt ()
   (javaimp-test--check-scope #'javaimp--parse-scope-simple-stmt
-    '("try {"
+    '(" try {"
       simple-statement "try")
-    '("\ntry\n{"
+    `(,(subst-char-in-string ?  ?\n " try {")
       simple-statement "try")
     ;; static initializer
     '("static {"
@@ -174,8 +180,8 @@ Exception4<? super Exception5>>")
   (should (equal (javaimp--get-file-classes
                   (concat javaimp--basedir 
"testdata/test-get-file-classes-1.java"))
                  '("org.foo.Top"
-                   "org.foo.Top.CInner1<T, S>"
-                   "org.foo.Top.CInner1<T, S>.CInner1_CInner1"
+                   "org.foo.Top.CInner1"
+                   "org.foo.Top.CInner1.CInner1_CInner1"
                    "org.foo.Top.IInner1"
                    "org.foo.Top.IInner1.IInner1_IInner1"
                    "org.foo.Top.IInner1.IInner1_CInner1"



reply via email to

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