%%
%% %CopyrightBegin%
%%
%% SPDX-License-Identifier: Apache-2.0
%%
%% Copyright Ericsson AB 2020-2026. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%%     http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%
%% %CopyrightEnd%
%%
%% WARNING: DO NOT EDIT THIS FILE.
%%
%% This file was auto-generated from attributes in the source
%% code.
%%
%% To add a description to a deprecation or removal attribute,
%% write a string after the arity:
%%
%%    -deprecated([{foo,1,"use bar/1 instead"}]).
%%    -deprecated_type([{gadget,1,"use widget/1 instead"}]).
%%    -deprecated_callback([{gadget,1,"use widget/1 instead"}]).
%%    -removed([{hello,2,"use there/2 instead"}]).
%%    -removed_type([{frobnitz,1,"use grunka/1 instead"}]).
%%    -removed_callback([{frobnitz,1,"use grunka/1 instead"}]).
%%
%% Descriptions cannot be given with the `f/1` shorthand, and
%% it will fall back to a generic description referring the
%% user to the documentation.
%%
%% Use `./otp_build update_deprecations` to update this file
%% after adding an attribute.
%%
-module(otp_internal).
-moduledoc false.
-include("otp_internal.hrl").
%%
-dialyzer({no_match, obsolete/3}).
obsolete(auth, cookie, 0) ->
    {deprecated, "use erlang:get_cookie/0 instead"};
obsolete(auth, cookie, 1) ->
    {deprecated, "use erlang:set_cookie/2 instead"};
obsolete(auth, is_auth, 1) ->
    {deprecated, "use net_adm:ping/1 instead"};
obsolete(calendar, local_time_to_universal_time, 1) ->
    {deprecated, "use calendar:local_time_to_universal_time_dst/1 instead"};
obsolete(code, lib_dir, 2) ->
    {deprecated, "this functionality will be removed in a future release"};
obsolete(crypto, enable_fips_mode, 1) ->
    {deprecated, "use config parameter fips_mode"};
obsolete(crypto, rand_uniform, 2) ->
    {deprecated, "use strong_rand_range/1 instead"};
obsolete(crypto, start, 0) ->
    {deprecated, "use application:start(crypto) instead"};
obsolete(crypto, stop, 0) ->
    {deprecated, "use application:stop(crypto) instead"};
obsolete(dbg, stop_clear, 0) ->
    {deprecated, "use dbg:stop/0 instead", "OTP 27"};
obsolete(disk_log, inc_wrap_file, 1) ->
    {deprecated, "use disk_log:next_file/1 instead", "OTP 28"};
obsolete(erlang, now, 0) ->
    {deprecated, "see the \"Time and Time Correction in Erlang\" chapter of the ERTS User's Guide for more information"};
obsolete(erlang, phash, 2) ->
    {deprecated, "use erlang:phash2/2 instead"};
obsolete(http_uri, decode, 1) ->
    {deprecated, "use uri_string:unquote function instead"};
obsolete(http_uri, encode, 1) ->
    {deprecated, "use uri_string:quote function instead"};
obsolete(httpd, parse_query, 1) ->
    {deprecated, "use uri_string:dissect_query/1 instead"};
obsolete(lists, zf, 2) ->
    {deprecated, "use filtermap/2 instead"};
obsolete(net, broadcast, 3) ->
    {deprecated, "use rpc:eval_everywhere/3 instead"};
obsolete(net, call, 4) ->
    {deprecated, "use rpc:call/4 instead"};
obsolete(net, cast, 4) ->
    {deprecated, "use rpc:cast/4 instead"};
obsolete(net, ping, 1) ->
    {deprecated, "use net_adm:ping/1 instead"};
obsolete(net, sleep, 1) ->
    {deprecated, "use 'receive after T -> ok end' instead"};
obsolete(queue, lait, 1) ->
    {deprecated, "use queue:liat/1 instead"};
obsolete(ssl, prf, 5) ->
    {deprecated, "Use export_key_materials/4 instead. Note that in OTP 28 the 'testing' way of calling this function will no longer be supported."};
obsolete(sys, get_debug, 3) ->
    {deprecated, "incorrectly documented and only for internal use. Can often be replaced with sys:get_log/1"};
