~ubuntu-branches/ubuntu/vivid/vala/vivid

« back to all changes in this revision

Viewing changes to vala/valamethod.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2010-07-28 07:58:01 UTC
  • mfrom: (1.5.5 upstream) (7.3.14 experimental)
  • Revision ID: james.westby@ubuntu.com-20100728075801-18u9cg5hv5oety6m
Tags: 0.9.4-1
New upstream development release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
95
95
typedef struct _ValaSymbol ValaSymbol;
96
96
typedef struct _ValaSymbolClass ValaSymbolClass;
97
97
 
 
98
#define VALA_TYPE_VARIABLE (vala_variable_get_type ())
 
99
#define VALA_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VARIABLE, ValaVariable))
 
100
#define VALA_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VARIABLE, ValaVariableClass))
 
101
#define VALA_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VARIABLE))
 
102
#define VALA_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VARIABLE))
 
103
#define VALA_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VARIABLE, ValaVariableClass))
 
104
 
 
105
typedef struct _ValaVariable ValaVariable;
 
106
typedef struct _ValaVariableClass ValaVariableClass;
 
107
 
98
108
#define VALA_TYPE_LOCAL_VARIABLE (vala_local_variable_get_type ())
99
109
#define VALA_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable))
100
110
#define VALA_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))
116
126
typedef struct _ValaAttributeClass ValaAttributeClass;
117
127
typedef struct _ValaSymbolPrivate ValaSymbolPrivate;
118
128
 
119
 
#define VALA_TYPE_MEMBER (vala_member_get_type ())
120
 
#define VALA_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER, ValaMember))
121
 
#define VALA_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER, ValaMemberClass))
122
 
#define VALA_IS_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MEMBER))
123
 
#define VALA_IS_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MEMBER))
124
 
#define VALA_MEMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MEMBER, ValaMemberClass))
125
 
 
126
 
typedef struct _ValaMember ValaMember;
127
 
typedef struct _ValaMemberClass ValaMemberClass;
128
 
typedef struct _ValaMemberPrivate ValaMemberPrivate;
129
 
 
130
129
#define VALA_TYPE_METHOD (vala_method_get_type ())
131
130
#define VALA_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_METHOD, ValaMethod))
132
131
#define VALA_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_METHOD, ValaMethodClass))
370
369
typedef struct _ValaEnum ValaEnum;
371
370
typedef struct _ValaEnumClass ValaEnumClass;
372
371
 
 
372
#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
 
373
#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
 
374
#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
 
375
#define VALA_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTANT))
 
376
#define VALA_IS_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTANT))
 
377
#define VALA_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTANT, ValaConstantClass))
 
378
 
 
379
typedef struct _ValaConstant ValaConstant;
 
380
typedef struct _ValaConstantClass ValaConstantClass;
 
381
 
373
382
#define VALA_TYPE_ENUM_VALUE (vala_enum_value_get_type ())
374
383
#define VALA_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ENUM_VALUE, ValaEnumValue))
375
384
#define VALA_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ENUM_VALUE, ValaEnumValueClass))
410
419
typedef struct _ValaDelegate ValaDelegate;
411
420
typedef struct _ValaDelegateClass ValaDelegateClass;
412
421
 
413
 
#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
414
 
#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
415
 
#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
416
 
#define VALA_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTANT))
417
 
#define VALA_IS_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTANT))
418
 
#define VALA_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTANT, ValaConstantClass))
419
 
 
420
 
typedef struct _ValaConstant ValaConstant;
421
 
typedef struct _ValaConstantClass ValaConstantClass;
422
 
 
423
422
#define VALA_TYPE_FIELD (vala_field_get_type ())
424
423
#define VALA_FIELD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FIELD, ValaField))
425
424
#define VALA_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FIELD, ValaFieldClass))
1071
1070
typedef struct _ValaErrorType ValaErrorType;
1072
1071
typedef struct _ValaErrorTypeClass ValaErrorTypeClass;
1073
1072
 
 
1073
#define VALA_TYPE_PROFILE (vala_profile_get_type ())
 
1074
 
1074
1075
#define VALA_TYPE_VOID_TYPE (vala_void_type_get_type ())
1075
1076
#define VALA_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VOID_TYPE, ValaVoidType))
1076
1077
#define VALA_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VOID_TYPE, ValaVoidTypeClass))
1148
1149
        void (*process_deprecated_attribute) (ValaSymbol* self, ValaAttribute* attr);
