public procedure_definition CreateAndAddToClassWriteProc(statement st, ident id, SourceContext sc) { var fp = SyntaxTreeBuilder.BuildFormalParameters(new List <ident>() { new ident("value") }, new List <type_definition>() { new no_type() }); var pd = SyntaxTreeBuilder.BuildShortProcDefinition(fp, null, new method_name(id.name, sc), st, sc); return(pd); }
private void ExtendedWriteAccessorDesugaring(write_accessor_name write_accessor, simple_property simple_property, class_members members) { var write_accessor_procedure = write_accessor.pr as procedure_definition; //extended indexed property if (simple_property.parameter_list != null) { var proc_header_params = new List <ident>(); var proc_header_types = new List <type_definition>(); foreach (var param in simple_property.parameter_list.parameters) { foreach (var ident in param.names.idents) { proc_header_params.Add(ident); proc_header_types.Add(param.type); } } proc_header_params.Add(new ident("value")); proc_header_types.Add(simple_property.property_type); write_accessor_procedure.proc_header.parameters = SyntaxTreeBuilder.BuildFormalParameters( proc_header_params, proc_header_types); } else { write_accessor_procedure.proc_header.parameters.params_list[0].vars_type = simple_property.property_type; } members.Add(write_accessor_procedure); if (simple_property.attr == definition_attribute.Static) { write_accessor_procedure.proc_header.class_keyword = true; var proc_attr = new procedure_attribute(proc_attribute.attr_static); proc_attr.source_context = write_accessor_procedure.proc_header.source_context; write_accessor_procedure.proc_header.proc_attributes = new procedure_attributes_list(proc_attr); } }
private void ExtendedReadAccessorDesugaring(read_accessor_name read_accessor, simple_property simple_property, class_members members) { var read_accessor_procedure = read_accessor.pr as procedure_definition; var func_header = (read_accessor_procedure.proc_header as function_header); func_header.return_type = simple_property.property_type; //extended indexed property if (simple_property.parameter_list != null) { var func_header_params = new List <ident>(); var func_header_types = new List <type_definition>(); foreach (var param in simple_property.parameter_list.parameters) { foreach (var ident in param.names.idents) { func_header_params.Add(ident); func_header_types.Add(param.type); } } func_header.parameters = SyntaxTreeBuilder.BuildFormalParameters( func_header_params, func_header_types); } members.Add(read_accessor_procedure); if (simple_property.attr == definition_attribute.Static) { read_accessor_procedure.proc_header.class_keyword = true; var proc_attr = new procedure_attribute(proc_attribute.attr_static); proc_attr.source_context = read_accessor_procedure.proc_header.source_context; read_accessor_procedure.proc_header.proc_attributes = new procedure_attributes_list(proc_attr); } }