obsolete(wxCalendarCtrl, enableYearChange, 1) ->
    {deprecated, "not available in wxWidgets-2.9 and later"};
obsolete(wxCalendarCtrl, enableYearChange, 2) ->
    {deprecated, "not available in wxWidgets-2.9 and later"};
obsolete(code, is_module_native, 1) ->
    {removed, "HiPE has been removed"};
obsolete(code, rehash, 0) ->
    {removed, "the code path cache feature has been removed"};
obsolete(core_lib, get_anno, 1) ->
    {removed, "use cerl:get_ann/1 instead"};
obsolete(core_lib, is_literal, 1) ->
    {removed, "use cerl:is_literal/1 instead"};
obsolete(core_lib, is_literal_list, 1) ->
    {removed, "use cerl:is_literal_list/1 instead"};
obsolete(core_lib, literal_value, 1) ->
    {removed, "use cerl:concrete/1 instead"};
obsolete(core_lib, set_anno, 2) ->
    {removed, "use cerl:set_ann/2 instead"};
obsolete(crypto, block_decrypt, 3) ->
    {removed, "use crypto:crypto_one_time/4 or crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 instead"};
obsolete(crypto, block_decrypt, 4) ->
    {removed, "use crypto:crypto_one_time/5, crypto:crypto_one_time_aead/6,7 or crypto:crypto_init + crypto:crypto_update + crypto:crypto_final instead"};
obsolete(crypto, block_encrypt, 3) ->
    {removed, "use crypto:crypto_one_time/4 or crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 instead"};
obsolete(crypto, block_encrypt, 4) ->
    {removed, "use crypto:crypto_one_time/5, crypto:crypto_one_time_aead/6,7 or crypto:crypto_init + crypto:crypto_update + crypto:crypto_final instead"};
obsolete(crypto, cmac, 3) ->
    {removed, "use crypto:mac/4 instead"};
obsolete(crypto, cmac, 4) ->
    {removed, "use crypto:macN/5 instead"};
obsolete(crypto, crypto_dyn_iv_init, 3) ->
    {removed, "not supported, use crypto:crypto_init/4"};
obsolete(crypto, crypto_dyn_iv_update, 3) ->
    {removed, "not supported, use crypto:crypto_update/2"};
obsolete(crypto, hmac, 3) ->
    {removed, "use crypto:mac/4 instead"};
obsolete(crypto, hmac, 4) ->
    {removed, "use crypto:macN/5 instead"};
obsolete(crypto, hmac_final, 1) ->
    {removed, "use crypto:mac_final/1 instead"};
obsolete(crypto, hmac_final_n, 2) ->
    {removed, "use crypto:mac_finalN/2 instead"};
obsolete(crypto, hmac_init, 2) ->
    {removed, "use crypto:mac_init/3 instead"};
obsolete(crypto, hmac_update, 2) ->
    {removed, "use crypto:mac_update/2 instead"};
obsolete(crypto, poly1305, 2) ->
    {removed, "use crypto:mac/3 instead"};
obsolete(crypto, stream_decrypt, 2) ->
    {removed, "use crypto:crypto_update/2 instead"};
obsolete(crypto, stream_encrypt, 2) ->
    {removed, "use crypto:crypto_update/2 instead"};
obsolete(disk_log, accessible_logs, 0) ->
    {removed, "use disk_log:all/0 instead"};
obsolete(disk_log, lclose, 1) ->
    {removed, "use disk_log:close/1 instead"};
obsolete(disk_log, lclose, 2) ->
    {removed, "use disk_log:close/1 instead"};
obsolete(erl_lint, modify_line, 2) ->
    {removed, "use erl_parse:map_anno/2 instead"};
obsolete(erl_parse, get_attribute, 2) ->
    {removed, "erl_anno:{column,line,location,text}/1 instead"};
obsolete(erl_parse, get_attributes, 1) ->
    {removed, "erl_anno:{column,line,location,text}/1 instead"};
obsolete(erl_parse, set_line, 2) ->
    {removed, "use erl_anno:set_line/2"};
obsolete(erl_scan, set_attribute, 3) ->
    {removed, "use erl_anno:set_line/2 instead"};
