private MidExp SimplifyLabelExpImpl( MidLabelExp labelExp, MidBreakExp breakExp, SimplifyEnv env) { if (labelExp.Label == breakExp.Label) { return(breakExp.Value); } return(labelExp); }
private EmitValHLSL EmitExpImpl(MidBreakExp exp, Span span) { var value = EmitVal(exp.Value, span); Label label; if (_labels.TryGetValue(exp.Label, out label)) { label.Emit(value, span); return VoidVal; } var topLabel = _nestedLabels.Peek(); if (topLabel is BreakLabel) { var breakLabel = (BreakLabel)topLabel; if (breakLabel.MidLabel == exp.Label) { breakLabel.Emit(value, span); return VoidVal; } } Diagnostics.Add( Severity.Error, exp.Range, "Control flow to complex for HLSL emit. Sorry."); return new ErrorValHLSL(); }
public void PreEmitExpImpl( MidBreakExp exp, Span span) { PreEmitExp(exp.Value, span); }
private void TransformChildrenImpl( MidBreakExp exp) { exp.Value = Transform(exp.Value); }
private MidExp SimplifyLabelExpImpl( MidLabelExp labelExp, MidBreakExp breakExp, SimplifyEnv env) { if (labelExp.Label == breakExp.Label) { return breakExp.Value; } return labelExp; }