protected void _computeTypes(XDoWhileExpression object, ITypeComputationState state) {
		ITypeComputationResult loopBodyResult = computeWhileLoopBody(object, state, false);
		boolean noImplicitReturn = (loopBodyResult.getConformanceFlags() & ConformanceFlags.NO_IMPLICIT_RETURN) != 0;
		LightweightTypeReference primitiveVoid = getPrimitiveVoid(state);
		if (noImplicitReturn)
			state.acceptActualType(primitiveVoid, ConformanceFlags.NO_IMPLICIT_RETURN | ConformanceFlags.UNCHECKED);
		else
			state.acceptActualType(primitiveVoid);
	}
protected void _computeTypes ( XDoWhileExpression object , ITypeComputationState state ) { ITypeComputationResult loopBodyResult = computeWhileLoopBody ( object , state , false ) ; boolean noImplicitReturn = ( loopBodyResult . getConformanceFlags ( ) & ConformanceFlags . NO_IMPLICIT_RETURN ) != 0 ; LightweightTypeReference primitiveVoid = getPrimitiveVoid ( state ) ; if ( noImplicitReturn ) state . acceptActualType ( primitiveVoid , ConformanceFlags . NO_IMPLICIT_RETURN | ConformanceFlags . UNCHECKED ) ; else state . acceptActualType ( primitiveVoid ) ; }
Since we are sure that the loop body is executed at least once, the early exit information
of the loop body expression can be used for the outer expression.