obsolete(erlang, get_stacktrace, 0) ->
    {removed, "use the new try/catch syntax for retrieving the stack backtrace"};
obsolete(erlang, hash, 2) ->
    {removed, "use erlang:phash2/2 instead"};
obsolete(file, pid2name, 1) ->
    {removed, "this functionality is no longer supported"};
obsolete(filename, safe_relative_path, 1) ->
    {removed, "use filelib:safe_relative_path/2 instead"};
obsolete(ftp, start_service, 1) ->
    {removed, "use ftp:open/2 instead"};
obsolete(ftp, stop_service, 1) ->
    {removed, "use ftp:close/1 instead"};
obsolete(http_uri, parse, 1) ->
    {removed, "use uri_string functions instead"};
obsolete(http_uri, parse, 2) ->
    {removed, "use uri_string functions instead"};
obsolete(http_uri, scheme_defaults, 0) ->
    {removed, "use uri_string functions instead"};
obsolete(httpd_conf, check_enum, 2) ->
    {removed, "use lists:member/2 instead"};
obsolete(httpd_conf, clean, 1) ->
    {removed, "use string:strip/1 instead or possibly the re module"};
obsolete(httpd_conf, custom_clean, 3) ->
    {removed, "use string:strip/1 instead or possibly the re module"};
obsolete(httpd_conf, is_directory, 1) ->
    {removed, "use filelib:is_dir/1 instead"};
obsolete(httpd_conf, is_file, 1) ->
    {removed, "use filelib:is_file/1 instead"};
obsolete(httpd_conf, make_integer, 1) ->
    {removed, "use erlang:list_to_integer/1 instead"};
obsolete(httpd_util, decode_hex, 1) ->
    {removed, "use uri_string:unquote function instead"};
obsolete(httpd_util, encode_hex, 1) ->
    {removed, "use uri_string:quote function instead"};
obsolete(httpd_util, flatlength, 1) ->
    {removed, "use erlang:iolist_size/1 instead"};
obsolete(httpd_util, hexlist_to_integer, 1) ->
    {removed, "use erlang:list_to_integer/2 with base 16 instead"};
obsolete(httpd_util, integer_to_hexlist, 1) ->
    {removed, "use erlang:integer_to_list/2 with base 16 instead"};
obsolete(httpd_util, strip, 1) ->
    {removed, "use string:trim/1 instead"};
obsolete(httpd_util, suffix, 1) ->
    {removed, "use filename:extension/1 and string:trim/2 instead"};
obsolete(net, relay, 1) ->
    {removed, "use fun Relay(Pid) -> receive X -> Pid ! X end, Relay(Pid) instead"};
obsolete(public_key, ssh_decode, 2) ->
    {removed, "use ssh_file:decode/2 instead"};
obsolete(public_key, ssh_encode, 2) ->
    {removed, "use ssh_file:encode/2 instead"};
obsolete(public_key, ssh_hostkey_fingerprint, 1) ->
    {removed, "use ssh:hostkey_fingerprint/1 instead"};
obsolete(public_key, ssh_hostkey_fingerprint, 2) ->
    {removed, "use ssh:hostkey_fingerprint/2 instead"};
obsolete(rpc, safe_multi_server_call, 2) ->
    {removed, "use rpc:multi_server_call/2 instead"};
obsolete(rpc, safe_multi_server_call, 3) ->
    {removed, "use rpc:multi_server_call/3 instead"};
obsolete(ssl, cipher_suites, 0) ->
    {removed, "use ssl:cipher_suites/2,3 instead"};
obsolete(ssl, cipher_suites, 1) ->
    {removed, "use ssl:cipher_suites/2,3 instead"};
obsolete(ssl, connection_info, 1) ->
    {removed, "use ssl:connection_information/1,2 instead"};
obsolete(ssl, negotiated_next_protocol, 1) ->
    {removed, "use ssl:negotiated_protocol/1 instead"};
obsolete(zlib, adler32, 2) ->
    {removed, "use erlang:adler32/1 instead"};
obsolete(zlib, adler32, 3) ->
    {removed, "use erlang:adler32/2 instead"};
obsolete(zlib, adler32_combine, 4) ->
    {removed, "use erlang:adler_combine/3 instead"};
