91
91
typedef struct _ValaSymbol ValaSymbol;
92
92
typedef struct _ValaSymbolClass ValaSymbolClass;
94
#define VALA_TYPE_VARIABLE (vala_variable_get_type ())
95
#define VALA_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VARIABLE, ValaVariable))
96
#define VALA_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VARIABLE, ValaVariableClass))
97
#define VALA_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VARIABLE))
98
#define VALA_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VARIABLE))
99
#define VALA_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VARIABLE, ValaVariableClass))
101
typedef struct _ValaVariable ValaVariable;
102
typedef struct _ValaVariableClass ValaVariableClass;
94
104
#define VALA_TYPE_LOCAL_VARIABLE (vala_local_variable_get_type ())
95
105
#define VALA_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable))
96
106
#define VALA_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))
238
248
typedef struct _ValaEnum ValaEnum;
239
249
typedef struct _ValaEnumClass ValaEnumClass;
251
#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
252
#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
253
#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
254
#define VALA_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTANT))
255
#define VALA_IS_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTANT))
256
#define VALA_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTANT, ValaConstantClass))
258
typedef struct _ValaConstant ValaConstant;
259
typedef struct _ValaConstantClass ValaConstantClass;
241
261
#define VALA_TYPE_ENUM_VALUE (vala_enum_value_get_type ())
242
262
#define VALA_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ENUM_VALUE, ValaEnumValue))
243
263
#define VALA_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ENUM_VALUE, ValaEnumValueClass))
278
298
typedef struct _ValaDelegate ValaDelegate;
279
299
typedef struct _ValaDelegateClass ValaDelegateClass;
281
#define VALA_TYPE_MEMBER (vala_member_get_type ())
282
#define VALA_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER, ValaMember))
283
#define VALA_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER, ValaMemberClass))
284
#define VALA_IS_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MEMBER))
285
#define VALA_IS_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MEMBER))
286
#define VALA_MEMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MEMBER, ValaMemberClass))
288
typedef struct _ValaMember ValaMember;
289
typedef struct _ValaMemberClass ValaMemberClass;
291
#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
292
#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
293
#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
294
#define VALA_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTANT))
295
#define VALA_IS_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTANT))
296
#define VALA_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTANT, ValaConstantClass))
298
typedef struct _ValaConstant ValaConstant;
299
typedef struct _ValaConstantClass ValaConstantClass;
301
301
#define VALA_TYPE_FIELD (vala_field_get_type ())
302
302
#define VALA_FIELD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FIELD, ValaField))
303
303
#define VALA_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FIELD, ValaFieldClass))
2272
2297
_tmp74_ = FALSE;
2300
if (vala_code_context_get_profile (vala_semantic_analyzer_get_context (analyzer)) == VALA_PROFILE_DOVA) {
2301
ValaMemberAccess* _tmp75_;
2302
ValaMethodCall* _tmp76_;
2303
ValaMethodCall* equals_call;
2304
equals_call = (_tmp76_ = vala_method_call_new ((ValaExpression*) (_tmp75_ = vala_member_access_new (vala_binary_expression_get_left (self), "equals", vala_code_node_get_source_reference ((ValaCodeNode*) self))), vala_code_node_get_source_reference ((ValaCodeNode*) self)), _vala_code_node_unref0 (_tmp75_), _tmp76_);
2305
vala_method_call_add_argument (equals_call, vala_binary_expression_get_right (self));
2306
if (self->priv->_operator == VALA_BINARY_OPERATOR_EQUALITY) {
2307
vala_code_node_replace_expression (vala_code_node_get_parent_node ((ValaCodeNode*) self), (ValaExpression*) self, (ValaExpression*) equals_call);
2308
result = vala_code_node_check ((ValaCodeNode*) equals_call, analyzer);
2309
_vala_code_node_unref0 (equals_call);
2312
ValaUnaryExpression* not;
2313
not = vala_unary_expression_new (VALA_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaExpression*) equals_call, vala_code_node_get_source_reference ((ValaCodeNode*) self));
2314
vala_code_node_replace_expression (vala_code_node_get_parent_node ((ValaCodeNode*) self), (ValaExpression*) self, (ValaExpression*) not);
2315
result = vala_code_node_check ((ValaCodeNode*) not, analyzer);
2316
_vala_code_node_unref0 (not);
2317
_vala_code_node_unref0 (equals_call);
2320
_vala_code_node_unref0 (equals_call);
2276
2323
vala_expression_set_value_type ((ValaExpression*) self, analyzer->bool_type);
2278
gboolean _tmp75_ = FALSE;
2325
gboolean _tmp77_ = FALSE;
2279
2326
if (self->priv->_operator == VALA_BINARY_OPERATOR_BITWISE_AND) {
2282
_tmp75_ = self->priv->_operator == VALA_BINARY_OPERATOR_BITWISE_OR;
2329
_tmp77_ = self->priv->_operator == VALA_BINARY_OPERATOR_BITWISE_OR;
2285
2332
vala_expression_set_value_type ((ValaExpression*) self, vala_expression_get_value_type (vala_binary_expression_get_left (self)));
2287
gboolean _tmp76_ = FALSE;
2334
gboolean _tmp78_ = FALSE;
2288
2335
if (self->priv->_operator == VALA_BINARY_OPERATOR_AND) {
2291
_tmp76_ = self->priv->_operator == VALA_BINARY_OPERATOR_OR;
2338
_tmp78_ = self->priv->_operator == VALA_BINARY_OPERATOR_OR;
2294
gboolean _tmp77_ = FALSE;
2341
gboolean _tmp79_ = FALSE;
2295
2342
if (!vala_data_type_compatible (vala_expression_get_value_type (vala_binary_expression_get_left (self)), analyzer->bool_type)) {
2298
_tmp77_ = !vala_data_type_compatible (vala_expression_get_value_type (vala_binary_expression_get_right (self)), analyzer->bool_type);
2345
_tmp79_ = !vala_data_type_compatible (vala_expression_get_value_type (vala_binary_expression_get_right (self)), analyzer->bool_type);
2301
2348
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2302
2349
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), "Operands must be boolean");
2304
2351
vala_expression_set_value_type ((ValaExpression*) self, analyzer->bool_type);
2306
2353
if (self->priv->_operator == VALA_BINARY_OPERATOR_IN) {
2307
gboolean _tmp78_ = FALSE;
2354
gboolean _tmp80_ = FALSE;
2308
2355
if (vala_data_type_compatible (vala_expression_get_value_type (vala_binary_expression_get_left (self)), analyzer->int_type)) {
2309
_tmp78_ = vala_data_type_compatible (vala_expression_get_value_type (vala_binary_expression_get_right (self)), analyzer->int_type);
2356
_tmp80_ = vala_data_type_compatible (vala_expression_get_value_type (vala_binary_expression_get_right (self)), analyzer->int_type);
2315
2362
if (VALA_IS_ARRAY_TYPE (vala_expression_get_value_type (vala_binary_expression_get_right (self)))) {
2316
2363
if (!vala_data_type_compatible (vala_expression_get_value_type (vala_binary_expression_get_left (self)), vala_array_type_get_element_type (VALA_ARRAY_TYPE (vala_expression_get_value_type (vala_binary_expression_get_right (self)))))) {
2320
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp81_ = g_strdup_printf ("Cannot look for `%s' in `%s'", _tmp79_ = vala_code_node_to_string ((ValaCodeNode*) vala_expression_get_value_type (vala_binary_expression_get_left (self))), _tmp80_ = vala_code_node_to_string ((ValaCodeNode*) vala_expression_get_value_type (vala_binary_expression_get_right (self)))));
2367
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp83_ = g_strdup_printf ("Cannot look for `%s' in `%s'", _tmp81_ = vala_code_node_to_string ((ValaCodeNode*) vala_expression_get_value_type (vala_binary_expression_get_left (self))), _tmp82_ = vala_code_node_to_string ((ValaCodeNode*) vala_expression_get_value_type (vala_binary_expression_get_right (self)))));
2321
2370
_g_free0 (_tmp81_);
2326
ValaSymbol* _tmp82_;
2373
ValaSymbol* _tmp84_;
2327
2374
ValaMethod* contains_method;
2330
ValaMemberAccess* _tmp91_;
2331
ValaMethodCall* _tmp92_;
2377
ValaMemberAccess* _tmp93_;
2378
ValaMethodCall* _tmp94_;
2332
2379
ValaMethodCall* contains_call;
2333
contains_method = (_tmp82_ = vala_data_type_get_member (vala_expression_get_value_type (vala_binary_expression_get_right (self)), "contains"), VALA_IS_METHOD (_tmp82_) ? ((ValaMethod*) _tmp82_) : NULL);
2380
contains_method = (_tmp84_ = vala_data_type_get_member (vala_expression_get_value_type (vala_binary_expression_get_right (self)), "contains"), VALA_IS_METHOD (_tmp84_) ? ((ValaMethod*) _tmp84_) : NULL);
2334
2381
if (contains_method == NULL) {
2337
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp84_ = g_strdup_printf ("`%s' does not have a `contains' method", _tmp83_ = vala_code_node_to_string ((ValaCodeNode*) vala_expression_get_value_type (vala_binary_expression_get_right (self)))));
2340
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2342
_vala_code_node_unref0 (contains_method);
2345
if ((_tmp86_ = vala_collection_get_size ((ValaCollection*) (_tmp85_ = vala_method_get_parameters (contains_method))) != 1, _vala_collection_object_unref0 (_tmp85_), _tmp86_)) {
2348
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp88_ = g_strdup_printf ("`%s' must have one parameter", _tmp87_ = vala_symbol_get_full_name ((ValaSymbol*) contains_method)));
2351
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2353
_vala_code_node_unref0 (contains_method);
2356
if (!vala_data_type_compatible (vala_method_get_return_type (contains_method), analyzer->bool_type)) {
2384
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp86_ = g_strdup_printf ("`%s' does not have a `contains' method", _tmp85_ = vala_code_node_to_string ((ValaCodeNode*) vala_expression_get_value_type (vala_binary_expression_get_right (self)))));
2387
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2389
_vala_code_node_unref0 (contains_method);
2392
if ((_tmp88_ = vala_collection_get_size ((ValaCollection*) (_tmp87_ = vala_method_get_parameters (contains_method))) != 1, _vala_collection_object_unref0 (_tmp87_), _tmp88_)) {
2359
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp90_ = g_strdup_printf ("`%s' must return a boolean value", _tmp89_ = vala_symbol_get_full_name ((ValaSymbol*) contains_method)));
2395
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp90_ = g_strdup_printf ("`%s' must have one parameter", _tmp89_ = vala_symbol_get_full_name ((ValaSymbol*) contains_method)));
2360
2396
_g_free0 (_tmp90_);
2361
2397
_g_free0 (_tmp89_);
2362
2398
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2364
2400
_vala_code_node_unref0 (contains_method);
2367
contains_call = (_tmp92_ = vala_method_call_new ((ValaExpression*) (_tmp91_ = vala_member_access_new (vala_binary_expression_get_right (self), "contains", NULL)), NULL), _vala_code_node_unref0 (_tmp91_), _tmp92_);
2403
if (!vala_data_type_compatible (vala_method_get_return_type (contains_method), analyzer->bool_type)) {
2406
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp92_ = g_strdup_printf ("`%s' must return a boolean value", _tmp91_ = vala_symbol_get_full_name ((ValaSymbol*) contains_method)));
2409
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2411
_vala_code_node_unref0 (contains_method);
2414
contains_call = (_tmp94_ = vala_method_call_new ((ValaExpression*) (_tmp93_ = vala_member_access_new (vala_binary_expression_get_right (self), "contains", NULL)), NULL), _vala_code_node_unref0 (_tmp93_), _tmp94_);
2368
2415
vala_method_call_add_argument (contains_call, vala_binary_expression_get_left (self));
2369
2416
vala_code_node_replace_expression (vala_code_node_get_parent_node ((ValaCodeNode*) self), (ValaExpression*) self, (ValaExpression*) contains_call);
2370
2417
result = vala_code_node_check ((ValaCodeNode*) contains_call, analyzer);