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);