1149
1150
};
1150
1151
 
1151
 
struct _ValaMember {
 
1152
struct _ValaMethod {
1152
1153
        ValaSymbol parent_instance;
1153
 
        ValaMemberPrivate * priv;
1154
 
};
1155
 
 
1156
 
struct _ValaMemberClass {
1157
 
        ValaSymbolClass parent_class;
1158
 
};
1159
 
 
1160
 
struct _ValaMethod {
1161
 
        ValaMember parent_instance;
1162
1154
        ValaMethodPrivate * priv;
1163
1155
};
1164
1156
 
1165
1157
struct _ValaMethodClass {
1166
 
        ValaMemberClass parent_class;
 
1158
        ValaSymbolClass parent_class;
1167
1159
        char* (*get_default_cname) (ValaMethod* self);
1168
1160
        char* (*get_real_cname) (ValaMethod* self);
1169
1161
};
1254
1246
        void (*visit_error_domain) (ValaCodeVisitor* self, ValaErrorDomain* edomain);
1255
1247
        void (*visit_error_code) (ValaCodeVisitor* self, ValaErrorCode* ecode);
1256
1248
        void (*visit_delegate) (ValaCodeVisitor* self, ValaDelegate* d);
1257
 
        void (*visit_member) (ValaCodeVisitor* self, ValaMember* m);
1258
1249
        void (*visit_constant) (ValaCodeVisitor* self, ValaConstant* c);
1259
1250
        void (*visit_field) (ValaCodeVisitor* self, ValaField* f);
1260
1251
        void (*visit_method) (ValaCodeVisitor* self, ValaMethod* m);
1370
1361
        ValaCodeVisitorClass parent_class;
1371
1362
};
1372
1363
 
 
1364
typedef enum  {
 
1365
        VALA_PROFILE_POSIX,
 
1366
        VALA_PROFILE_GOBJECT,
 
1367
        VALA_PROFILE_DOVA
 
1368
} ValaProfile;
 
1369
 
1373
1370
 
1374
1371
static gpointer vala_method_parent_class = NULL;
1375
1372
 
1391
1388
GType vala_data_type_get_type (void) G_GNUC_CONST;
1392
1389
GType vala_expression_get_type (void) G_GNUC_CONST;
1393
1390
GType vala_symbol_get_type (void) G_GNUC_CONST;
 
1391
GType vala_variable_get_type (void) G_GNUC_CONST;
1394
1392
GType vala_local_variable_get_type (void) G_GNUC_CONST;
1395
1393
GType vala_attribute_get_type (void) G_GNUC_CONST;
1396
 
GType vala_member_get_type (void) G_GNUC_CONST;
1397
1394
GType vala_method_get_type (void) G_GNUC_CONST;
1398
1395
GType vala_typeparameter_get_type (void) G_GNUC_CONST;
1399
1396
gpointer vala_basic_block_ref (gpointer instance);
1426
1423
void vala_value_take_comment (GValue* value, gpointer v_object);
1427
1424
gpointer vala_value_get_comment (const GValue* value);
1428
1425
GType vala_comment_get_type (void) G_GNUC_CONST;
1429
 
ValaMember* vala_member_construct (GType object_type, const char* name, ValaSourceReference* source_reference, ValaComment* comment);
 
1426
ValaSymbol* vala_symbol_construct (GType object_type, const char* name, ValaSourceReference* source_reference, ValaComment* comment);
1430
1427
void vala_method_set_return_type (ValaMethod* self, ValaDataType* value);
1431
1428
void vala_method_set_carray_length_parameter_position (ValaMethod* self, double value);
1432
1429
void vala_method_set_cdelegate_target_parameter_position (ValaMethod* self, double value);
1481
1478
void vala_method_set_cname (ValaMethod* self, const char* cname);
1482
1479
gboolean vala_attribute_has_argument (ValaAttribute* self, const char* name);
1483
1480
char* vala_attribute_get_string (ValaAttribute* self, const char* name);
1484
 
void vala_member_add_cheader_filename (ValaMember* self, const char* filename);
 
