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