package bluej.stride.framedjava.ast;
import java.util.List;
import java.util.concurrent.Future;
import java.util.stream.Stream;
import bluej.stride.framedjava.elements.CodeElement;
import bluej.stride.framedjava.errors.ErrorShower;
import bluej.stride.framedjava.frames.ConstructorFrame;
import bluej.stride.generic.InteractionManager;
import threadchecker.OnThread;
import threadchecker.Tag;
import bluej.stride.framedjava.errors.CodeError;
import bluej.stride.framedjava.errors.SyntaxCodeError;
import bluej.stride.framedjava.slots.ExpressionSlot;
import bluej.stride.slots.ChoiceSlot;
public class SuperThisFragment
extends ChoiceSlotFragment{
private final SuperThis value;
private final ExpressionSlot paramsSlot;
private ChoiceSlot<SuperThis> slot;
public SuperThisFragment(SuperThis a)
{
super(null);
this.value = a;
this.paramsSlot = null;
}
@OnThread(Tag.FX)
public SuperThisFragment(ConstructorFrame f, ChoiceSlot<SuperThis> s, ExpressionSlot superThisParamsSlot)
{
super(f);
this.value = s.getValue(SuperThis.EMPTY);
this.paramsSlot = superThisParamsSlot;
this.slot = s;
}
public SuperThis getValue()
{
return value;
}
@Override
public String getJavaCode(Destination dest, ExpressionSlot<?> completing, Parser.DummyNameGenerator dummyNameGenerator)
{
return value.getJavaCode();
}
public void registerSlot(ChoiceSlot<SuperThis> slot)
{
this.slot = slot;
}
@Override
public Stream findEarlyErrors()
{
if (value == null || value == SuperThis.EMPTY)
{
return Stream.of(new SyntaxCodeError(this, "Cannot be empty; must be super or this"));
}
else
{
return Stream.empty();
}
}
public Future> findLateErrors(InteractionManager editor, CodeElement parent)
{
return null;
}
@Override
protected @OnThread(Tag.FX) JavaFragment getCompileErrorRedirect()
{
if (paramsSlot != null)
return paramsSlot.getSlotElement();
else{ return super.getCompileErrorRedirect();
}
}
@Override
public @OnThread(Tag.FX) ErrorShower getErrorShower()
{
if (paramsSlot != null)
return paramsSlot;
else{ return super.getErrorShower();
}
}
}
top,
use,
map,
class SuperThisFragment
. SuperThisFragment
. SuperThisFragment
. getValue
. getJavaCode
. registerSlot
. findEarlyErrors
. findLateErrors
114 neLoCode
+ 0 LoComm