obsolete(zlib, crc32, 1) ->
    {removed, "use erlang:crc32/1 on the uncompressed data instead"};
obsolete(zlib, crc32, 2) ->
    {removed, "use erlang:crc32/1 instead"};
obsolete(zlib, crc32, 3) ->
    {removed, "use erlang:crc32/2 instead"};
obsolete(zlib, crc32_combine, 4) ->
    {removed, "use erlang:crc32_combine/3 instead"};
obsolete(zlib, getBufSize, 1) ->
    {removed, "this function has been removed"};
obsolete(zlib, inflateChunk, 1) ->
    {removed, "use zlib:safeInflate/2 instead"};
obsolete(zlib, inflateChunk, 2) ->
    {removed, "use zlib:safeInflate/2 instead"};
obsolete(zlib, setBufSize, 2) ->
    {removed, "this function has been removed"};
obsolete(crypto, private_decrypt, 4) ->
    {unsafe, possibly};
obsolete(crypto, private_encrypt, 4) ->
    {unsafe, possibly};
obsolete(crypto, public_decrypt, 4) ->
    {unsafe, possibly};
obsolete(crypto, public_encrypt, 4) ->
    {unsafe, possibly};
obsolete(erlang, list_to_atom, 1) ->
    {unsafe, possibly};
obsolete(public_key, decrypt_private, 2) ->
    {unsafe, undefined};
obsolete(public_key, decrypt_private, 3) ->
    {unsafe, possibly};
obsolete(public_key, decrypt_public, 2) ->
    {unsafe, undefined};
obsolete(public_key, decrypt_public, 3) ->
    {unsafe, possibly};
obsolete(public_key, encrypt_private, 2) ->
    {unsafe, undefined};
obsolete(public_key, encrypt_private, 3) ->
    {unsafe, possibly};
obsolete(public_key, encrypt_public, 2) ->
    {unsafe, undefined};
obsolete(public_key, encrypt_public, 3) ->
    {unsafe, possibly};
obsolete(xmerl_sax_parser, file, 2) ->
    {unsafe, possibly};
obsolete(xmerl_sax_parser, stream, 2) ->
    {unsafe, possibly};
obsolete(auth, node_cookie, _) ->
    {deprecated, "use erlang:set_cookie/2 and net_adm:ping/1 instead"};
obsolete(asn1ct, decode, _) ->
    {removed, "use Mod:decode/2 instead"};
obsolete(asn1ct, encode, _) ->
    {removed, "use Mod:encode/2 instead"};
obsolete(crypto, next_iv, _) ->
    {removed, "see the 'New and Old API' chapter of the CRYPTO User's guide"};
obsolete(crypto, stream_init, _) ->
    {removed, "use crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 or crypto:crypto_one_time/4 instead"};
obsolete(erl_scan, attributes_info, _) ->
    {removed, "use erl_anno:{column,line,location,text}/1 instead"};
obsolete(erl_scan, token_info, _) ->
    {removed, "use erl_scan:{category,column,line,location,symbol,text}/1 instead"};
obsolete(filename, find_src, _) ->
    {removed, "use filelib:find_source/1,3 instead"};
obsolete(mnesia_registry, create_table, _) ->
    {removed, "use mnesia:create_table/2 instead"};
obsolete(ssl, ssl_accept, _) ->
    {removed, "use ssl:handshake/1,2,3 instead"};
obsolete(erlang, binary_to_atom, _) ->
    {unsafe, possibly};
obsolete(erlang, binary_to_term, _) ->
    {unsafe, possibly};
obsolete(file, consult, _) ->
    {unsafe, possibly};
obsolete(file, path_consult, _) ->
    {unsafe, possibly};
obsolete(os, cmd, _) ->
    {unsafe, possibly};
obsolete(socket, open, _) ->
    {unsafe, possibly};
obsolete(ct_ftp, _, _) ->
    {deprecated, "Legacy protocol support will be dropped in OTP-30", "OTP 30"};
obsolete(ct_slave, _, _) ->
    {deprecated, "use ?CT_PEER(), or the 'peer' module instead", "OTP 31"};
