eclipse-xtext / eclipse-xtext/xtext
[Typesystem] Invalid error
Open
Nobody has claimed this yet.
confirmed
- Dominant language
- Java
- Stars
- 831
- Forks
- 330
- Avg merge
- 3d 7h
- Merged PRs (30d)
- 12
Description
When writing the following code we get an invalid error on the call to doSomething.
package foo
import org.eclipse.emf.ecore.EObject
class Test {
new() {
doSomething(getEObject())
}
protected def Parameterised<?> getEObject() {
null
}
def <T extends EObject> void doSomething(Parameterised<T> thing) {
println(thing)
}
private static class Parameterised<T extends EObject> {}
}
The java equivalent however works without any problems:
package foo;
import org.eclipse.emf.ecore.EObject;
public abstract class JavaTest {
public JavaTest() {
doSomething(getEObject());
}
protected Parameterised<?> getEObject() {
return null;
}
public <T extends EObject> void doSomething(Parameterised<T> thing) {
System.out.println(thing);
}
private static class Parameterised<T extends EObject> {}
}
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 by reproducing the Xtend example in the issue and compare its type-checking result with the equivalent Java example. Trace the generic call from getEObject() to doSomething(Parameterised) and confirm the behavior against the reported invalid error; done means the valid call is no longer rejected or the diagnostic is explained by a regression test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100