From faf36d22336319772aaa8af3b4be59295f3ee88c Mon Sep 17 00:00:00 2001
From: idrissrio <riouakidriss@hotmail.it>
Date: Thu, 23 Apr 2020 09:48:26 +0200
Subject: [PATCH] [parser] Improve handling of multiple interfaces in
 implements statement

fixes #324
---
 ChangeLog                |  5 +++++
 src/javacc/jrag/Jrag.jjt | 13 ++++---------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 65db7c22..65bc1be5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,11 @@
     * Fixed aspect parsing issue for Java 8 array constructor references.
     See https://bitbucket.org/jastadd/jastadd2/issues/323/parsing-of-array-constructor-references
 
+2020-05-08  Idriss Riouak <idriss.riouak@cs.lth.se>
+
+    * Improve parsing of multiple interfaces in implements statement.
+    See https://bitbucket.org/jastadd/jastadd2/issues/324/parsing-after-implements
+
 2019-11-29  Jesper Öqvist <jesper.oqvist@cs.lth.se>
 
     * Deprecated some old options: lazyMaps, private, traceVisitCheck,
diff --git a/src/javacc/jrag/Jrag.jjt b/src/javacc/jrag/Jrag.jjt
index aafdc642..c349e8a1 100644
--- a/src/javacc/jrag/Jrag.jjt
+++ b/src/javacc/jrag/Jrag.jjt
@@ -1434,20 +1434,15 @@ void CollectionContribution():
 
 void AspectAddInterface() :
 {
-  Token first, last;
   Token targetName;
-  SimpleNode nameList;
+  SimpleNode name;
 }
 {
-  targetName = <IDENTIFIER> { first = token; }
+  targetName = <IDENTIFIER>
   "implements"
-  nameList = TypeNameList()
+  name = ClassOrInterfaceType(){ root.addInterface(name, targetName.image, fileName); }
+  ( "," name = ClassOrInterfaceType() { root.addInterface(name, targetName.image, fileName); } )*
   ";"
-  {
-    last = token;
-    root.addInterface(nameList, targetName.image, fileName);
-  }
-
 }
 
 void AspectExtendInterface() :
-- 
GitLab