1481
void vala_symbol_add_cheader_filename (ValaSymbol* self, const char* filename);
1485
1482
void vala_method_set_vfunc_name (ValaMethod* self, const char* value);
1486
1483
void vala_method_set_sentinel (ValaMethod* self, const char* value);
1487
1484
double vala_attribute_get_double (ValaAttribute* self, const char* name);
1523
1520
GType vala_member_access_get_type (void) G_GNUC_CONST;
1524
1521
ValaDataType* vala_data_type_get_actual_type (ValaDataType* self, ValaDataType* derived_instance_type, ValaMemberAccess* method_access, ValaCodeNode* node_reference);
1525
1522
gboolean vala_data_type_equals (ValaDataType* self, ValaDataType* type2);
1526
 
ValaDataType* vala_formal_parameter_get_parameter_type (ValaFormalParameter* self);
 
1523
ValaDataType* vala_variable_get_variable_type (ValaVariable* self);
1527
1524
gboolean vala_data_type_compatible (ValaDataType* self, ValaDataType* target_type);
1528
1525
char* vala_code_node_to_string (ValaCodeNode* self);
1529
1526
gboolean vala_method_compatible (ValaMethod* self, ValaMethod* base_method, char** invalid_match);
1591
1588
ValaParameterDirection vala_formal_parameter_get_direction (ValaFormalParameter* self);
1592
1589
GType vala_struct_get_type (void) G_GNUC_CONST;
1593
1590
ValaStruct* vala_semantic_analyzer_get_current_struct (ValaSemanticAnalyzer* self);
1594
 
gboolean vala_member_get_hides (ValaMember* self);
1595
 
ValaSymbol* vala_member_get_hidden_member (ValaMember* self);
 
1591
gboolean vala_symbol_get_hides (ValaSymbol* self);
 
1592
ValaSymbol* vala_symbol_get_hidden_member (ValaSymbol* self);
1596
1593
gboolean vala_semantic_analyzer_is_type_accessible (ValaSemanticAnalyzer* self, ValaSymbol* sym, ValaDataType* type);
1597
1594
ValaDataType* vala_expression_get_value_type (ValaExpression* self);
1598
1595
GType vala_namespace_get_type (void) G_GNUC_CONST;
1599
1596
GType vala_enum_get_type (void) G_GNUC_CONST;
 
1597
GType vala_constant_get_type (void) G_GNUC_CONST;
1600
1598
GType vala_enum_value_get_type (void) G_GNUC_CONST;
1601
1599
GType vala_error_domain_get_type (void) G_GNUC_CONST;
1602
1600
GType vala_error_code_get_type (void) G_GNUC_CONST;
1603
1601
GType vala_delegate_get_type (void) G_GNUC_CONST;
1604
 
GType vala_constant_get_type (void) G_GNUC_CONST;
1605
1602
GType vala_field_get_type (void) G_GNUC_CONST;
1606
1603
GType vala_property_get_type (void) G_GNUC_CONST;
1607
1604
GType vala_property_accessor_get_type (void) G_GNUC_CONST;
1673
1670
static void vala_method_set_entry_point (ValaMethod* self, gboolean value);
1674
1671
void vala_code_context_set_entry_point (ValaCodeContext* self, ValaMethod* value);
1675
1672
gboolean vala_code_node_get_tree_can_fail (ValaCodeNode* self);
 
1673
GType vala_profile_get_type (void) G_GNUC_CONST;
 
1674
ValaProfile vala_code_context_get_profile (ValaCodeContext* self);
1676
1675
static gboolean vala_method_real_check (ValaCodeNode* base, ValaSemanticAnalyzer* analyzer);
1677
1676
const char* vala_code_context_get_entry_point_name (ValaCodeContext* self);
1678
1677
GType vala_void_type_get_type (void) G_GNUC_CONST;
1679
1678
GType vala_array_type_get_type (void) G_GNUC_CONST;
1680
1679
ValaDataType* vala_array_type_get_element_type (ValaArrayType* self);
1681
 
ValaExpression* vala_formal_parameter_get_default_expression (ValaFormalParameter* self);
 
1680
ValaExpression* vala_variable_get_initializer (ValaVariable* self);
1682
1681
gint vala_method_get_required_arguments (ValaMethod* self);
1683
1682
ValaCodeContext* vala_code_context_get (void);
1684
1683
ValaNamespace* vala_code_context_get_root (ValaCodeContext* self);
1696
1695
GType vala_delegate_type_get_type (void) G_GNUC_CONST;
1697
1696
void vala_data_type_set_nullable (ValaDataType* self, gboolean value);
1698
1697
void vala_delegate_type_set_is_called_once (ValaDelegateType* self, gboolean value);
1699
 
