[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"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/javaimp 88b9c2a: * javaimp-parse.el: Return class name without generics from scope parsers.,
Filipp Gunbin <=