static gboolean vala_addressof_expression_real_check (ValaCodeNode* base, ValaCodeContext* context) {
	ValaAddressofExpression * self;
	gboolean result = FALSE;
	gboolean _tmp0_;
	gboolean _tmp1_;
	ValaExpression* _tmp4_;
	ValaExpression* _tmp5_;
	ValaExpression* _tmp6_;
	ValaExpression* _tmp7_;
	ValaCodeContext* _tmp8_;
	gboolean _tmp9_ = FALSE;
	ValaExpression* _tmp10_;
	ValaExpression* _tmp11_;
	ValaElementAccess* _tmp12_;
	ValaElementAccess* ea;
	gboolean _tmp13_ = FALSE;
	ValaExpression* _tmp14_;
	ValaExpression* _tmp15_;
	gboolean _tmp20_;
	ValaExpression* _tmp38_;
	ValaExpression* _tmp39_;
	ValaDataType* _tmp40_;
	ValaDataType* _tmp41_;
	gboolean _tmp42_ = FALSE;
	gboolean _tmp57_;
	gboolean _tmp58_;
	self = (ValaAddressofExpression*) base;
	g_return_val_if_fail (context != NULL, FALSE);
	_tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
	_tmp1_ = _tmp0_;
	if (_tmp1_) {
		gboolean _tmp2_;
		gboolean _tmp3_;
		_tmp2_ = vala_code_node_get_error ((ValaCodeNode*) self);
		_tmp3_ = _tmp2_;
		result = !_tmp3_;
		return result;
	}
	vala_code_node_set_checked ((ValaCodeNode*) self, TRUE);
	_tmp4_ = vala_addressof_expression_get_inner (self);
	_tmp5_ = _tmp4_;
	vala_expression_set_lvalue (_tmp5_, TRUE);
	_tmp6_ = vala_addressof_expression_get_inner (self);
	_tmp7_ = _tmp6_;
	_tmp8_ = context;
	_tmp9_ = vala_code_node_check ((ValaCodeNode*) _tmp7_, _tmp8_);
	if (!_tmp9_) {
		vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
		result = FALSE;
		return result;
	}
	_tmp10_ = vala_addressof_expression_get_inner (self);
	_tmp11_ = _tmp10_;
	_tmp12_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, VALA_TYPE_ELEMENT_ACCESS) ? ((ValaElementAccess*) _tmp11_) : NULL);
	ea = _tmp12_;
	_tmp14_ = vala_addressof_expression_get_inner (self);
	_tmp15_ = _tmp14_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_MEMBER_ACCESS)) {
		ValaExpression* _tmp16_;
		ValaExpression* _tmp17_;
		ValaSymbol* _tmp18_;
		ValaSymbol* _tmp19_;
		_tmp16_ = vala_addressof_expression_get_inner (self);
		_tmp17_ = _tmp16_;
		_tmp18_ = vala_expression_get_symbol_reference (_tmp17_);
		_tmp19_ = _tmp18_;
		_tmp13_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_VARIABLE);
	} else {
		_tmp13_ = FALSE;
	}
	_tmp20_ = _tmp13_;
	if (_tmp20_) {
	} else {
		gboolean _tmp21_ = FALSE;
		ValaElementAccess* _tmp22_;
		gboolean _tmp35_;
		_tmp22_ = ea;
		if (_tmp22_ != NULL) {
			gboolean _tmp23_ = FALSE;
			ValaElementAccess* _tmp24_;
			ValaExpression* _tmp25_;
			ValaExpression* _tmp26_;
			ValaDataType* _tmp27_;
			ValaDataType* _tmp28_;
			gboolean _tmp34_;
			_tmp24_ = ea;
			_tmp25_ = vala_element_access_get_container (_tmp24_);
			_tmp26_ = _tmp25_;
			_tmp27_ = vala_expression_get_value_type (_tmp26_);
			_tmp28_ = _tmp27_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, VALA_TYPE_ARRAY_TYPE)) {
				_tmp23_ = TRUE;
			} else {
				ValaElementAccess* _tmp29_;
				ValaExpression* _tmp30_;
				ValaExpression* _tmp31_;
				ValaDataType* _tmp32_;
				ValaDataType* _tmp33_;
				_tmp29_ = ea;
				_tmp30_ = vala_element_access_get_container (_tmp29_);
				_tmp31_ = _tmp30_;
				_tmp32_ = vala_expression_get_value_type (_tmp31_);
				_tmp33_ = _tmp32_;
				_tmp23_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_POINTER_TYPE);
			}
			_tmp34_ = _tmp23_;
			_tmp21_ = _tmp34_;
		} else {
			_tmp21_ = FALSE;
		}
		_tmp35_ = _tmp21_;
		if (_tmp35_) {
		} else {
			ValaSourceReference* _tmp36_;
			ValaSourceReference* _tmp37_;
			vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
			_tmp36_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
			_tmp37_ = _tmp36_;
			vala_report_error (_tmp37_, "Address-of operator not supported for this expression");
			result = FALSE;
			_vala_code_node_unref0 (ea);
			return result;
		}
	}
	_tmp38_ = vala_addressof_expression_get_inner (self);
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_expression_get_value_type (_tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = vala_data_type_is_reference_type_or_type_parameter (_tmp41_);
	if (_tmp42_) {
		ValaExpression* _tmp43_;
		ValaExpression* _tmp44_;
		ValaDataType* _tmp45_;
		ValaDataType* _tmp46_;
		ValaPointerType* _tmp47_;
		ValaPointerType* _tmp48_;
		ValaPointerType* _tmp49_;
		ValaPointerType* _tmp50_;
		_tmp43_ = vala_addressof_expression_get_inner (self);
		_tmp44_ = _tmp43_;
		_tmp45_ = vala_expression_get_value_type (_tmp44_);
		_tmp46_ = _tmp45_;
		_tmp47_ = vala_pointer_type_new (_tmp46_, NULL);
		_tmp48_ = _tmp47_;
		_tmp49_ = vala_pointer_type_new ((ValaDataType*) _tmp48_, NULL);
		_tmp50_ = _tmp49_;
		vala_expression_set_value_type ((ValaExpression*) self, (ValaDataType*) _tmp50_);
		_vala_code_node_unref0 (_tmp50_);
		_vala_code_node_unref0 (_tmp48_);
	} else {
		ValaExpression* _tmp51_;
		ValaExpression* _tmp52_;
		ValaDataType* _tmp53_;
		ValaDataType* _tmp54_;
		ValaPointerType* _tmp55_;
		ValaPointerType* _tmp56_;
		_tmp51_ = vala_addressof_expression_get_inner (self);
		_tmp52_ = _tmp51_;
		_tmp53_ = vala_expression_get_value_type (_tmp52_);
		_tmp54_ = _tmp53_;
		_tmp55_ = vala_pointer_type_new (_tmp54_, NULL);
		_tmp56_ = _tmp55_;
		vala_expression_set_value_type ((ValaExpression*) self, (ValaDataType*) _tmp56_);
		_vala_code_node_unref0 (_tmp56_);
	}
	_tmp57_ = vala_code_node_get_error ((ValaCodeNode*) self);
	_tmp58_ = _tmp57_;
	result = !_tmp58_;
	_vala_code_node_unref0 (ea);
	return result;
}
Esempio n. 2
0
static gboolean vala_unlock_statement_real_check (ValaCodeNode* base, ValaCodeContext* context) {
	ValaUnlockStatement * self;
	gboolean result = FALSE;
	gboolean _tmp0_;
	gboolean _tmp1_;
	ValaExpression* _tmp4_;
	ValaCodeContext* _tmp5_;
	gboolean _tmp6_ = FALSE;
	ValaExpression* _tmp7_;
	gboolean _tmp11_;
	ValaExpression* _tmp16_;
	ValaSymbol* _tmp17_;
	ValaSymbol* _tmp18_;
	ValaSymbol* _tmp19_;
	ValaSymbol* _tmp20_;
	ValaCodeContext* _tmp21_;
	ValaSemanticAnalyzer* _tmp22_;
	ValaSemanticAnalyzer* _tmp23_;
	ValaClass* _tmp24_;
	ValaClass* _tmp25_;
	ValaExpression* _tmp30_;
	ValaSymbol* _tmp31_;
	ValaSymbol* _tmp32_;
	gboolean _tmp33_;
	gboolean _tmp34_;
	self = (ValaUnlockStatement*) base;
	g_return_val_if_fail (context != NULL, FALSE);
	_tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
	_tmp1_ = _tmp0_;
	if (_tmp1_) {
		gboolean _tmp2_;
		gboolean _tmp3_;
		_tmp2_ = vala_code_node_get_error ((ValaCodeNode*) self);
		_tmp3_ = _tmp2_;
		result = !_tmp3_;
		return result;
	}
	vala_code_node_set_checked ((ValaCodeNode*) self, TRUE);
	_tmp4_ = self->priv->_resource;
	_tmp5_ = context;
	vala_code_node_check ((ValaCodeNode*) _tmp4_, _tmp5_);
	_tmp7_ = self->priv->_resource;
	if (VALA_IS_MEMBER_ACCESS (_tmp7_)) {
		ValaExpression* _tmp8_;
		ValaSymbol* _tmp9_;
		ValaSymbol* _tmp10_;
		_tmp8_ = self->priv->_resource;
		_tmp9_ = vala_expression_get_symbol_reference (_tmp8_);
		_tmp10_ = _tmp9_;
		_tmp6_ = VALA_IS_LOCKABLE (_tmp10_);
	} else {
		_tmp6_ = FALSE;
	}
	_tmp11_ = _tmp6_;
	if (!_tmp11_) {
		ValaExpression* _tmp12_;
		ValaExpression* _tmp13_;
		ValaSourceReference* _tmp14_;
		ValaSourceReference* _tmp15_;
		vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
		_tmp12_ = self->priv->_resource;
		vala_code_node_set_error ((ValaCodeNode*) _tmp12_, TRUE);
		_tmp13_ = self->priv->_resource;
		_tmp14_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp13_);
		_tmp15_ = _tmp14_;
		vala_report_error (_tmp15_, "Expression is either not a member access or does not denote a lockable" \
" member");
		result = FALSE;
		return result;
	}
	_tmp16_ = self->priv->_resource;
	_tmp17_ = vala_expression_get_symbol_reference (_tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_symbol_get_parent_symbol (_tmp18_);
	_tmp20_ = _tmp19_;
	_tmp21_ = context;
	_tmp22_ = vala_code_context_get_analyzer (_tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_semantic_analyzer_get_current_class (_tmp23_);
	_tmp25_ = _tmp24_;
	if (_tmp20_ != VALA_SYMBOL (_tmp25_)) {
		ValaExpression* _tmp26_;
		ValaExpression* _tmp27_;
		ValaSourceReference* _tmp28_;
		ValaSourceReference* _tmp29_;
		vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
		_tmp26_ = self->priv->_resource;
		vala_code_node_set_error ((ValaCodeNode*) _tmp26_, TRUE);
		_tmp27_ = self->priv->_resource;
		_tmp28_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp27_);
		_tmp29_ = _tmp28_;
		vala_report_error (_tmp29_, "Only members of the current class are lockable");
	}
	_tmp30_ = self->priv->_resource;
	_tmp31_ = vala_expression_get_symbol_reference (_tmp30_);
	_tmp32_ = _tmp31_;
	vala_lockable_set_lock_used (VALA_LOCKABLE (_tmp32_), TRUE);
	_tmp33_ = vala_code_node_get_error ((ValaCodeNode*) self);
	_tmp34_ = _tmp33_;
	result = !_tmp34_;
	return result;
}