ValaFormalParameter* vala_formal_parameter_new (const char* name, ValaDataType* parameter_type, ValaSourceReference* source_reference);
1700
 
ValaFormalParameter* vala_formal_parameter_construct (GType object_type, const char* name, ValaDataType* parameter_type, ValaSourceReference* source_reference);
 
1698
ValaFormalParameter* vala_formal_parameter_new (const char* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
 
1699
ValaFormalParameter* vala_formal_parameter_construct (GType object_type, const char* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
1701
1700
ValaNullLiteral* vala_null_literal_new (ValaSourceReference* source);
1702
1701
ValaNullLiteral* vala_null_literal_construct (GType object_type, ValaSourceReference* source);
1703
 
void vala_formal_parameter_set_default_expression (ValaFormalParameter* self, ValaExpression* value);
 
1702
void vala_variable_set_initializer (ValaVariable* self, ValaExpression* value);
1704
1703
ValaList* vala_method_get_async_begin_parameters (ValaMethod* self);
1705
1704
ValaList* vala_method_get_async_end_parameters (ValaMethod* self);
1706
1705
gboolean vala_method_get_closure (ValaMethod* self);
1752
1751
 
1753
1752
 
1754
1753
 
 
1754
/**
 
1755
 * Creates a new method.
 
1756
 *
 
1757
 * @param name        method name
 
1758
 * @param return_type method return type
 
1759
 * @param source      reference to source code
 
1760
 * @return            newly created method
 
1761
 */
1755
1762
ValaMethod* vala_method_construct (GType object_type, const char* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment) {
1756
1763
        ValaMethod* self;
1757
1764
        g_return_val_if_fail (return_type != NULL, NULL);
1758
 
        self = (ValaMethod*) vala_member_construct (object_type, name, source_reference, comment);
 
1765
        self = (ValaMethod*) vala_symbol_construct (object_type, name, source_reference, comment);
1759
1766
        vala_method_set_return_type (self, return_type);
1760
1767
        vala_method_set_carray_length_parameter_position (self, (double) (-3));
1761
1768
        vala_method_set_cdelegate_target_parameter_position (self, (double) (-3));
1768
1775
}
1769
1776
 
1770
1777
 
 
1778
/**
 
1779
 * Appends parameter to this method.
 
1780
 *
 
1781
 * @param param a formal parameter
 
1782
 */
1771
1783
void vala_method_add_parameter (ValaMethod* self, ValaFormalParameter* param) {
1772
1784
        g_return_if_fail (self != NULL);
1773
1785
        g_return_if_fail (param != NULL);
1795
1807
}
1796
1808
 
1797
1809
 
 
1810
/**
 
1811
 * Remove all parameters from this method.
 
1812
 */
1798
1813
void vala_method_clear_parameters (ValaMethod* self) {
1799
1814
        g_return_if_fail (self != NULL);
1800
1815
        {
1915
1930
}
1916
1931
 
1917
1932
 
 
1933
/**
 
1934
 * Returns the interface name of this method as it is used in C code.
 
1935
 *
 
1936
 * @return the name to be used in C code
 
1937
 */
1918
1938
char* vala_method_get_cname (ValaMethod* self) {
1919
1939
        char* result = NULL;
1920
1940
        g_return_val_if_fail (self != NULL, NULL);
1948
1968
}
1949
1969
 
1950
1970
 
 
1971
/**
 
1972
 * Returns the default interface name of this method as it is used in C
 
1973
 * code.
 
1974
 *
 
1975
 * @return the name to be used in C code by default
 
1976
 */
1951
1977
static char* vala_method_real_get_default_cname (ValaMethod* self) {
1952
1978
        char* result = NULL;
1953
1979
        gboolean _tmp0_ = FALSE;
1981
2007
}
1982
2008
 
1983
2009
 
 
2010
/**
 
2011
 * Returns the implementation name of this data type as it is used in C
 
2012
 * code.
 
2013
 *
 
2014
 * @return the name to be used in C code
 
2015
 */
1984
2016
static char* vala_method_real_get_real_cname (ValaMethod* self) {
1985
2017
        char* result = NULL;
1986
2018
        gboolean _tmp0_ = FALSE;
2084
2116
}
2085
2117
 
2086
2118
 
 
2119
/**
 
2120
 * Sets the name of this method as it is used in C code.
 
2121
 *
 
2122
 * @param cname the name to be used in C code
 
2123
 */
2087
2124
void vala_method_set_cname (ValaMethod* self, const char* cname) {
2088
2125
        char* _tmp0_;
2089
2126
        g_return_if_fail (self != NULL);
2114
2151
                                char* filename;
2115
2152
                                filename = g_strdup (filename_collection[filename_it]);
2116
2153
                                {
2117
 
                                        vala_member_add_cheader_filename ((ValaMember*) self, filename);
 
2154
                                        vala_symbol_add_cheader_filename ((ValaSymbol*) self, filename);
2118
2155
                                        _g_free0 (filename);
2119
2156
                                }
2120
2157
                        }
2180
2217
}
2181
2218
 
2182
2219
 
 
2220
/**
 
2221
 * Process all associated attributes.
 
2222
 */
2183
2223
void vala_method_process_attributes (ValaMethod* self) {
2184
2224
        g_return_if_fail (self != NULL);
2185
2225
        {
2226
2266
}
2227
2267
 
2228
2268
 
 
2269
/**
 
2270
 * Checks whether the parameters and return type of this method are
 
2271
 * compatible with the specified method
 
2272
 *
 
2273
 * @param base_method a method
 
2274
 * @param invalid_match error string about which check failed
 
2275
 * @return true if the specified method is compatible to this method
 
2276
 */
2229
2277
gboolean vala_method_compatible (ValaMethod* self, ValaMethod* base_method, char** invalid_match) {
2230
2278
        gboolean result = FALSE;
2231
2279
        ValaObjectType* object_type;
2302
2350
                                _vala_code_node_unref0 (object_type);
2303
2351
                                return result;
2304
2352
                        }
2305
 
                        actual_base_type = (_tmp6_ = vala_data_type_get_actual_type (vala_formal_parameter_get_parameter_type (base_param), (ValaDataType*) object_type, NULL, (ValaCodeNode*) self), _vala_code_node_unref0 (actual_base_type), _tmp6_);
2306
 
                        if ((_tmp8_ = !vala_data_type_equals (actual_base_type, vala_formal_parameter_get_parameter_type (_tmp7_ = (ValaFormalParameter*) vala_iterator_get (method_params_it))), _vala_code_node_unref0 (_tmp7_), _tmp8_)) {
 
2353
                        actual_base_type = (_tmp6_ = vala_data_type_get_actual_type (vala_variable_get_variable_type ((ValaVariable*) base_param), (ValaDataType*) object_type, NULL, (ValaCodeNode*) self), _vala_code_node_unref0 (actual_base_type), _tmp6_);
 
2354
                        if ((_tmp8_ = !vala_data_type_equals (actual_base_type, vala_variable_get_variable_type ((ValaVariable*) (_tmp7_ = (ValaFormalParameter*) vala_iterator_get (method_params_it)))), _vala_code_node_unref0 (_tmp7_), _tmp8_)) {
2307
2355
                                char* _tmp9_;
2308
2356
                                *invalid_match = (_tmp9_ = g_strdup_printf ("incompatible type of parameter %d", param_index), _g_free0 (*invalid_match), _tmp9_);
2309
2357
                                result = FALSE;
2395
2443
}
2396
2444
 
2397
2445
 
 
2446
/**
 
2447
 * Appends the specified parameter to the list of type parameters.
 
2448
 *
 
2449
 * @param p a type parameter
 
2450
 */
2398
2451
void vala_method_add_type_parameter (ValaMethod* self, ValaTypeParameter* p) {
2399
2452
        g_return_if_fail (self != NULL);
2400
2453
        g_return_if_fail (p != NULL);
2403
2456
}
2404
2457
 
2405
2458
 
 
2459
/**
 
2460
 * Returns a copy of the type parameter list.
 
2461
 *
 
2462
 * @return list of type parameters
 
2463
 */
2406
2464
ValaList* vala_method_get_type_parameters (ValaMethod* self) {
2407
2465
        ValaList* result = NULL;
2408
2466
        g_return_val_if_fail (self != NULL, NULL);
2442
2500
}
2443
2501
 
2444
2502
 
 
2503
/**
 
2504
 * Adds a precondition to this method.
 
2505
 *
 
2506
 * @param precondition a boolean precondition expression
 
2507
 */
2445
2508
void vala_method_add_precondition (ValaMethod* self, ValaExpression* precondition) {
2446
2509
        g_return_if_fail (self != NULL);
2447
2510
        g_return_if_fail (precondition != NULL);
2450
2513
}
2451
2514
 
2452
2515
 
 
2516
/**
 
2517
 * Returns a copy of the list of preconditions of this method.
 
2518
 *
 
2519
 * @return list of preconditions
 
2520
 */
2453
2521
ValaList* vala_method_get_preconditions (ValaMethod* self) {
2454
2522
        ValaList* result = NULL;
2455
2523
        g_return_val_if_fail (self != NULL, NULL);
2458
2526
}
2459
2527
 
2460
2528
 
 
2529
/**
 
2530
 * Adds a postcondition to this method.
 
2531
 *
 
2532
 * @param postcondition a boolean postcondition expression
 
2533
 */
2461
2534
void vala_method_add_postcondition (ValaMethod* self, ValaExpression* postcondition) {
2462
2535
        g_return_if_fail (self != NULL);
2463
2536
        g_return_if_fail (postcondition != NULL);
2466
2539
}
2467
2540
 
2468
2541
 
 
2542
/**
 
2543
 * Returns a copy of the list of postconditions of this method.
 
2544
 *
 
2545
 * @return list of postconditions
 
2546
 */
2469
2547
ValaList* vala_method_get_postconditions (ValaMethod* self) {
2470
2548
        ValaList* result = NULL;
2471
2549
        g_return_val_if_fail (self != NULL, NULL);
3046
3124
                _tmp29_ = FALSE;
3047
3125
        }
3048
3126
        if (_tmp29_) {
3049
 
                _tmp28_ = !vala_member_get_hides ((ValaMember*) self);
 
3127
                _tmp28_ = !vala_symbol_get_hides ((ValaSymbol*) self);
3050
3128
        } else {
3051
3129
                _tmp28_ = FALSE;
3052
3130
        }
3053
3131
        if (_tmp28_) {
3054
3132
                ValaSymbol* _tmp30_;
3055
 
                _tmp27_ = (_tmp30_ = vala_member_get_hidden_member ((ValaMember*) self)) != NULL;
 
3133
                _tmp27_ = (_tmp30_ = vala_symbol_get_hidden_member ((ValaSymbol*) self)) != NULL;
3056
3134
                _vala_code_node_unref0 (_tmp30_);
3057
3135
        } else {
3058
3136
                _tmp27_ = FALSE;
3063
3141
                ValaSymbol* _tmp32_;
3064
3142
                char* _tmp31_;
3065
3143
                vala_report_warning (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp34_ = g_strdup_printf ("%s hides inherited method `%s'. Use the `new' keyword if hiding was in" \
3066
 
"tentional", _tmp31_ = vala_symbol_get_full_name ((ValaSymbol*) self), _tmp33_ = vala_symbol_get_full_name (_tmp32_ = vala_member_get_hidden_member ((ValaMember*) self))));
 
3144
"tentional", _tmp31_ = vala_symbol_get_full_name ((ValaSymbol*) self), _tmp33_ = vala_symbol_get_full_name (_tmp32_ = vala_symbol_get_hidden_member ((ValaSymbol*) self))));
3067
3145
                _g_free0 (_tmp34_);
3068
3146
                _g_free0 (_tmp33_);
3069
3147
                _vala_code_node_unref0 (_tmp32_);
3215
3293
                }
3216
3294
        }
3217
3295
        if (vala_method_is_possible_entry_point (self, analyzer)) {
 
3296
                gboolean _tmp52_ = FALSE;
3218
3297
                if (vala_code_context_get_entry_point (vala_semantic_analyzer_get_context (analyzer)) != NULL) {
3219
3298
                        char* _tmp51_;
3220
3299
                        char* _tmp50_;
3231
3310
                vala_method_set_entry_point (self, TRUE);
3232
3311
                vala_code_context_set_entry_point (vala_semantic_analyzer_get_context (analyzer), self);
3233
3312
                if (vala_code_node_get_tree_can_fail ((ValaCodeNode*) self)) {
 
3313
                        _tmp52_ = vala_code_context_get_profile (vala_semantic_analyzer_get_context (analyzer)) != VALA_PROFILE_DOVA;
 
3314
                } else {
 
3315
                        _tmp52_ = FALSE;
 
3316
                }
 
3317
                if (_tmp52_) {
3234
3318
                        vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), "\"main\" method cannot throw errors");
3235
3319
                }
3236
3320
        }
