/// <summary> /// Set type for member of class or struct that have type. (functions, fields , properties) /// </summary> /// <param name="context"></param> /// <returns></returns> public override object VisitTyped_member_declaration([NotNull] Typed_member_declarationContext context) { var type = ResolveType(context.type(), currentScope); base.VisitTyped_member_declaration(context); if (context.field_declaration() != null) { return(SetTypeForField(context.field_declaration(), type)); } else if (context.method_declaration() != null) { return(SetTypeForFunction(context.method_declaration(), type)); } else if (context.property_declaration() != null) { return(SetTypeForProperty(context.property_declaration(), type)); } return(null); }