protected void _format(final XIfExpression expr, @Extension final IFormattableDocument format) { EObject _eContainer = expr.eContainer(); if ((_eContainer instanceof XVariableDeclaration)) { final Procedure1<IHiddenRegionFormatter> _function = (IHiddenRegionFormatter it) -> { final boolean multiline = (this.isMultilineOrInNewLine(expr.getThen()) || this.isMultilineOrInNewLine(expr.getElse())); final Procedure1<IHiddenRegionFormatter> _function_1 = (IHiddenRegionFormatter it) -> { it.noSpace(); }; format.<XExpression>surround(expr.getIf(), _function_1); if (((expr.getThen() instanceof XBlockExpression) || multiline)) { format.append(this.textRegionExtensions.regionFor(expr).keyword("if"), XbaseFormatterPreferenceKeys.whitespaceBetweenKeywordAndParenthesisML); } else { format.append(this.textRegionExtensions.regionFor(expr).keyword("if"), XbaseFormatterPreferenceKeys.whitespaceBetweenKeywordAndParenthesisSL); format.<XExpression>format(expr.getIf()); XExpression _else = expr.getElse(); boolean _tripleEquals = (_else == null); if (_tripleEquals) { this.formatBody(expr.getThen(), multiline, format); } else { this.formatBodyInline(expr.getThen(), multiline, format); if (((expr.getElse() instanceof XIfExpression) || (!multiline))) { final Procedure1<IHiddenRegionFormatter> _function_2 = (IHiddenRegionFormatter it) -> { it.oneSpace(); }; format.<XExpression>prepend(expr.getElse(), _function_2); format.<XExpression>format(expr.getElse()); } else { this.formatBody(expr.getElse(), multiline, format);
return; if (expression.eContainer() instanceof XIfExpression) { XIfExpression container = (XIfExpression) expression.eContainer(); if (container.getElse() == expression) { return;
/** * Only for testing purpose. * @nooverride This method is not intended to be re-implemented or extended by clients. * @noreference This method is not intended to be referenced by clients. */ /* @Nullable */ protected XExpression getElse(XIfExpression ifExpression) { return ifExpression.getElse(); }
/** * Only for testing purpose. * @nooverride This method is not intended to be re-implemented or extended by clients. * @noreference This method is not intended to be referenced by clients. */ /* @Nullable */ protected XExpression getThen(XIfExpression ifExpression) { return ifExpression.getThen(); }
protected void _computeTypes(XIfExpression object, ITypeComputationState state) { ITypeComputationState conditionExpectation = state.withExpectation(getRawTypeForName(Boolean.TYPE, state)); XExpression condition = object.getIf(); conditionExpectation.computeTypes(condition); // TODO then expression may influence the expected type of else and vice versa XExpression thenExpression = getThen(object); ITypeComputationState thenState = reassignCheckedType(condition, thenExpression, state); ITypeComputationResult thenResult = thenState.computeTypes(thenExpression); XExpression elseExpression = getElse(object); if (elseExpression != null) { state.computeTypes(elseExpression); } else { BranchExpressionProcessor processor = new BranchExpressionProcessor(state, object) { @Override protected String getMessage() { return "Missing else branch for conditional expression with primitive type"; } }; processor.process(thenResult); processor.commit(); } }
protected void _format(final XIfExpression expr, final FormattableDocument format) { EObject _eContainer = expr.eContainer(); if ((_eContainer instanceof XVariableDeclaration)) { final Procedure1<FormattingDataInit> _function = (FormattingDataInit it) -> { final INode thennode = this._nodeModelAccess.nodeForEObject(expr.getThen()); XExpression _else = expr.getElse(); INode _nodeForEObject = null; if (_else!=null) { Function1<? super FormattableDocument, ? extends Iterable<FormattingData>> _surround = this._formattingDataFactory.surround(this._nodeModelAccess.nodeForFeature(expr, XbasePackage.Literals.XIF_EXPRESSION__IF), _function_2); format.operator_add(_surround); if (((expr.getThen() instanceof XBlockExpression) || multiline)) { final Procedure1<FormattingDataInit> _function_3 = (FormattingDataInit it) -> { it.cfg(XbaseFormatterPreferenceKeys.whitespaceBetweenKeywordAndParenthesisML); XExpression _then = expr.getThen(); if ((_then instanceof XBlockExpression)) { final Procedure1<FormattingDataInit> _function_5 = (FormattingDataInit it) -> { Function1<? super FormattableDocument, ? extends Iterable<FormattingData>> _prepend = this._formattingDataFactory.prepend(thennode, _function_5); format.operator_add(_prepend); XExpression _else_1 = expr.getElse(); boolean _tripleNotEquals = (_else_1 != null); if (_tripleNotEquals) { Function1<? super FormattableDocument, ? extends Iterable<FormattingData>> _prepend_1 = this._formattingDataFactory.prepend(thennode, _function_7); format.operator_add(_prepend_1); XExpression _else_2 = expr.getElse(); boolean _tripleNotEquals_1 = (_else_2 != null);
protected Object _doEvaluate(XIfExpression ifExpression, IEvaluationContext context, CancelIndicator indicator) { Object conditionResult = internalEvaluate(ifExpression.getIf(), context, indicator); if (Boolean.TRUE.equals(conditionResult)) { return internalEvaluate(ifExpression.getThen(), context, indicator); } else { if (ifExpression.getElse() == null) return getDefaultObjectValue(typeResolver.resolveTypes(ifExpression).getActualType(ifExpression)); return internalEvaluate(ifExpression.getElse(), context, indicator); } }
protected Collection<IEarlyExitComputer.ExitPoint> _exitPoints(final XIfExpression expression) { Collection<IEarlyExitComputer.ExitPoint> ifExitPoints = this.getExitPoints(expression.getIf()); boolean _isNotEmpty = this.isNotEmpty(ifExitPoints); if (_isNotEmpty) { return ifExitPoints; } Collection<IEarlyExitComputer.ExitPoint> thenExitPoints = this.getExitPoints(expression.getThen()); Collection<IEarlyExitComputer.ExitPoint> elseExitPoints = this.getExitPoints(expression.getElse()); if ((this.isNotEmpty(thenExitPoints) && this.isNotEmpty(elseExitPoints))) { Collection<IEarlyExitComputer.ExitPoint> result = Lists.<IEarlyExitComputer.ExitPoint>newArrayList(thenExitPoints); result.addAll(elseExitPoints); return result; } return Collections.<IEarlyExitComputer.ExitPoint>emptyList(); }
/** Test if the given expression has side effects. * * @param expression the expression. * @param context the list of context expressions. * @return {@code true} if the expression has side effects. */ protected Boolean _hasSideEffects(XIfExpression expression, ISideEffectContext context) { if (hasSideEffects(expression.getIf(), context)) { return true; } final Map<String, List<XExpression>> buffer1 = context.createVariableAssignmentBufferForBranch(); if (hasSideEffects(expression.getThen(), context.branch(buffer1))) { return true; } final Map<String, List<XExpression>> buffer2 = context.createVariableAssignmentBufferForBranch(); if (hasSideEffects(expression.getElse(), context.branch(buffer2))) { return true; } context.mergeBranchVariableAssignments(Arrays.asList(buffer1, buffer2)); return false; }
protected void _toJavaStatement(XIfExpression expr, ITreeAppendable b, boolean isReferenced) { if (isReferenced) declareSyntheticVariable(expr, b); internalToJavaStatement(expr.getIf(), b, true); b.newLine().append("if ("); internalToJavaExpression(expr.getIf(), b); b.append(") {").increaseIndentation(); final boolean canBeReferenced = isReferenced && !isPrimitiveVoid(expr.getThen()); internalToJavaStatement(expr.getThen(), b, canBeReferenced); if (canBeReferenced) { b.newLine(); b.append(getVarName(expr, b)); b.append(" = "); internalToConvertedExpression(expr.getThen(), b, getLightweightType(expr)); b.append(";"); if (expr.getElse() != null) { b.append(" else {").increaseIndentation(); final boolean canElseBeReferenced = isReferenced && !isPrimitiveVoid(expr.getElse()); internalToJavaStatement(expr.getElse(), b, canElseBeReferenced); if (canElseBeReferenced) { b.newLine(); b.append(getVarName(expr, b)); b.append(" = "); internalToConvertedExpression(expr.getElse(), b, getLightweightType(expr)); b.append(";");
} else if (expr instanceof XIfExpression) { XIfExpression ifExpr = (XIfExpression) expr; checkInitializationRec(ifExpr.getIf(), fields, initializedForSure, initializedMaybe, visited); checkInitializationRec(ifExpr.getThen(), fields, initializedThenForSure, initializedThenMaybe, visited); if (ifExpr.getElse() != null) { Set<JvmField> initializedElseForSure = Sets.newLinkedHashSet(initializedForSure); Set<JvmField> initializedElseMaybe = Sets.newLinkedHashSet(initializedMaybe); checkInitializationRec(ifExpr.getElse(), fields, initializedElseForSure, initializedElseMaybe, visited);
generate(ifStatement.getIf(), it, context); it.append(":"); //$NON-NLS-1$ it.increaseIndentation().newLine(); if (ifStatement.getThen() != null) { generate(ifStatement.getThen(), context.getExpectedExpressionType(), it, context); } else if (context.getExpectedExpressionType() == null) { it.append("pass"); //$NON-NLS-1$ if (ifStatement.getElse() != null) { it.newLine().append("else:"); //$NON-NLS-1$ it.increaseIndentation().newLine(); generate(ifStatement.getElse(), context.getExpectedExpressionType(), it, context); it.decreaseIndentation(); } else if (context.getExpectedExpressionType() != null) {