3306
3390
                _vala_collection_object_unref0 (params);
3307
3391
                return result;
3308
3392
        }
3309
 
        if (!VALA_IS_ARRAY_TYPE (vala_formal_parameter_get_parameter_type (param))) {
 
3393
        if (!VALA_IS_ARRAY_TYPE (vala_variable_get_variable_type ((ValaVariable*) param))) {
3310
3394
                result = FALSE;
3311
3395
                _vala_code_node_unref0 (param);
3312
3396
                _vala_collection_object_unref0 (params_it);
3313
3397
                _vala_collection_object_unref0 (params);
3314
3398
                return result;
3315
3399
        }
3316
 
        array_type = _vala_code_node_ref0 (VALA_ARRAY_TYPE (vala_formal_parameter_get_parameter_type (param)));
 
3400
        array_type = _vala_code_node_ref0 (VALA_ARRAY_TYPE (vala_variable_get_variable_type ((ValaVariable*) param)));
3317
3401
        if (vala_data_type_get_data_type (vala_array_type_get_element_type (array_type)) != vala_data_type_get_data_type (analyzer->string_type)) {
3318
3402
                result = FALSE;
3319
3403
                _vala_code_node_unref0 (array_type);
3346
3430
                                break;
3347
3431
                        }
3348
3432
                        param = (ValaFormalParameter*) vala_iterator_get (_param_it);
3349
 
                        if (vala_formal_parameter_get_default_expression (param) != NULL) {
 
3433
                        if (vala_variable_get_initializer ((ValaVariable*) param) != NULL) {
3350
3434
                                _tmp0_ = TRUE;
3351
3435
                        } else {
3352
3436
                                _tmp0_ = vala_formal_parameter_get_ellipsis (param);
3430
3514
        vala_data_type_set_nullable ((ValaDataType*) callback_type, TRUE);
3431
3515
        vala_delegate_type_set_is_called_once (callback_type, TRUE);
3432
3516
        callback_param = vala_formal_parameter_new ("_callback_", (ValaDataType*) callback_type, NULL);
3433
 
        vala_formal_parameter_set_default_expression (callback_param, (ValaExpression*) (_tmp4_ = vala_null_literal_new (vala_code_node_get_source_reference ((ValaCodeNode*) self))));
 
3517
        vala_variable_set_initializer ((ValaVariable*) callback_param, (ValaExpression*) (_tmp4_ = vala_null_literal_new (vala_code_node_get_source_reference ((ValaCodeNode*) self))));
3434
3518
        _vala_code_node_unref0 (_tmp4_);
3435
3519
        vala_formal_parameter_set_cparameter_position (callback_param, (double) (-1));
3436
3520
        vala_formal_parameter_set_cdelegate_target_parameter_position (callback_param, -0.9);
4103
4187
}
4104
4188
 
4105
4189
 
 
4190
/**
 
4191
 * Represents a type or namespace method.
 
4192
 */
4106
4193
GType vala_method_get_type (void) {
4107
4194
        static volatile gsize vala_method_type_id__volatile = 0;
4108
4195
        if (g_once_init_enter (&vala_method_type_id__volatile)) {
4109
4196
                static const GTypeInfo g_define_type_info = { sizeof (ValaMethodClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_method_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaMethod), 0, (GInstanceInitFunc) vala_method_instance_init, NULL };
4110
4197
                GType vala_method_type_id;
4111
 
                vala_method_type_id = g_type_register_static (VALA_TYPE_MEMBER, "ValaMethod", &g_define_type_info, 0);
 
4198
                vala_method_type_id = g_type_register_static (VALA_TYPE_SYMBOL, "ValaMethod", &g_define_type_info, 0);
4112
4199
                g_once_init_leave (&vala_method_type_id__volatile, vala_method_type_id);
4113
4200
        }
4114
4201
        return vala_method_type_id__volatile;