eclipse-xtext / eclipse-xtext/xtext
type error for double arrow operator
Open
Nobody has claimed this yet.
bug
confirmed
- Dominant language
- Java
- Stars
- 831
- Forks
- 330
- Avg merge
- 3d 7h
- Merged PRs (30d)
- 12
Description
class MySup {
}
class MySub extends MySup{
}
class LazyExtension {
def <T> T lazy(T t, ()=>T init) {
var result = t
if(result==null)
result = init.apply()
return result
}
}
class TestLazy{
extension LazyExtension = new LazyExtension()
MySup o
def MySup testLazy() {
return o.lazy[
// val a = new MySub()=>[]
// return a
return new MySub()=>[]
]
}
}
Now the generated Java code has a compilation error in the type cast:
public class TestLazy {
@Extension
private LazyExtension _lazyExtension = new LazyExtension();
private MySup o;
public MySup testLazy() {
final Function0<MySup> _function = () -> {
MySub _mySub = new MySub();
final Procedure1<MySub> _function_1 = (MySub it) -> {
};
final Procedure1<MySub> _final_function_1 = _function_1;
return ObjectExtensions.<MySup>operator_doubleArrow(_mySub, ((Procedure1<? super MySup>)_final_function_1));
};
return this._lazyExtension.<MySup>lazy(this.o, _function);
}
}
return new MySub()=>[]
should have worked, but it is now worked around by:
val a = new MySub()=>[]
return a
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 the Java reproducer and the generated TestLazy.testLazy output, focusing on the double arrow operator and the cast to Procedure1<? super MySup>. Compare this with the working local-variable variant; done means the direct return new MySub() => [] generates Java that compiles without the type error.
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
- 45/100