eclipse-xtext / eclipse-xtext/xtext
Exception while performing Rename Refactoring
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 831
- Forks
- 330
- Avg merge
- 3d 7h
- Merged PRs (30d)
- 12
Description
Given is the following java project with Xtend and Java files: test.zip.
An Exception is thrown when performing a Rename Refactoring (Alt+Shift+R) on the variable ARROWHEAD__E.


java.util.NoSuchElementException
at com.google.common.collect.Iterables.getLast(Iterables.java:786)
at org.eclipse.xtend.core.typesystem.LocalClassAwareTypeNames.doVisitParameterizedTypeReference(LocalClassAwareTypeNames.java:37)
at org.eclipse.xtext.xbase.typesystem.util.HumanReadableTypeNames.doVisitParameterizedTypeReference(HumanReadableTypeNames.java:27)
at org.eclipse.xtext.xbase.typesystem.references.ParameterizedTypeReference.accept(ParameterizedTypeReference.java:828)
at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference.getHumanReadableName(LightweightTypeReference.java:607)
at org.eclipse.xtext.xbase.annotations.validation.UnresolvedFeatureCallTypeAwareMessageProvider.lambda$handleUnresolvedFeatureCall$1(UnresolvedFeatureCallTypeAwareMessageProvider.java:122)
at org.eclipse.xtext.xbase.lib.IteratorExtensions.join(IteratorExtensions.java:457)
at org.eclipse.xtext.xbase.lib.IterableExtensions.join(IterableExtensions.java:414)
at org.eclipse.xtext.xbase.annotations.validation.UnresolvedFeatureCallTypeAwareMessageProvider.handleUnresolvedFeatureCall(UnresolvedFeatureCallTypeAwareMessageProvider.java:126)
at org.eclipse.xtext.xbase.annotations.validation.UnresolvedFeatureCallTypeAwareMessageProvider.getUnresolvedProxyMessage(UnresolvedFeatureCallTypeAwareMessageProvider.java:90)
at org.eclipse.xtext.xbase.annotations.validation.UnresolvedAnnotationTypeAwareMessageProvider.getUnresolvedProxyMessage(UnresolvedAnnotationTypeAwareMessageProvider.java:28)
at org.eclipse.xtext.xbase.typesystem.internal.AbstractUnresolvableReferenceWithNode.applyToModel(AbstractUnresolvableReferenceWithNode.java:46)
at org.eclipse.xtext.xbase.typesystem.internal.RootResolvedTypes.resolveProxies(RootResolvedTypes.java:64)
at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.resolve(DefaultReentrantTypeResolver.java:165)
at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.reentrantResolve(DefaultReentrantTypeResolver.java:139)
at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:108)
at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:161)
at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getActualType(CompoundReentrantTypeResolver.java:153)
at org.eclipse.xtext.xbase.typesystem.internal.ForwardingResolvedTypes.getActualType(ForwardingResolvedTypes.java:40)
at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypReferenceWithAnotherTypeReference(LogicalContainerAwareReentrantTypeResolver.java:200)
at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypeReference(LogicalContainerAwareReentrantTypeResolver.java:192)
at org.eclipse.xtext.xbase.typesystem.util.AbstractReentrantTypeReferenceProvider.getTypeReference(AbstractReentrantTypeReferenceProvider.java:28)
at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.getEquivalent(XComputedTypeReferenceImplCustom.java:46)
at org.eclipse.xtext.common.types.impl.JvmSpecializedTypeReferenceImpl.eGet(JvmSpecializedTypeReferenceImpl.java:143)
at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImpl.eGet(XComputedTypeReferenceImpl.java:115)
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1011)
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1003)
at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:198)
at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:99)
at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:213)
at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:99)
at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:213)
at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:99)
at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:207)
at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:99)
at org.eclipse.xtext.findReferences.ReferenceFinder.findReferences(ReferenceFinder.java:139)
at org.eclipse.xtext.findReferences.ReferenceFinder.findReferences(ReferenceFinder.java:125)
at org.eclipse.xtext.ui.refactoring.ui.DefaultLinkedPositionGroupCalculator.getLinkedPositionGroup(DefaultLinkedPositionGroupCalculator.java:167)
at org.eclipse.xtext.ui.refactoring.ui.RenameRefactoringController$1.run(RenameRefactoringController.java:145)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with LocalClassAwareTypeNames.java, where the stack trace reports the NoSuchElementException, then trace how RenameRefactoringController.java reaches it through reference finding. Reproduce Alt+Shift+R on ARROWHEAD__E in the attached project and confirm the refactoring completes without throwing the exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- developer-experience, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100