obsolete(ftp, _, _) ->
    {deprecated, "Legacy protocol support will be dropped in OTP-30, use more modern approach for file transfer as for instance SFTP (SSH File Transfer Protocol).", "OTP 30"};
obsolete(gen_fsm, _, _) ->
    {deprecated, "use the 'gen_statem' module instead"};
obsolete(mod_actions, _, _) ->
    {deprecated, "use 'mod_esi' for dynamic page generation", "OTP 30"};
obsolete(mod_cgi, _, _) ->
    {deprecated, "use 'mod_esi' for dynamic page generation", "OTP 30"};
obsolete(odbc, _, _) ->
    {deprecated, "Legacy protocol support will be dropped in OTP-30, does not really provide backend transparency and known usage is low.", "OTP 30"};
obsolete(random, _, _) ->
    {deprecated, "use the 'rand' module instead"};
obsolete(slave, _, _) ->
    {deprecated, "use the 'peer' module instead", "OTP 31"};
obsolete(erts_alloc_config, _, _) ->
    {removed, "this module has as of OTP 26.0 been removed"};
obsolete(os_mon_mib, _, _) ->
    {removed, "this module was removed in OTP 22.0"};
obsolete(pg2, _, _) ->
    {removed, "this module was removed in OTP 24. Use 'pg' instead"};
obsolete(http_uri, _, _) ->
    {unsafe, "use uri_string instead"};
obsolete(xmerl_scan, _, _) ->
    {unsafe, possibly};
obsolete(_,_,_) -> no.

-dialyzer({no_match, obsolete_type/3}).
obsolete_type(ssl, prf_random, 0) ->
    {deprecated, "Only used in deprecated function prf/5 and will no longer be needed."};
obsolete_type(crypto, hmac_state, 0) ->
    {removed, "see the 'New and Old API' chapter of the CRYPTO User's guide"};
obsolete_type(crypto, retired_cbc_cipher_aliases, 0) ->
    {removed, "Use aes_*_cbc or des_ede3_cbc"};
obsolete_type(crypto, retired_cfb_cipher_aliases, 0) ->
    {removed, "Use aes_*_cfb8, aes_*_cfb128 or des_ede3_cfb"};
obsolete_type(crypto, retired_ctr_cipher_aliases, 0) ->
    {removed, "Use aes_*_ctr"};
obsolete_type(crypto, retired_ecb_cipher_aliases, 0) ->
    {removed, "Use aes_*_ecb"};
obsolete_type(crypto, stream_state, 0) ->
    {removed, "see the 'New and Old API' chapter of the CRYPTO User's guide"};
obsolete_type(erl_scan, column, 0) ->
    {removed, "use erl_anno:column() instead"};
obsolete_type(erl_scan, line, 0) ->
    {removed, "use erl_anno:line() instead"};
obsolete_type(erl_scan, location, 0) ->
    {removed, "use erl_anno:location() instead"};
obsolete_type(http_uri, default_scheme_port_number, 0) ->
    {removed, "use uri_string instead"};
obsolete_type(http_uri, fragment, 0) ->
    {removed, "use uri_string instead"};
obsolete_type(http_uri, host, 0) ->
    {removed, "use uri_string instead"};
obsolete_type(http_uri, path, 0) ->
    {removed, "use uri_string instead"};
obsolete_type(http_uri, query, 0) ->
    {removed, "use uri_string instead"};
obsolete_type(http_uri, scheme, 0) ->
    {removed, "use uri_string instead"};
obsolete_type(http_uri, uri, 0) ->
    {removed, "use uri_string instead"};
obsolete_type(http_uri, user_info, 0) ->
    {removed, "use uri_string instead"};
obsolete_type(_,_,_) -> no.

-dialyzer({no_match, obsolete_callback/3}).
obsolete_callback(gen_event, format_status, 2) ->
    {deprecated, "use format_status/1 instead"};
obsolete_callback(gen_server, format_status, 2) ->
    {deprecated, "use format_status/1 instead"};
obsolete_callback(gen_statem, format_status, 2) ->
    {deprecated, "use format_status/1 instead"};
obsolete_callback(gen_fsm, _, _) ->
    {deprecated, "use the 'gen_statem' module instead"};
obsolete_callback(_,_,_) -> no.

