135
135
typedef struct _ValaSourceReference ValaSourceReference;
136
136
typedef struct _ValaSourceReferenceClass ValaSourceReferenceClass;
138
#define VALA_TYPE_MEMBER (vala_member_get_type ())
139
#define VALA_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER, ValaMember))
140
#define VALA_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER, ValaMemberClass))
141
#define VALA_IS_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MEMBER))
142
#define VALA_IS_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MEMBER))
143
#define VALA_MEMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MEMBER, ValaMemberClass))
145
typedef struct _ValaMember ValaMember;
146
typedef struct _ValaMemberClass ValaMemberClass;
148
#define VALA_TYPE_METHOD (vala_method_get_type ())
149
#define VALA_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_METHOD, ValaMethod))
150
#define VALA_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_METHOD, ValaMethodClass))
151
#define VALA_IS_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_METHOD))
152
#define VALA_IS_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_METHOD))
153
#define VALA_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_METHOD, ValaMethodClass))
155
typedef struct _ValaMethod ValaMethod;
156
typedef struct _ValaMethodClass ValaMethodClass;
158
#define VALA_TYPE_CREATION_METHOD (vala_creation_method_get_type ())
159
#define VALA_CREATION_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CREATION_METHOD, ValaCreationMethod))
160
#define VALA_CREATION_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CREATION_METHOD, ValaCreationMethodClass))
161
#define VALA_IS_CREATION_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CREATION_METHOD))
162
#define VALA_IS_CREATION_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CREATION_METHOD))
163
#define VALA_CREATION_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CREATION_METHOD, ValaCreationMethodClass))
165
typedef struct _ValaCreationMethod ValaCreationMethod;
166
typedef struct _ValaCreationMethodClass ValaCreationMethodClass;
138
168
#define VALA_TYPE_MEMBER_ACCESS (vala_member_access_get_type ())
139
169
#define VALA_MEMBER_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess))
140
170
#define VALA_MEMBER_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccessClass))
145
175
typedef struct _ValaMemberAccess ValaMemberAccess;
146
176
typedef struct _ValaMemberAccessClass ValaMemberAccessClass;
178
#define VALA_TYPE_BASE_ACCESS (vala_base_access_get_type ())
179
#define VALA_BASE_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BASE_ACCESS, ValaBaseAccess))
180
#define VALA_BASE_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BASE_ACCESS, ValaBaseAccessClass))
181
#define VALA_IS_BASE_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BASE_ACCESS))
182
#define VALA_IS_BASE_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BASE_ACCESS))
183
#define VALA_BASE_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BASE_ACCESS, ValaBaseAccessClass))
185
typedef struct _ValaBaseAccess ValaBaseAccess;
186
typedef struct _ValaBaseAccessClass ValaBaseAccessClass;
147
187
#define _g_free0(var) (var = (g_free (var), NULL))
149
189
#define VALA_TYPE_REFERENCE_TYPE (vala_reference_type_get_type ())
299
339
typedef struct _ValaDelegate ValaDelegate;
300
340
typedef struct _ValaDelegateClass ValaDelegateClass;
302
#define VALA_TYPE_MEMBER (vala_member_get_type ())
303
#define VALA_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER, ValaMember))
304
#define VALA_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER, ValaMemberClass))
305
#define VALA_IS_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MEMBER))
306
#define VALA_IS_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MEMBER))
307
#define VALA_MEMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MEMBER, ValaMemberClass))
309
typedef struct _ValaMember ValaMember;
310
typedef struct _ValaMemberClass ValaMemberClass;
312
342
#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
313
343
#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
314
344
#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
329
359
typedef struct _ValaField ValaField;
330
360
typedef struct _ValaFieldClass ValaFieldClass;
332
#define VALA_TYPE_METHOD (vala_method_get_type ())
333
#define VALA_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_METHOD, ValaMethod))
334
#define VALA_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_METHOD, ValaMethodClass))
335
#define VALA_IS_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_METHOD))
336
#define VALA_IS_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_METHOD))
337
#define VALA_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_METHOD, ValaMethodClass))
339
typedef struct _ValaMethod ValaMethod;
340
typedef struct _ValaMethodClass ValaMethodClass;
342
#define VALA_TYPE_CREATION_METHOD (vala_creation_method_get_type ())
343
#define VALA_CREATION_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CREATION_METHOD, ValaCreationMethod))
344
#define VALA_CREATION_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CREATION_METHOD, ValaCreationMethodClass))
345
#define VALA_IS_CREATION_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CREATION_METHOD))
346
#define VALA_IS_CREATION_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CREATION_METHOD))
347
#define VALA_CREATION_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CREATION_METHOD, ValaCreationMethodClass))
349
typedef struct _ValaCreationMethod ValaCreationMethod;
350
typedef struct _ValaCreationMethodClass ValaCreationMethodClass;
352
362
#define VALA_TYPE_FORMAL_PARAMETER (vala_formal_parameter_get_type ())
353
363
#define VALA_FORMAL_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FORMAL_PARAMETER, ValaFormalParameter))
354
364
#define VALA_FORMAL_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FORMAL_PARAMETER, ValaFormalParameterClass))
729
739
typedef struct _ValaStringLiteral ValaStringLiteral;
730
740
typedef struct _ValaStringLiteralClass ValaStringLiteralClass;
742
#define VALA_TYPE_TEMPLATE (vala_template_get_type ())
743
#define VALA_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TEMPLATE, ValaTemplate))
744
#define VALA_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TEMPLATE, ValaTemplateClass))
745
#define VALA_IS_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TEMPLATE))
746
#define VALA_IS_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TEMPLATE))
747
#define VALA_TEMPLATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TEMPLATE, ValaTemplateClass))
749
typedef struct _ValaTemplate ValaTemplate;
750
typedef struct _ValaTemplateClass ValaTemplateClass;
732
752
#define VALA_TYPE_NULL_LITERAL (vala_null_literal_get_type ())
733
753
#define VALA_NULL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_NULL_LITERAL, ValaNullLiteral))
734
754
#define VALA_NULL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_NULL_LITERAL, ValaNullLiteralClass))
759
779
typedef struct _ValaSliceExpression ValaSliceExpression;
760
780
typedef struct _ValaSliceExpressionClass ValaSliceExpressionClass;
762
#define VALA_TYPE_BASE_ACCESS (vala_base_access_get_type ())
763
#define VALA_BASE_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BASE_ACCESS, ValaBaseAccess))
764
#define VALA_BASE_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BASE_ACCESS, ValaBaseAccessClass))
765
#define VALA_IS_BASE_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BASE_ACCESS))
766
#define VALA_IS_BASE_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BASE_ACCESS))
767
#define VALA_BASE_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BASE_ACCESS, ValaBaseAccessClass))
769
typedef struct _ValaBaseAccess ValaBaseAccess;
770
typedef struct _ValaBaseAccessClass ValaBaseAccessClass;
772
782
#define VALA_TYPE_POSTFIX_EXPRESSION (vala_postfix_expression_get_type ())
773
783
#define VALA_POSTFIX_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpression))
774
784
#define VALA_POSTFIX_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpressionClass))
1116
1126
void (*visit_integer_literal) (ValaCodeVisitor* self, ValaIntegerLiteral* lit);
1117
1127
void (*visit_real_literal) (ValaCodeVisitor* self, ValaRealLiteral* lit);
1118
1128
void (*visit_string_literal) (ValaCodeVisitor* self, ValaStringLiteral* lit);
1129
void (*visit_template) (ValaCodeVisitor* self, ValaTemplate* tmpl);
1119
1130
void (*visit_null_literal) (ValaCodeVisitor* self, ValaNullLiteral* lit);
1120
1131
void (*visit_member_access) (ValaCodeVisitor* self, ValaMemberAccess* expr);
1121
1132
void (*visit_method_call) (ValaCodeVisitor* self, ValaMethodCall* expr);
1229
1240
ValaCodeNode* vala_code_node_get_parent_node (ValaCodeNode* self);
1230
1241
static void vala_method_call_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node);
1231
1242
static gboolean vala_method_call_real_is_pure (ValaExpression* base);
1243
ValaSymbol* vala_expression_get_symbol_reference (ValaExpression* self);
1244
GType vala_member_get_type (void);
1245
GType vala_method_get_type (void);
1246
GType vala_creation_method_get_type (void);
1247
GType vala_member_access_get_type (void);
1248
ValaExpression* vala_member_access_get_inner (ValaMemberAccess* self);
1249
const char* vala_member_access_get_member_name (ValaMemberAccess* self);
1250
GType vala_base_access_get_type (void);
1251
static gboolean vala_method_call_is_chainup (ValaMethodCall* self);
1232
1252
gboolean vala_code_node_get_checked (ValaCodeNode* self);
1233
1253
gboolean vala_code_node_get_error (ValaCodeNode* self);
1234
1254
void vala_code_node_set_checked (ValaCodeNode* self, gboolean value);
1235
1255
gboolean vala_code_node_check (ValaCodeNode* self, ValaSemanticAnalyzer* analyzer);
1236
1256
void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
1237
GType vala_member_access_get_type (void);
1238
1257
gboolean vala_member_access_get_prototype_access (ValaMemberAccess* self);
1239
1258
void vala_report_error (ValaSourceReference* source, const char* message);
1240
1259
ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
1241
ValaSymbol* vala_expression_get_symbol_reference (ValaExpression* self);
1242
1260
char* vala_symbol_get_full_name (ValaSymbol* self);
1243
ValaExpression* vala_member_access_get_inner (ValaMemberAccess* self);
1244
1261
ValaDataType* vala_expression_get_value_type (ValaExpression* self);
1245
1262
ValaAttribute* vala_code_node_get_attribute (ValaCodeNode* self, const char* name);
1246
1263
static void vala_method_call_set_is_assert (ValaMethodCall* self, gboolean value);
1272
1289
GType vala_error_domain_get_type (void);
1273
1290
GType vala_error_code_get_type (void);
1274
1291
GType vala_delegate_get_type (void);
1275
GType vala_member_get_type (void);
1276
1292
GType vala_constant_get_type (void);
1277
1293
GType vala_field_get_type (void);
1278
GType vala_method_get_type (void);
1279
GType vala_creation_method_get_type (void);
1280
1294
GType vala_formal_parameter_get_type (void);
1281
1295
GType vala_property_get_type (void);
1282
1296
GType vala_property_accessor_get_type (void);
1315
1329
GType vala_integer_literal_get_type (void);
1316
1330
GType vala_real_literal_get_type (void);
1317
1331
GType vala_string_literal_get_type (void);
1332
GType vala_template_get_type (void);
1318
1333
GType vala_null_literal_get_type (void);
1319
1334
GType vala_element_access_get_type (void);
1320
1335
GType vala_slice_expression_get_type (void);
1321
GType vala_base_access_get_type (void);
1322
1336
GType vala_postfix_expression_get_type (void);
1323
1337
GType vala_object_creation_expression_get_type (void);
1324
1338
GType vala_sizeof_expression_get_type (void);
1535
static gboolean vala_method_call_is_chainup (ValaMethodCall* self) {
1537
ValaExpression* expr;
1538
ValaMemberAccess* ma;
1539
ValaMemberAccess* _tmp2_;
1540
ValaExpression* _tmp1_;
1541
gboolean _tmp3_ = FALSE;
1542
g_return_val_if_fail (self != NULL, FALSE);
1543
if (!VALA_IS_CREATION_METHOD (vala_expression_get_symbol_reference (vala_method_call_get_call (self)))) {
1547
expr = _vala_code_node_ref0 (vala_method_call_get_call (self));
1548
ma = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (vala_method_call_get_call (self)));
1549
if (vala_member_access_get_inner (ma) != NULL) {
1550
ValaExpression* _tmp0_;
1551
expr = (_tmp0_ = _vala_code_node_ref0 (vala_member_access_get_inner (ma)), _vala_code_node_unref0 (expr), _tmp0_);
1553
ma = (_tmp2_ = _vala_code_node_ref0 ((_tmp1_ = expr, VALA_IS_MEMBER_ACCESS (_tmp1_) ? ((ValaMemberAccess*) _tmp1_) : NULL)), _vala_code_node_unref0 (ma), _tmp2_);
1555
_tmp3_ = _vala_strcmp0 (vala_member_access_get_member_name (ma), "this") == 0;
1561
_vala_code_node_unref0 (expr);
1562
_vala_code_node_unref0 (ma);
1565
if (VALA_IS_BASE_ACCESS (expr)) {
1567
_vala_code_node_unref0 (expr);
1568
_vala_code_node_unref0 (ma);
1572
_vala_code_node_unref0 (expr);
1573
_vala_code_node_unref0 (ma);
1577
_vala_code_node_unref0 (expr);
1578
_vala_code_node_unref0 (ma);
1522
1582
static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaSemanticAnalyzer* analyzer) {
1523
1583
ValaMethodCall * self;
1524
1584
gboolean result;
1712
1772
ValaObjectCreationExpression* struct_creation_expression;
1773
if (vala_method_call_is_chainup (self)) {
1774
ValaMethod* _tmp19_;
1775
ValaCreationMethod* cm;
1776
cm = (_tmp19_ = vala_semantic_analyzer_find_current_method (analyzer), VALA_IS_CREATION_METHOD (_tmp19_) ? ((ValaCreationMethod*) _tmp19_) : NULL);
1778
if (vala_creation_method_get_chain_up (cm)) {
1779
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
1780
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), "Multiple constructor calls in the same constructor are not permitted");
1782
_vala_code_node_unref0 (cm);
1783
_vala_code_node_unref0 (target_object_type);
1784
_vala_code_node_unref0 (mtype);
1787
vala_creation_method_set_chain_up (cm, TRUE);
1789
_vala_code_node_unref0 (cm);
1713
1791
struct_creation_expression = vala_object_creation_expression_new (VALA_MEMBER_ACCESS (vala_method_call_get_call (self)), vala_code_node_get_source_reference ((ValaCodeNode*) self));
1714
1792
vala_object_creation_expression_set_struct_creation (struct_creation_expression, TRUE);
1717
ValaIterator* _tmp20_;
1795
ValaIterator* _tmp21_;
1718
1796
ValaIterator* _arg_it;
1719
_arg_it = (_tmp20_ = vala_iterable_iterator ((ValaIterable*) (_tmp19_ = vala_method_call_get_argument_list (self))), _vala_collection_object_unref0 (_tmp19_), _tmp20_);
1797
_arg_it = (_tmp21_ = vala_iterable_iterator ((ValaIterable*) (_tmp20_ = vala_method_call_get_argument_list (self))), _vala_collection_object_unref0 (_tmp20_), _tmp21_);
1721
1799
ValaExpression* arg;
1722
1800
if (!vala_iterator_next (_arg_it)) {
1738
1816
_vala_code_node_unref0 (mtype);
1741
gboolean _tmp21_ = FALSE;
1819
gboolean _tmp22_ = FALSE;
1742
1820
if (VALA_IS_MEMBER_ACCESS (vala_method_call_get_call (self))) {
1743
_tmp21_ = VALA_IS_CREATION_METHOD (vala_expression_get_symbol_reference (vala_method_call_get_call (self)));
1821
_tmp22_ = VALA_IS_CREATION_METHOD (vala_expression_get_symbol_reference (vala_method_call_get_call (self)));
1748
ValaMethod* _tmp22_;
1826
ValaMethod* _tmp23_;
1749
1827
ValaCreationMethod* cm;
1750
1828
ValaCreationMethod* base_cm;
1751
cm = (_tmp22_ = vala_semantic_analyzer_find_current_method (analyzer), VALA_IS_CREATION_METHOD (_tmp22_) ? ((ValaCreationMethod*) _tmp22_) : NULL);
1829
cm = (_tmp23_ = vala_semantic_analyzer_find_current_method (analyzer), VALA_IS_CREATION_METHOD (_tmp23_) ? ((ValaCreationMethod*) _tmp23_) : NULL);
1752
1830
if (cm == NULL) {
1753
1831
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
1754
1832
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), "use `new' operator to create new objects");
1771
1849
vala_creation_method_set_chain_up (cm, TRUE);
1772
1850
base_cm = _vala_code_node_ref0 (VALA_CREATION_METHOD (vala_expression_get_symbol_reference (vala_method_call_get_call (self))));
1773
1851
if (!vala_method_get_has_construct_function ((ValaMethod*) base_cm)) {
1776
1854
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
1777
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp24_ = g_strdup_printf ("chain up to `%s' not supported", _tmp23_ = vala_symbol_get_full_name ((ValaSymbol*) base_cm)));
1855
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), _tmp25_ = g_strdup_printf ("chain up to `%s' not supported", _tmp24_ = vala_symbol_get_full_name ((ValaSymbol*) base_cm)));
1778
1857
_g_free0 (_tmp24_);
1780
1858
result = FALSE;
1781
1859
_vala_code_node_unref0 (cm);
1782
1860
_vala_code_node_unref0 (base_cm);
1815
1893
params = vala_data_type_get_parameters (mtype);
1816
1894
if (VALA_IS_METHOD_TYPE (mtype)) {
1818
gboolean _tmp26_ = FALSE;
1819
1896
gboolean _tmp27_ = FALSE;
1897
gboolean _tmp28_ = FALSE;
1820
1898
m = _vala_code_node_ref0 (vala_method_type_get_method_symbol (VALA_METHOD_TYPE (mtype)));
1821
1899
if (m != NULL) {
1822
_tmp27_ = vala_method_get_coroutine (m);
1900
_tmp28_ = vala_method_get_coroutine (m);
1905
_tmp27_ = !self->priv->_is_yield_expression;
1824
1907
_tmp27_ = FALSE;
1827
_tmp26_ = !self->priv->_is_yield_expression;
1832
1910
ValaMemberAccess* ma;
1833
1911
ma = _vala_code_node_ref0 (VALA_MEMBER_ACCESS (vala_method_call_get_call (self)));
1834
1912
if (_vala_strcmp0 (vala_member_access_get_member_name (ma), "end") != 0) {
1836
ValaDataType* _tmp29_;
1837
params = (_tmp28_ = vala_method_get_async_begin_parameters (m), _vala_collection_object_unref0 (params), _tmp28_);
1838
ret_type = (_tmp29_ = (ValaDataType*) vala_void_type_new (NULL), _vala_code_node_unref0 (ret_type), _tmp29_);
1914
ValaDataType* _tmp30_;
1915
params = (_tmp29_ = vala_method_get_async_begin_parameters (m), _vala_collection_object_unref0 (params), _tmp29_);
1916
ret_type = (_tmp30_ = (ValaDataType*) vala_void_type_new (NULL), _vala_code_node_unref0 (ret_type), _tmp30_);
1841
params = (_tmp30_ = vala_method_get_async_end_parameters (m), _vala_collection_object_unref0 (params), _tmp30_);
1919
params = (_tmp31_ = vala_method_get_async_end_parameters (m), _vala_collection_object_unref0 (params), _tmp31_);
1843
1921
_vala_code_node_unref0 (ma);
1880
1958
if (vala_iterator_next (arg_it)) {
1881
1959
ValaExpression* arg;
1882
ValaDataType* _tmp32_;
1883
ValaExpression* _tmp31_;
1884
ValaExpression* _tmp33_;
1960
ValaDataType* _tmp33_;
1961
ValaExpression* _tmp32_;
1962
ValaExpression* _tmp34_;
1885
1963
arg = (ValaExpression*) vala_iterator_get (arg_it);
1886
1964
vala_expression_set_formal_target_type (arg, vala_formal_parameter_get_parameter_type (param));
1887
vala_expression_set_target_type (arg, _tmp32_ = vala_data_type_get_actual_type (vala_expression_get_formal_target_type (arg), target_object_type, (_tmp31_ = vala_method_call_get_call (self), VALA_IS_MEMBER_ACCESS (_tmp31_) ? ((ValaMemberAccess*) _tmp31_) : NULL), (ValaCodeNode*) self));
1888
_vala_code_node_unref0 (_tmp32_);
1889
last_arg = (_tmp33_ = _vala_code_node_ref0 (arg), _vala_code_node_unref0 (last_arg), _tmp33_);
1965
vala_expression_set_target_type (arg, _tmp33_ = vala_data_type_get_actual_type (vala_expression_get_formal_target_type (arg), target_object_type, (_tmp32_ = vala_method_call_get_call (self), VALA_IS_MEMBER_ACCESS (_tmp32_) ? ((ValaMemberAccess*) _tmp32_) : NULL), (ValaCodeNode*) self));
1966
_vala_code_node_unref0 (_tmp33_);
1967
last_arg = (_tmp34_ = _vala_code_node_ref0 (arg), _vala_code_node_unref0 (last_arg), _tmp34_);
1890
1968
_vala_code_node_unref0 (arg);
1892
1970
_vala_code_node_unref0 (param);
1894
1972
_vala_collection_object_unref0 (_param_it);
1896
1974
if (VALA_IS_METHOD_TYPE (mtype)) {
1897
_tmp34_ = vala_method_get_printf_format (vala_method_type_get_method_symbol (VALA_METHOD_TYPE (mtype)));
1975
_tmp35_ = vala_method_get_printf_format (vala_method_type_get_method_symbol (VALA_METHOD_TYPE (mtype)));
1902
1980
ValaStringLiteral* format_literal;
1903
1981
format_literal = NULL;
1904
1982
if (last_arg != NULL) {
1905
ValaStringLiteral* _tmp36_;
1906
ValaExpression* _tmp35_;
1907
gboolean _tmp37_ = FALSE;
1908
format_literal = (_tmp36_ = _vala_code_node_ref0 ((_tmp35_ = last_arg, VALA_IS_STRING_LITERAL (_tmp35_) ? ((ValaStringLiteral*) _tmp35_) : NULL)), _vala_code_node_unref0 (format_literal), _tmp36_);
1983
ValaStringLiteral* _tmp37_;
1984
ValaExpression* _tmp36_;
1985
gboolean _tmp38_ = FALSE;
1986
format_literal = (_tmp37_ = _vala_code_node_ref0 ((_tmp36_ = last_arg, VALA_IS_STRING_LITERAL (_tmp36_) ? ((ValaStringLiteral*) _tmp36_) : NULL)), _vala_code_node_unref0 (format_literal), _tmp37_);
1909
1987
if (format_literal == NULL) {
1910
_tmp37_ = vala_collection_get_size ((ValaCollection*) args) == (vala_collection_get_size ((ValaCollection*) params) - 1);
1988
_tmp38_ = vala_collection_get_size ((ValaCollection*) args) == (vala_collection_get_size ((ValaCollection*) params) - 1);
1915
ValaStringLiteral* _tmp38_;
1916
ValaDataType* _tmp39_;
1917
ValaIterator* _tmp40_;
1918
format_literal = (_tmp38_ = vala_string_literal_new ("\"%s\"", NULL), _vala_code_node_unref0 (format_literal), _tmp38_);
1919
vala_expression_set_target_type ((ValaExpression*) format_literal, _tmp39_ = vala_data_type_copy (analyzer->string_type));
1920
_vala_code_node_unref0 (_tmp39_);
1993
ValaStringLiteral* _tmp39_;
1994
ValaDataType* _tmp40_;
1995
ValaIterator* _tmp41_;
1996
format_literal = (_tmp39_ = vala_string_literal_new ("\"%s\"", NULL), _vala_code_node_unref0 (format_literal), _tmp39_);
1997
vala_expression_set_target_type ((ValaExpression*) format_literal, _tmp40_ = vala_data_type_copy (analyzer->string_type));
1998
_vala_code_node_unref0 (_tmp40_);
1921
1999
vala_list_insert (self->priv->argument_list, vala_collection_get_size ((ValaCollection*) args) - 1, (ValaExpression*) format_literal);
1922
arg_it = (_tmp40_ = vala_iterable_iterator ((ValaIterable*) self->priv->argument_list), _vala_collection_object_unref0 (arg_it), _tmp40_);
2000
arg_it = (_tmp41_ = vala_iterable_iterator ((ValaIterable*) self->priv->argument_list), _vala_collection_object_unref0 (arg_it), _tmp41_);
1924
2002
ValaIterator* _param_it;
1925
2003
_param_it = vala_iterable_iterator ((ValaIterable*) params);
1943
ValaExpression* _tmp41_;
2021
ValaExpression* _tmp42_;
1944
2022
ValaMemberAccess* ma;
1945
ma = _vala_code_node_ref0 ((_tmp41_ = vala_method_call_get_call (self), VALA_IS_MEMBER_ACCESS (_tmp41_) ? ((ValaMemberAccess*) _tmp41_) : NULL));
2023
ma = _vala_code_node_ref0 ((_tmp42_ = vala_method_call_get_call (self), VALA_IS_MEMBER_ACCESS (_tmp42_) ? ((ValaMemberAccess*) _tmp42_) : NULL));
1946
2024
if (ma != NULL) {
1947
ValaStringLiteral* _tmp43_;
1948
ValaExpression* _tmp42_;
1949
format_literal = (_tmp43_ = _vala_code_node_ref0 ((_tmp42_ = vala_member_access_get_inner (ma), VALA_IS_STRING_LITERAL (_tmp42_) ? ((ValaStringLiteral*) _tmp42_) : NULL)), _vala_code_node_unref0 (format_literal), _tmp43_);
2025
ValaStringLiteral* _tmp44_;
2026
ValaExpression* _tmp43_;
2027
format_literal = (_tmp44_ = _vala_code_node_ref0 ((_tmp43_ = vala_member_access_get_inner (ma), VALA_IS_STRING_LITERAL (_tmp43_) ? ((ValaStringLiteral*) _tmp43_) : NULL)), _vala_code_node_unref0 (format_literal), _tmp44_);
1951
2029
_vala_code_node_unref0 (ma);
1976
2054
format_it = g_utf8_next_char (format_it);
1977
2055
c = g_utf8_get_char (format_it);
1979
gboolean _tmp44_ = FALSE;
1980
2057
gboolean _tmp45_ = FALSE;
1981
2058
gboolean _tmp46_ = FALSE;
1982
2059
gboolean _tmp47_ = FALSE;
2060
gboolean _tmp48_ = FALSE;
1983
2061
if (c == '#') {
1984
2067
_tmp47_ = TRUE;
1989
2072
_tmp46_ = TRUE;
1994
2077
_tmp45_ = TRUE;
2006
2084
format_it = g_utf8_next_char (format_it);
2007
2085
c = g_utf8_get_char (format_it);
2010
gboolean _tmp48_ = FALSE;
2088
gboolean _tmp49_ = FALSE;
2011
2089
if (c >= '0') {
2019
2097
format_it = g_utf8_next_char (format_it);
2062
2140
param_type = NULL;
2063
2141
if (c == 'd') {
2064
2147
_tmp51_ = TRUE;
2074
2152
if (length == (-2)) {
2075
ValaDataType* _tmp52_;
2076
param_type = (_tmp52_ = _vala_code_node_ref0 (analyzer->int8_type), _vala_code_node_unref0 (param_type), _tmp52_);
2153
ValaDataType* _tmp53_;
2154
param_type = (_tmp53_ = _vala_code_node_ref0 (analyzer->int8_type), _vala_code_node_unref0 (param_type), _tmp53_);
2078
2156
if (length == (-1)) {
2079
ValaDataType* _tmp53_;
2080
param_type = (_tmp53_ = _vala_code_node_ref0 (analyzer->short_type), _vala_code_node_unref0 (param_type), _tmp53_);
2157
ValaDataType* _tmp54_;
2158
param_type = (_tmp54_ = _vala_code_node_ref0 (analyzer->short_type), _vala_code_node_unref0 (param_type), _tmp54_);
2082
2160
if (length == 0) {
2083
ValaDataType* _tmp54_;
2084
param_type = (_tmp54_ = _vala_code_node_ref0 (analyzer->int_type), _vala_code_node_unref0 (param_type), _tmp54_);
2161
ValaDataType* _tmp55_;
2162
param_type = (_tmp55_ = _vala_code_node_ref0 (analyzer->int_type), _vala_code_node_unref0 (param_type), _tmp55_);
2086
2164
if (length == 1) {
2087
ValaDataType* _tmp55_;
2088
param_type = (_tmp55_ = _vala_code_node_ref0 (analyzer->long_type), _vala_code_node_unref0 (param_type), _tmp55_);
2165
ValaDataType* _tmp56_;
2166
param_type = (_tmp56_ = _vala_code_node_ref0 (analyzer->long_type), _vala_code_node_unref0 (param_type), _tmp56_);
2090
2168
if (length == 2) {
2091
ValaDataType* _tmp56_;
2092
param_type = (_tmp56_ = _vala_code_node_ref0 (analyzer->ssize_t_type), _vala_code_node_unref0 (param_type), _tmp56_);
2169
ValaDataType* _tmp57_;
2170
param_type = (_tmp57_ = _vala_code_node_ref0 (analyzer->ssize_t_type), _vala_code_node_unref0 (param_type), _tmp57_);
2099
gboolean _tmp57_ = FALSE;
2100
2177
gboolean _tmp58_ = FALSE;
2101
2178
gboolean _tmp59_ = FALSE;
2179
gboolean _tmp60_ = FALSE;
2102
2180
if (c == 'o') {
2103
2186
_tmp59_ = TRUE;
2108
2191
_tmp58_ = TRUE;
2118
2196
if (length == (-2)) {
2119
ValaDataType* _tmp60_;
2120
param_type = (_tmp60_ = _vala_code_node_ref0 (analyzer->uchar_type), _vala_code_node_unref0 (param_type), _tmp60_);
2197
ValaDataType* _tmp61_;
2198
param_type = (_tmp61_ = _vala_code_node_ref0 (analyzer->uchar_type), _vala_code_node_unref0 (param_type), _tmp61_);
2122
2200
if (length == (-1)) {
2123
ValaDataType* _tmp61_;
2124
param_type = (_tmp61_ = _vala_code_node_ref0 (analyzer->ushort_type), _vala_code_node_unref0 (param_type), _tmp61_);
2201
ValaDataType* _tmp62_;
2202
param_type = (_tmp62_ = _vala_code_node_ref0 (analyzer->ushort_type), _vala_code_node_unref0 (param_type), _tmp62_);
2126
2204
if (length == 0) {
2127
ValaDataType* _tmp62_;
2128
param_type = (_tmp62_ = _vala_code_node_ref0 (analyzer->uint_type), _vala_code_node_unref0 (param_type), _tmp62_);
2205
ValaDataType* _tmp63_;
2206
param_type = (_tmp63_ = _vala_code_node_ref0 (analyzer->uint_type), _vala_code_node_unref0 (param_type), _tmp63_);
2130
2208
if (length == 1) {
2131
ValaDataType* _tmp63_;
2132
param_type = (_tmp63_ = _vala_code_node_ref0 (analyzer->ulong_type), _vala_code_node_unref0 (param_type), _tmp63_);
2209
ValaDataType* _tmp64_;
2210
param_type = (_tmp64_ = _vala_code_node_ref0 (analyzer->ulong_type), _vala_code_node_unref0 (param_type), _tmp64_);
2134
2212
if (length == 2) {
2135
ValaDataType* _tmp64_;
2136
param_type = (_tmp64_ = _vala_code_node_ref0 (analyzer->size_t_type), _vala_code_node_unref0 (param_type), _tmp64_);
2213
ValaDataType* _tmp65_;
2214
param_type = (_tmp65_ = _vala_code_node_ref0 (analyzer->size_t_type), _vala_code_node_unref0 (param_type), _tmp65_);
2143
gboolean _tmp65_ = FALSE;
2144
2221
gboolean _tmp66_ = FALSE;
2145
2222
gboolean _tmp67_ = FALSE;
2146
2223
gboolean _tmp68_ = FALSE;
2147
2224
gboolean _tmp69_ = FALSE;
2148
2225
gboolean _tmp70_ = FALSE;
2149
2226
gboolean _tmp71_ = FALSE;
2227
gboolean _tmp72_ = FALSE;
2150
2228
if (c == 'e') {
2151
2234
_tmp71_ = TRUE;
2156
2239
_tmp70_ = TRUE;
2161
2244
_tmp69_ = TRUE;
2166
2249
_tmp68_ = TRUE;
2171
2254
_tmp67_ = TRUE;
2176
2259
_tmp66_ = TRUE;
2186
ValaDataType* _tmp72_;
2187
param_type = (_tmp72_ = _vala_code_node_ref0 (analyzer->double_type), _vala_code_node_unref0 (param_type), _tmp72_);
2264
ValaDataType* _tmp73_;
2265
param_type = (_tmp73_ = _vala_code_node_ref0 (analyzer->double_type), _vala_code_node_unref0 (param_type), _tmp73_);
2189
2267
if (c == 's') {
2190
ValaDataType* _tmp73_;
2191
param_type = (_tmp73_ = _vala_code_node_ref0 (analyzer->string_type), _vala_code_node_unref0 (param_type), _tmp73_);
2268
ValaDataType* _tmp74_;
2269
param_type = (_tmp74_ = _vala_code_node_ref0 (analyzer->string_type), _vala_code_node_unref0 (param_type), _tmp74_);
2193
2271
if (c == 'p') {
2194
ValaDataType* _tmp75_;
2195
ValaVoidType* _tmp74_;
2196
param_type = (_tmp75_ = (ValaDataType*) vala_pointer_type_new ((ValaDataType*) (_tmp74_ = vala_void_type_new (NULL)), NULL), _vala_code_node_unref0 (param_type), _tmp75_);
2197
_vala_code_node_unref0 (_tmp74_);
2272
ValaDataType* _tmp76_;
2273
ValaVoidType* _tmp75_;
2274
param_type = (_tmp76_ = (ValaDataType*) vala_pointer_type_new ((ValaDataType*) (_tmp75_ = vala_void_type_new (NULL)), NULL), _vala_code_node_unref0 (param_type), _tmp76_);
2275
_vala_code_node_unref0 (_tmp75_);
2199
2277
if (c == '%') {
2275
2353
_vala_collection_object_unref0 (_arg_it);
2277
2355
if (VALA_IS_VOID_TYPE (ret_type)) {
2278
gboolean _tmp79_ = FALSE;
2279
2356
gboolean _tmp80_ = FALSE;
2357
gboolean _tmp81_ = FALSE;
2280
2358
if (!VALA_IS_EXPRESSION_STATEMENT (vala_code_node_get_parent_node ((ValaCodeNode*) self))) {
2281
_tmp80_ = !VALA_IS_FOR_STATEMENT (vala_code_node_get_parent_node ((ValaCodeNode*) self));
2359
_tmp81_ = !VALA_IS_FOR_STATEMENT (vala_code_node_get_parent_node ((ValaCodeNode*) self));
2364
_tmp80_ = !VALA_IS_YIELD_STATEMENT (vala_code_node_get_parent_node ((ValaCodeNode*) self));
2283
2366
_tmp80_ = FALSE;
2286
_tmp79_ = !VALA_IS_YIELD_STATEMENT (vala_code_node_get_parent_node ((ValaCodeNode*) self));
2291
2369
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2292
2370
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), "invocation of void method not allowed as expression");
2293
2371
result = FALSE;
2304
2382
vala_expression_set_formal_value_type ((ValaExpression*) self, ret_type);
2305
vala_expression_set_value_type ((ValaExpression*) self, _tmp82_ = vala_data_type_get_actual_type (vala_expression_get_formal_value_type ((ValaExpression*) self), target_object_type, (_tmp81_ = vala_method_call_get_call (self), VALA_IS_MEMBER_ACCESS (_tmp81_) ? ((ValaMemberAccess*) _tmp81_) : NULL), (ValaCodeNode*) self));
2306
_vala_code_node_unref0 (_tmp82_);
2383
vala_expression_set_value_type ((ValaExpression*) self, _tmp83_ = vala_data_type_get_actual_type (vala_expression_get_formal_value_type ((ValaExpression*) self), target_object_type, (_tmp82_ = vala_method_call_get_call (self), VALA_IS_MEMBER_ACCESS (_tmp82_) ? ((ValaMemberAccess*) _tmp82_) : NULL), (ValaCodeNode*) self));
2384
_vala_code_node_unref0 (_tmp83_);
2307
2385
may_throw = FALSE;
2308
2386
if (VALA_IS_METHOD_TYPE (mtype)) {
2310
gboolean _tmp84_ = FALSE;
2311
2388
gboolean _tmp85_ = FALSE;
2312
2389
gboolean _tmp86_ = FALSE;
2390
gboolean _tmp87_ = FALSE;
2313
2391
m = _vala_code_node_ref0 (vala_method_type_get_method_symbol (VALA_METHOD_TYPE (mtype)));
2314
2392
if (self->priv->_is_yield_expression) {
2315
gboolean _tmp83_ = FALSE;
2393
gboolean _tmp84_ = FALSE;
2316
2394
if (!vala_method_get_coroutine (m)) {
2317
2395
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2318
2396
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), "yield expression requires async method");
2320
2398
if (vala_semantic_analyzer_get_current_method (analyzer) == NULL) {
2323
_tmp83_ = !vala_method_get_coroutine (vala_semantic_analyzer_get_current_method (analyzer));
2401
_tmp84_ = !vala_method_get_coroutine (vala_semantic_analyzer_get_current_method (analyzer));
2326
2404
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2327
2405
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), "yield expression not available outside async method");
2330
2408
if (m != NULL) {
2331
_tmp86_ = vala_method_get_coroutine (m);
2409
_tmp87_ = vala_method_get_coroutine (m);
2414
_tmp86_ = !self->priv->_is_yield_expression;
2333
2416
_tmp86_ = FALSE;
2336
_tmp85_ = !self->priv->_is_yield_expression;
2419
_tmp85_ = _vala_strcmp0 (vala_member_access_get_member_name (VALA_MEMBER_ACCESS (vala_method_call_get_call (self))), "end") != 0;
2338
2421
_tmp85_ = FALSE;
2341
_tmp84_ = _vala_strcmp0 (vala_member_access_get_member_name (VALA_MEMBER_ACCESS (vala_method_call_get_call (self))), "end") != 0;
2349
ValaIterator* _tmp88_;
2427
ValaIterator* _tmp89_;
2350
2428
ValaIterator* _error_type_it;
2351
_error_type_it = (_tmp88_ = vala_iterable_iterator ((ValaIterable*) (_tmp87_ = vala_code_node_get_error_types ((ValaCodeNode*) m))), _vala_collection_object_unref0 (_tmp87_), _tmp88_);
2429
_error_type_it = (_tmp89_ = vala_iterable_iterator ((ValaIterable*) (_tmp88_ = vala_code_node_get_error_types ((ValaCodeNode*) m))), _vala_collection_object_unref0 (_tmp88_), _tmp89_);
2353
2431
ValaDataType* error_type;
2354
2432
ValaDataType* call_error_type;
2395
2473
_vala_code_node_unref0 (d);
2398
if ((_tmp92_ = !vala_semantic_analyzer_check_arguments (analyzer, (ValaExpression*) self, mtype, params, _tmp91_ = vala_method_call_get_argument_list (self)), _vala_collection_object_unref0 (_tmp91_), _tmp92_)) {
2476
if ((_tmp93_ = !vala_semantic_analyzer_check_arguments (analyzer, (ValaExpression*) self, mtype, params, _tmp92_ = vala_method_call_get_argument_list (self)), _vala_collection_object_unref0 (_tmp92_), _tmp93_)) {
2399
2477
vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
2400
2478
result = FALSE;
2401
2479
_vala_code_node_unref0 (target_object_type);
2410
2488
if (may_throw) {
2411
gboolean _tmp93_ = FALSE;
2489
gboolean _tmp94_ = FALSE;
2412
2490
if (VALA_IS_LOCAL_VARIABLE (vala_code_node_get_parent_node ((ValaCodeNode*) self))) {
2415
_tmp93_ = VALA_IS_EXPRESSION_STATEMENT (vala_code_node_get_parent_node ((ValaCodeNode*) self));
2493
_tmp94_ = VALA_IS_EXPRESSION_STATEMENT (vala_code_node_get_parent_node ((ValaCodeNode*) self));
2419
2497
if (!VALA_IS_BLOCK (vala_semantic_analyzer_get_current_symbol (analyzer))) {
2420
2498
vala_report_error (vala_code_node_get_source_reference ((ValaCodeNode*) self), "Field initializers must not throw errors");
2422
2500
ValaCodeNode* old_parent_node;
2424
ValaLocalVariable* _tmp95_;
2502
ValaLocalVariable* _tmp96_;
2425
2503
ValaLocalVariable* local;
2426
2504
ValaDeclarationStatement* decl;
2427
2505
ValaExpression* temp_access;
2428
2506
ValaBlock* block;
2429
2507
old_parent_node = _vala_code_node_ref0 (vala_code_node_get_parent_node ((ValaCodeNode*) self));
2430
local = (_tmp95_ = vala_local_variable_new (vala_expression_get_value_type ((ValaExpression*) self), _tmp94_ = vala_code_node_get_temp_name ((ValaCodeNode*) self), NULL, vala_code_node_get_source_reference ((ValaCodeNode*) self)), _g_free0 (_tmp94_), _tmp95_);
2508
local = (_tmp96_ = vala_local_variable_new (vala_expression_get_value_type ((ValaExpression*) self), _tmp95_ = vala_code_node_get_temp_name ((ValaCodeNode*) self), NULL, vala_code_node_get_source_reference ((ValaCodeNode*) self)), _g_free0 (_tmp95_), _tmp96_);
2431
2509
vala_local_variable_set_floating (local, TRUE);
2432
2510
decl = vala_declaration_statement_new ((ValaSymbol*) local, vala_code_node_get_source_reference ((ValaCodeNode*) self));
2433
2511
vala_expression_insert_statement ((ValaExpression*) self, analyzer->insert_block, (ValaStatement*) decl);