+ if(declaration->type->type != TYPE_METHOD) {
+ parser_print_error_prefix();
+ fprintf(stderr, "Declarator ");
+ print_type(declaration->type, declaration->symbol);
+ fprintf(stderr, " is not a method type.\n");
+ }
+
+ if(declaration->initializer != NULL) {
+ parser_error_multiple_definition(declaration, ndeclaration);
+ }
+
+ int top = environment_top();
+ context_t *last_context = context;
+ set_context(&declaration->context);
+
+ /* push function parameters */
+ declaration_t *parameter = declaration->context.declarations;
+ for( ; parameter != NULL; parameter = parameter->next) {
+ environment_push(parameter, context);
+ }
+