From c823e1b7261f8ee74a774329f6fabf35b1d37540 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 08:14:17 +0000 Subject: [PATCH 1/2] Initial plan From dff1519dd58300681e1c82203c67072f503b3ad5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 08:20:37 +0000 Subject: [PATCH 2/2] Fix getSuperClass() not to return Object for Object to prevent infinite loop Co-authored-by: cwende <1968463+cwende@users.noreply.github.com> --- .../org/emftext/language/java/util/JavaModelCompletion.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Core/org.emftext.language.java/src/org/emftext/language/java/util/JavaModelCompletion.java b/Core/org.emftext.language.java/src/org/emftext/language/java/util/JavaModelCompletion.java index e53e6b78..8889fea1 100644 --- a/Core/org.emftext.language.java/src/org/emftext/language/java/util/JavaModelCompletion.java +++ b/Core/org.emftext.language.java/src/org/emftext/language/java/util/JavaModelCompletion.java @@ -82,12 +82,16 @@ public static void complete(Resource resource) { /** * Adds java.lang.Object as default super class to the given * class if the class does not explicitly extend another class. + * java.lang.Object itself is excluded since it has no super + * class, and setting it would cause an infinite loop when transitively + * traversing {@code getSuperClass()}. * * @param javaClass * the class to complete */ public static void addDefaultSuperClass(Class javaClass) { - if (javaClass.getExtends() == null && javaClass.getDefaultExtends() == null) { + if (javaClass.getExtends() == null && javaClass.getDefaultExtends() == null + && !javaClass.isJavaLangObject(javaClass)) { Class objectClass = javaClass.getObjectClass(); ClassifierReference classifierReference = TypesFactory.eINSTANCE.createClassifierReference(); classifierReference.setTarget(objectClass);