Build log
nerves_system_x86_64
tracy_web 0.0.1-rc.1 · fail · run tracy_web-0.0.1-rc.1-1791143770106
1558 of 1558 lines
1Resolving Hex dependencies...2Resolution completed in 0.187s3Unchanged:4 circular_buffer 1.1.05 cowboy 1.1.2 VULNERABLE!6 GHSA-w4f7-4cxr-rv3c (MEDIUM)7 aka: CVE-2026-43966, EEF-CVE-2026-439668 cowboy and gun affected by an HTTP Request/Response Splitting vulnerability9 https://osv.dev/vulnerability/GHSA-w4f7-4cxr-rv3c10 cowlib 1.0.2 VULNERABLE!11 EEF-CVE-2026-7790 (HIGH)12 aka: CVE-2026-7790, GHSA-32p9-57cr-4x6513 Unbounded chunk-size hex digits in cowlib cause quadratic CPU and memory DoS14 https://osv.dev/vulnerability/EEF-CVE-2026-77901516 EEF-CVE-2026-43970 (HIGH)17 aka: CVE-2026-43970, GHSA-84f2-rp86-235p18 Decompression Bomb in cow_spdy:inflate/2 Allows Memory Exhaustion via Crafted SPDY Frame19 https://osv.dev/vulnerability/EEF-CVE-2026-4397020 elixir_make 0.10.021 expo 1.1.122 gettext 0.26.223 interactive_cmd 0.1.424 mime 1.6.025 nerves 2.0.0-pre.226 nerves_discovery 0.1.527 nerves_logging 0.2.428 nerves_runtime 0.13.1329 nerves_system_bbb 2.30.230 nerves_system_br 1.34.431 nerves_system_mangopi_mq_pro 0.17.232 nerves_system_qemu_aarch64 0.4.233 nerves_system_rpi0 2.1.234 nerves_system_rpi4 2.1.235 nerves_system_rpi5 2.1.236 nerves_system_trellis 0.5.037 nerves_system_x86_64 1.34.238 nerves_toolchain_aarch64_nerves_linux_gnu 15.3.139 nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.140 nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.141 nerves_toolchain_riscv64_nerves_linux_gnu 15.3.142 nerves_toolchain_x86_64_nerves_linux_musl 15.3.143 nerves_uevent 0.1.744 phoenix 1.3.5 VULNERABLE!45 GHSA-p8f7-22gq-m7j9 (HIGH)46 aka: CVE-2022-4297547 Phoenix before 1.6.14 mishandles check_origin wildcarding48 https://osv.dev/vulnerability/GHSA-p8f7-22gq-m7j94950 EEF-CVE-2026-56812 (MEDIUM)51 aka: CVE-2026-56812, GHSA-63mc-hw7g-86rr52 Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff53 https://osv.dev/vulnerability/EEF-CVE-2026-568125455 EEF-CVE-2026-56811 (HIGH)56 aka: CVE-2026-56811, GHSA-6983-jfq8-485w57 Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service58 https://osv.dev/vulnerability/EEF-CVE-2026-5681159 phoenix_html 2.10.5 VULNERABLE!60 GHSA-5g2h-9x5v-5h3x (MEDIUM)61 aka: CVE-2021-46871, GHSA-j3gg-r6gp-95q262 phoenix_html allows Cross-site Scripting in HEEx class attributes63 https://osv.dev/vulnerability/GHSA-5g2h-9x5v-5h3x64 phoenix_pubsub 1.1.265 plug 1.3.6 VULNERABLE!66 EEF-CVE-2026-56813 (LOW)67 aka: CVE-2026-56813, GHSA-wpmj-jh88-rpgm68 Cookie attribute injection in Plug.Conn.Cookies.encode/269 https://osv.dev/vulnerability/EEF-CVE-2026-5681370 poison 3.1.071 property_table 0.3.472 ranch 1.3.273 ring_logger 0.11.774 tablet 0.3.375 toolshed 0.5.076 tracy 0.1.077 tracy_web 0.0.1-rc.178 uboot_env 1.0.279* Getting tracy_web (Hex package)80* Getting nerves (Hex package)81* Getting ring_logger (Hex package)82* Getting toolshed (Hex package)83* Getting nerves_runtime (Hex package)84* Getting nerves_system_bbb (Hex package)85* Getting nerves_system_mangopi_mq_pro (Hex package)86* Getting nerves_system_qemu_aarch64 (Hex package)87* Getting nerves_system_rpi0 (Hex package)88* Getting nerves_system_rpi4 (Hex package)89* Getting nerves_system_rpi5 (Hex package)90* Getting nerves_system_trellis (Hex package)91* Getting nerves_system_x86_64 (Hex package)92* Getting nerves_system_br (Hex package)93* Getting nerves_toolchain_x86_64_nerves_linux_musl (Hex package)94* Getting nerves_toolchain_armv7_nerves_linux_gnueabihf (Hex package)95* Getting nerves_toolchain_aarch64_nerves_linux_gnu (Hex package)96* Getting nerves_toolchain_armv6_nerves_linux_gnueabihf (Hex package)97* Getting nerves_toolchain_riscv64_nerves_linux_gnu (Hex package)98* Getting nerves_logging (Hex package)99* Getting nerves_uevent (Hex package)100* Getting uboot_env (Hex package)101* Getting elixir_make (Hex package)102* Getting property_table (Hex package)103* Getting circular_buffer (Hex package)104* Getting interactive_cmd (Hex package)105* Getting nerves_discovery (Hex package)106* Getting tablet (Hex package)107* Getting cowboy (Hex package)108* Getting gettext (Hex package)109* Getting phoenix (Hex package)110* Getting phoenix_html (Hex package)111* Getting phoenix_pubsub (Hex package)112* Getting tracy (Hex package)113* Getting plug (Hex package)114* Getting mime (Hex package)115* Getting poison (Hex package)116* Getting expo (Hex package)117* Getting cowlib (Hex package)118* Getting ranch (Hex package)119Found packages with security advisories, see above for details120 warning: String.strip/1 is deprecated. Use String.trim/1 instead121 │122 4 │ @version File.read!("VERSION") |> String.strip123 │ ~124 │125 └─ /work/proj/deps_x86_64/poison/mix.exs:4:44: Poison.Mixfile (module)126127warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"128 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2129 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1130 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5131 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2132 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4133 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2134135==> plug136Compiling 44 files (.ex)137warning: Kernel.to_char_list/1 is deprecated, use Kernel.to_charlist/1 instead138 lib/plug/adapters/cowboy.ex:220: Plug.Adapters.Cowboy.put_ssl_file/3139140warning: Kernel.to_char_list/1 is deprecated, use Kernel.to_charlist/1 instead141 lib/plug/adapters/cowboy.ex:238: Plug.Adapters.Cowboy.to_char_list/2142143 warning: using single-quoted strings to represent charlists is deprecated.144 Use ~c"" if you indeed want a charlist or use "" instead.145 You may run "mix format --migrate" to change all single-quoted146 strings to use the ~c sigil and fix this warning.147 │148 230 │ generated? = :erlang.system_info(:otp_release) >= '19'149 │ ~150 │151 └─ lib/plug/builder.ex:230:55152153 warning: "not expr1 in expr2" is deprecated, use "expr1 not in expr2" instead154 │155 421 │ when not state in @unsent do156 │ ~157 │158 └─ lib/plug/conn.ex:421:22159160 warning: "not expr1 in expr2" is deprecated, use "expr1 not in expr2" instead161 │162 445 │ when not state in @unsent do163 │ ~164 │165 └─ lib/plug/conn.ex:445:22166167 warning: "not expr1 in expr2" is deprecated, use "expr1 not in expr2" instead168 │169 497 │ when not state in @unsent do170 │ ~171 │172 └─ lib/plug/conn.ex:497:22173174 warning: "not expr1 in expr2" is deprecated, use "expr1 not in expr2" instead175 │176 883 │ def put_session(%Conn{state: state}, _key, _value) when not state in @unsent,177 │ ~178 │179 └─ lib/plug/conn.ex:883:69180181 warning: "not expr1 in expr2" is deprecated, use "expr1 not in expr2" instead182 │183 907 │ def delete_session(%Conn{state: state}, _key) when not state in @unsent,184 │ ~185 │186 └─ lib/plug/conn.ex:907:64187188 warning: "not expr1 in expr2" is deprecated, use "expr1 not in expr2" instead189 │190 939 │ def configure_session(%Conn{state: state}, _opts) when not state in @unsent,191 │ ~192 │193 └─ lib/plug/conn.ex:939:68194195 warning: "not expr1 in expr2" is deprecated, use "expr1 not in expr2" instead196 │197 961 │ when not state in @unsent do198 │ ~199 │200 └─ lib/plug/conn.ex:961:22201202 warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead203 │204 6 │ custom_statuses = Application.get_env(:plug, :statuses, %{})205 │ ~206 │207 └─ lib/plug/conn/status.ex:6:33: Plug.Conn.Status (module)208209 warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead210 │211 65 │ mask(left, right, <<acc::binary, x ^^^ y>>)212 │ ~213 │214 └─ lib/plug/crypto.ex:65:40215216 warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead217 │218 87 │ masked_compare(left, right, mask, acc ||| (x ^^^ (y ^^^ z)))219 │ ~220 │221 └─ lib/plug/crypto.ex:87:50222223 warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead224 │225 87 │ masked_compare(left, right, mask, acc ||| (x ^^^ (y ^^^ z)))226 │ ~227 │228 └─ lib/plug/crypto.ex:87:57229230 warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead231 │232 108 │ secure_compare(left, right, acc ||| (x ^^^ y))233 │ ~234 │235 └─ lib/plug/crypto.ex:108:44236237 warning: use Bitwise is deprecated. import Bitwise instead238 │239 6 │ use Bitwise240 │ ~~~~~~~~~~~241 │242 └─ lib/plug/crypto.ex:6: Plug.Crypto (module)243244 warning: use Bitwise is deprecated. import Bitwise instead245 │246 13 │ use Bitwise247 │ ~~~~~~~~~~~248 │249 └─ lib/plug/crypto/key_generator.ex:13: Plug.Crypto.KeyGenerator (module)250251 warning: the variable "max_length" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator252 │253 59 │ <<bin::binary-size(max_length), _::binary>> = key254 │ ~255 │256 └─ lib/plug/crypto/key_generator.ex:59:24: Plug.Crypto.KeyGenerator.generate/7257258 warning: unused require Bitwise259 │260 64 │ require Bitwise261 │ ~262 │263 └─ lib/plug/csrf_protection.ex:64:3264265 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead266 │267 4 │ if Application.get_env(:plug, :mimes) do268 │ ~269 │270 └─ lib/plug/mime.ex:4:18: Plug.MIME (module)271272 warning: unused require Logger273 │274 32 │ require Logger275 │ ~276 │277 └─ lib/plug/request_id.ex:32:3278279 warning: calling super for GenServer callback handle_info/2 is deprecated280 │281 164 │ super(msg, state)282 │ ~283 │284 └─ lib/plug/upload.ex:164:5: Plug.Upload.handle_info/2285286 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead287 │288 39 │ reraise e, System.stacktrace289 │ ~290 │291 └─ lib/plug/parsers/multipart.ex:39:27: Plug.Parsers.MULTIPART.parse/5292 └─ lib/plug/parsers/multipart.ex:41:73: Plug.Parsers.MULTIPART.parse/5293294 warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead295 │296 12 │ worker(Plug.Upload, [])297 │ ~298 │299 └─ lib/plug/supervisor.ex:12:7: Plug.Supervisor.init/1300301 warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead302 │303 16 │ supervise(children, strategy: :one_for_one)304 │ ~305 │306 └─ lib/plug/supervisor.ex:16:5: Plug.Supervisor.init/1307308 warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs)309 │310 210 │ if Code.ensure_compiled?(module) and function_exported?(module, :init, 1) do311 │ ~312 │313 └─ lib/plug/parsers.ex:210:15: Plug.Parsers.convert_parsers/2314315 warning: MIME.valid?/1 is deprecated. Use MIME.extensions(type) != [] instead316 │317 28 │ MIME.valid?(type)318 │ ~319 │320 └─ lib/plug/mime.ex:28:10: Plug.MIME.valid?/1321322 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead323 │324 139 │ __catch__(conn, kind, reason, System.stacktrace, opts)325 │ ~326 │327 └─ lib/plug/debugger.ex:139:42: Plug.Debugger.__catch__/4328329 warning: String.rstrip/1 is deprecated. Use String.trim_trailing/1 instead330 │331 635 │ <pre class="code code-block"><%= for {index, line, highlight} <- snippet do %><span class="line <%= if highlight, do: "-highlight" %>"><span class="ln"><%= h index %></span><span class="code"><%= h String.rstrip(line) %></span></span>332 │ ~333 │334 └─ lib/plug/templates/debugger.html.eex:635:206: Plug.Debugger.template_html/1335336 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead337 │338 82 │ __catch__(conn, kind, reason, reason, System.stacktrace, handle_errors)339 │ ~340 │341 └─ lib/plug/error_handler.ex:82:50: Plug.ErrorHandler.__catch__/4342343 warning: :crypto.block_encrypt/4 is undefined or private, use crypto:crypto_one_time/5, crypto:crypto_one_time_aead/6,7 or crypto:crypto_init + crypto:crypto_update + crypto:crypto_final instead344 │345 57 │ {cipher_text, cipher_tag} = :crypto.block_encrypt(:aes_gcm, key, iv, {aad, plain_text})346 │ ~347 │348 └─ lib/plug/crypto/message_encryptor.ex:57:41: Plug.Crypto.MessageEncryptor.aes128_gcm_encrypt/3349 └─ lib/plug/crypto/message_encryptor.ex:104:41: Plug.Crypto.MessageEncryptor.aes_gcm_key_wrap/3350 └─ lib/plug/crypto/message_encryptor.ex:314:13: Plug.Crypto.MessageEncryptor.encrypt_legacy/4351 └─ lib/plug/crypto/message_encryptor.ex:332:27: Plug.Crypto.MessageEncryptor.aes256_cbc_hmac_sha1_encrypt/3352353 warning: :crypto.hmac/3 is undefined or private, use crypto:mac/4 instead354 │355 41 │ signature = :crypto.hmac(:sha, key, plain_text)356 │ ~357 │358 └─ lib/plug/crypto/message_verifier.ex:41:26: Plug.Crypto.MessageVerifier.hmac_sha1_sign/2359 └─ lib/plug/crypto/message_verifier.ex:49:29: Plug.Crypto.MessageVerifier.hmac_sha1_verify/2360 └─ lib/plug/crypto/message_verifier.ex:71:26: Plug.Crypto.MessageVerifier.hmac_sha2_sign/3361 └─ lib/plug/crypto/message_verifier.ex:80:29: Plug.Crypto.MessageVerifier.hmac_sha2_verify/2362363 warning: :crypto.block_decrypt/4 is undefined or private, use crypto:crypto_one_time/5, crypto:crypto_one_time_aead/6,7 or crypto:crypto_init + crypto:crypto_update + crypto:crypto_final instead364 │365 79 │ :crypto.block_decrypt(:aes_gcm, key, iv, {aad, cipher_text, cipher_tag})366 │ ~367 │368 └─ lib/plug/crypto/message_encryptor.ex:79:21: Plug.Crypto.MessageEncryptor.aes128_gcm_decrypt/3369 └─ lib/plug/crypto/message_encryptor.ex:120:17: Plug.Crypto.MessageEncryptor.aes_gcm_key_unwrap/3370 └─ lib/plug/crypto/message_encryptor.ex:122:17: Plug.Crypto.MessageEncryptor.aes_gcm_key_unwrap/3371 └─ lib/plug/crypto/message_encryptor.ex:124:17: Plug.Crypto.MessageEncryptor.aes_gcm_key_unwrap/3372 └─ lib/plug/crypto/message_encryptor.ex:321:13: Plug.Crypto.MessageEncryptor.decrypt_legacy/4373 └─ lib/plug/crypto/message_encryptor.ex:349:17: Plug.Crypto.MessageEncryptor.aes256_cbc_hmac_sha1_decrypt/3374375 warning: :crypto.hmac/3 is undefined or private, use crypto:mac/4 instead376 │377 275 │ cipher_tag = Base.url_encode64(:crypto.hmac(:sha, sign_secret, cipher_text))378 │ ~379 │380 └─ lib/plug/crypto/message_encryptor.ex:275:44: Plug.Crypto.MessageEncryptor.encode_legacy_token/3381 └─ lib/plug/crypto/message_encryptor.ex:291:44: Plug.Crypto.MessageEncryptor.decode_legacy_token/2382383 warning: :crypto.hmac/3 is undefined or private, use crypto:mac/4 instead384 │385 78 │ &:crypto.hmac(digest, secret, &1)386 │ ~387 │388 └─ lib/plug/crypto/key_generator.ex:78:14: Plug.Crypto.KeyGenerator.mac_fun/2389390 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead391 │392 21 │ stack = System.stacktrace393 │ ~394 │395 └─ lib/plug/conn/wrapper_error.ex:21:22: Plug.Conn.WrapperError.reraise/3396 └─ lib/plug/conn/wrapper_error.ex:26:40: Plug.Conn.WrapperError.reraise/3397398 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead399 │400 21 │ stack = System.stacktrace()401 │ ~402 │403 └─ lib/plug/adapters/cowboy/handler.ex:21:24: Plug.Adapters.Cowboy.Handler.upgrade/4404 └─ lib/plug/adapters/cowboy/handler.ex:26:24: Plug.Adapters.Cowboy.Handler.upgrade/4405 └─ lib/plug/adapters/cowboy/handler.ex:30:24: Plug.Adapters.Cowboy.Handler.upgrade/4406407 warning: a struct for Plug.Conn is expected on struct update:408409 %Plug.Conn{410 conn411 | adapter: {Plug.Adapters.Test.Conn, state},412 host: uri.host || conn.host || "www.example.com",413 method: method,414 owner: owner,415 path_info: split_path(uri.path),416 port: uri.port || 80,417 peer: {{127, 0, 0, 1}, 111_317},418 remote_ip: {127, 0, 0, 1},419 req_headers: req_headers,420 request_path: uri.path,421 query_string: query,422 params: params || %Plug.Conn.Unfetched{aspect: :params},423 scheme: String.to_atom(String.downcase(uri.scheme || "http"))424 }425426 but got type:427428 dynamic(%{..., req_headers: term()})429430 where "conn" was given the type:431432 # type: dynamic(%{..., req_headers: term()})433 # from: lib/plug/adapters/test/conn.ex:15:35434 body_or_params(body_or_params, query, conn.req_headers)435436 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"437438 type warning found at:439 │440 19 │ %Plug.Conn{conn |441 │ ~442 │443 └─ lib/plug/adapters/test/conn.ex:19:5: Plug.Adapters.Test.Conn.conn/4444445 warning: Atom.to_char_list/1 is deprecated. Use Atom.to_charlist/1 instead446 │447 186 │ case Atom.to_char_list(plug) do448 │ ~449 │450 └─ lib/plug/builder.ex:186:15: Plug.Builder.init_plug/1451452 warning: Enum.partition/2 is deprecated. Use Enum.split_with/2 instead453 │454 43 │ Enum.partition(cowboy_options, &is_tuple(&1) and tuple_size(&1) == 2)455 │ ~456 │457 └─ lib/plug/adapters/cowboy.ex:43:12: Plug.Adapters.Cowboy.args/4458459Generated plug app460warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"461 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2462 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1463 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5464 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2465 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4466 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2467468==> phoenix469Compiling 75 files (.ex)470 warning: the variable "prefix" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator471 │472 170 │ <<attr::size(prefix)-binary, ":unique">> -> attr473 │ ~474 │475 └─ lib/mix/phoenix/schema.ex:170:20: Mix.Phoenix.Schema.drop_unique/1476477 warning: using single-quoted strings to represent charlists is deprecated.478 Use ~c"" if you indeed want a charlist or use "" instead.479 You may run "mix format --migrate" to change all single-quoted480 strings to use the ~c sigil and fix this warning.481 │482 310 │ :error_logger.warning_msg('~p ~p received unexpected message in handle_info/2: ~p~n',483 │ ~484 │485 └─ lib/phoenix/channel/server.ex:310:31486487 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead488 │489 39 │ Logger.warn "Phoenix is unable to create symlinks. Phoenix' code reloader will run " <>490 │ ~491 │492 └─ lib/phoenix/code_reloader/server.ex:39:20: Phoenix.CodeReloader.Server.handle_call/3493494 warning: unused require Logger495 │496 20 │ require Logger497 │ ~498 │499 └─ lib/phoenix/endpoint/handler.ex:20:3500501 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead502 │503 39 │ Logger.warn """504 │ ~505 │506 └─ lib/phoenix/endpoint/supervisor.ex:39:14: Phoenix.Endpoint.Supervisor.init/1507508 warning: the variable "prefix_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator509 │510 46 │ <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix511 │ ~512 │513 └─ lib/phoenix/naming.ex:46:29: Phoenix.Naming.unsuffix/2514515 warning: using single-quoted strings to represent charlists is deprecated.516 Use ~c"" if you indeed want a charlist or use "" instead.517 You may run "mix format --migrate" to change all single-quoted518 strings to use the ~c sigil and fix this warning.519 │520 315 │ @anno (if :erlang.system_info(:otp_release) >= '19' do521 │ ~522 │523 └─ lib/phoenix/router.ex:315:50524525 warning: using single-quoted strings to represent charlists is deprecated.526 Use ~c"" if you indeed want a charlist or use "" instead.527 You may run "mix format --migrate" to change all single-quoted528 strings to use the ~c sigil and fix this warning.529 │530 195 │ @anno (if :erlang.system_info(:otp_release) >= '19' do531 │ ~532 │533 └─ lib/phoenix/router/helpers.ex:195:50534535 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.536537 This error happens when you have function calls without parentheses inside keywords. For example:538539 function(arg, one: nested_call a, b, c)540 function(arg, one: if expr, do: :this, else: :that)541542 In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:543544 function(arg, one: if(expr, do: :this, else: :that))545 function(arg, one: nested_call(a, b, c))546547 Ambiguity found at:548 │549 71 │ unless actions -- supported_actions == [], do: raise ArgumentError, """550 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~551 │552 └─ lib/phoenix/router/resource.ex:71553554 warning: duplicate key :route found in struct555 │556 24 │ defstruct [:path, :actions, :param, :route, :controller, :route, :member, :collection, :singleton]557 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~558 │559 └─ lib/phoenix/router/resource.ex:24: Phoenix.Router.Resource (module)560561 warning: invalid type annotation. The left side of :: must be a variable, got: {:ok, pid()} | {:error, reason :: term()}. Note "left | right :: ann" is the same as "(left | right) :: ann". To solve this, use parentheses around the union operands: "left | (right :: ann)"562 │563 110 │ @callback start_link(Keyword.t) :: {:ok, pid()} | {:error, reason :: term()} :: :ignore564 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~565 │566 └─ lib/phoenix/presence.ex:110: Phoenix.Presence (module)567568 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead569 │570 885 │ Logger.warn "send_download/3 has been invoked during an AJAX request. " <>571 │ ~572 │573 └─ lib/phoenix/controller.ex:885:14: Phoenix.Controller.warn_if_ajax/1574575 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead576 │577 304 │ Logger.warn fn -> "Ignoring unmatched topic \"#{msg.topic}\" in #{inspect(socket.handler)}" end578 │ ~579 │580 └─ lib/phoenix/socket/transport.ex:304:12: Phoenix.Socket.Transport.reply_ignore/2581582 warning: using single-quoted strings to represent charlists is deprecated.583 Use ~c"" if you indeed want a charlist or use "" instead.584 You may run "mix format --migrate" to change all single-quoted585 strings to use the ~c sigil and fix this warning.586 │587 174 │ @anno (if :erlang.system_info(:otp_release) >= '19' do588 │ ~589 │590 └─ lib/phoenix/template.ex:174:50591592 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead593 │594 227 │ Logger.warn ":max_age was not set on Phoenix.Token.verify/4. " <>595 │ ~596 │597 └─ lib/phoenix/token.ex:227:12: Phoenix.Token.expired?/2598599 warning: Supervisor.Spec.worker/3 is deprecated. Use the new child specifications outlined in the Supervisor module instead600 │601 12 │ worker(Phoenix.Transports.LongPoll.Server, [], restart: :temporary)602 │ ~603 │604 └─ lib/phoenix/transports/long_poll_server.ex:12:7: Phoenix.Transports.LongPoll.Supervisor.init/1605606 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead607 │608 647 │ exception -> {:error, {exception, System.stacktrace()}}609 │ ~610 │611 └─ lib/phoenix/test/conn_test.ex:647:48: Phoenix.ConnTest.wrap_request/1612613 warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead614 │615 14 │ supervise(children, strategy: :simple_one_for_one)616 │ ~617 │618 └─ lib/phoenix/transports/long_poll_server.ex:14:5: Phoenix.Transports.LongPoll.Supervisor.init/1619620 warning: expected a module (an atom) when invoking config/1 in expression:621622 endpoint.config(:endpoint_id)623624 where "endpoint" was given the type:625626 # type: dynamic(%{..., __pubsub_server__: atom()})627 # from: lib/phoenix/transports/long_poll.ex:199:10628 verify_token(endpoint, token, opts)629630 type warning found at:631 │632 201 │ server_ref = server_ref(endpoint.config(:endpoint_id), id, pid, priv_topic)633 │ ~634 │635 └─ lib/phoenix/transports/long_poll.ex:201:42: Phoenix.Transports.LongPoll.resume_session/3636637 warning: unknown key .__pubsub_server__ in expression:638639 endpoint.__pubsub_server__640641 the given type does not have the given key:642643 dynamic(644 %Phoenix.Socket{645 id: term(),646 assigns: term(),647 channel: term(),648 channel_pid: term(),649 endpoint: atom(),650 handler: term(),651 joined: term(),652 pubsub_server: term(),653 ref: term(),654 join_ref: term(),655 topic: term(),656 transport: term(),657 transport_pid: term(),658 transport_name: term(),659 serializer: term(),660 private: term(),661 vsn: term()662 } or663 %Plug.Conn{664 adapter: term(),665 assigns: term(),666 before_send: term(),667 body_params: term(),668 cookies: term(),669 halted: term(),670 host: term(),671 method: term(),672 owner: term(),673 params: term(),674 path_params: term(),675 path_info: term(),676 port: term(),677 private: term(),678 query_params: term(),679 query_string: term(),680 peer: term(),681 remote_ip: term(),682 req_cookies: term(),683 req_headers: term(),684 request_path: term(),685 resp_body: term(),686 resp_cookies: term(),687 resp_headers: term(),688 scheme: term(),689 script_name: term(),690 secret_key_base: term(),691 state: term(),692 status: term()693 } or atom() or binary()694 )695696 where "endpoint" was given the type:697698 # type: dynamic(%Phoenix.Socket{endpoint: atom()} or %Plug.Conn{} or atom() or binary())699 # from: lib/phoenix/transports/long_poll.ex:254:19700 Phoenix.Token.sign(endpoint, Atom.to_string(endpoint.__pubsub_server__), data, opts[:crypto])701702 type warning found at:703 │704 254 │ Phoenix.Token.sign(endpoint, Atom.to_string(endpoint.__pubsub_server__), data, opts[:crypto])705 │ ~~~~~~~~~~~~~~~~~706 │707 └─ lib/phoenix/transports/long_poll.ex:254:58: Phoenix.Transports.LongPoll.sign_token/3708709 warning: a struct for Plug.Conn is expected on struct update:710711 %Plug.Conn{conn | state: :sent}712713 but got type:714715 dynamic()716717 where "conn" was given the type:718719 # type: dynamic()720 # from: lib/phoenix/endpoint/render_errors.ex:79:21721 conn722723 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"724725 type warning found at:726 │727 83 │ %Plug.Conn{conn | state: :sent}728 │ ~729 │730 └─ lib/phoenix/endpoint/render_errors.ex:83:9: Phoenix.Endpoint.RenderErrors.maybe_render/5731732 warning: a struct for Plug.Conn is expected on struct update:733734 %Plug.Conn{conn | query_params: %{}, params: %{}}735736 but got type:737738 dynamic(%{..., params: %Plug.Conn.Unfetched{}})739740 where "conn" was given the types:741742 # type: dynamic(%{..., params: term()})743 # from: lib/phoenix/endpoint/render_errors.ex:94:17744 conn.params745746 # type: dynamic(%{..., params: %Plug.Conn.Unfetched{}})747 # from: lib/phoenix/endpoint/render_errors.ex:94:17748 conn.params749750 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"751752 type warning found at:753 │754 95 │ %Plug.Conn.Unfetched{} -> %Plug.Conn{conn | query_params: %{}, params: %{}}755 │ ~756 │757 └─ lib/phoenix/endpoint/render_errors.ex:95:35: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/1758759 warning: a struct for Plug.Conn is expected on struct update:760761 %Plug.Conn{conn | query_params: %{}, params: params}762763 but got type:764765 dynamic(%{..., params: not %Plug.Conn.Unfetched{}})766767 where "conn" was given the types:768769 # type: dynamic(%{..., params: term()})770 # from: lib/phoenix/endpoint/render_errors.ex:94:17771 conn.params772773 # type: dynamic(%{..., params: not %Plug.Conn.Unfetched{}})774 # from: lib/phoenix/endpoint/render_errors.ex:94:17775 conn.params776777 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"778779 type warning found at:780 │781 96 │ params -> %Plug.Conn{conn | query_params: %{}, params: params}782 │ ~783 │784 └─ lib/phoenix/endpoint/render_errors.ex:96:19: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/1785786 warning: a struct for Phoenix.Socket is expected on struct update:787788 %Phoenix.Socket{socket | id: id}789790 but got type:791792 dynamic()793794 where "socket" was given the type:795796 # type: dynamic()797 # from: lib/phoenix/socket/transport.ex798 {:ok, socket}799800 when defining the variable "socket", you must also pattern match on "%Phoenix.Socket{}"801802 type warning found at:803 │804 195 │ id when is_binary(id) -> {:ok, %Socket{socket | id: id}}805 │ ~806 │807 └─ lib/phoenix/socket/transport.ex:195:42: Phoenix.Socket.Transport.do_connect/7808809 warning: a struct for Plug.Conn is expected on struct update:810811 %Plug.Conn{conn | params: params}812813 but got type:814815 dynamic(%{..., params: map()})816817 where "conn" was given the type:818819 # type: dynamic(%{..., params: map()})820 # from: lib/phoenix/controller.ex:912:17821 Map.get(conn.params, required_key)822823 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"824825 type warning found at:826 │827 919 │ %Plug.Conn{conn | params: params}828 │ ~829 │830 └─ lib/phoenix/controller.ex:919:5: Phoenix.Controller.scrub_params/2831832 warning: expected a map or struct when accessing .url in expression:833834 endpoint.url835836 where "endpoint" was given the types:837838 # type: dynamic(atom())839 # from: lib/phoenix/router/helpers.ex:24:20840 endpoint841842 # type: atom()843 # from: lib/phoenix/router/helpers.ex:24:35844 is_atom(endpoint)845846 hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()847848 type warning found at:849 │850 25 │ endpoint.url851 │ ~852 │853 └─ lib/phoenix/router/helpers.ex:25:14: Phoenix.Router.Helpers.url/2854855 warning: Supervisor.Spec.supervisor/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead856 │857 198 │ supervisor(Task.Supervisor, [[name: task_supervisor]]),858 │ ~859 │860 └─ lib/phoenix/presence.ex:198:7: Phoenix.Presence.start_link/4861862 warning: a struct for Plug.Conn is expected on struct update:863864 %Plug.Conn{conn | path_info: path, script_name: script}865866 but got type:867868 dynamic()869870 where "conn" was given the type:871872 # type: dynamic()873 # from: lib/phoenix/router/route.ex:147:10874 conn = target.call(%Plug.Conn{...}, opts)875876 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"877878 type warning found at:879 │880 148 │ %Plug.Conn{conn | path_info: path, script_name: script}881 │ ~882 │883 └─ lib/phoenix/router/route.ex:148:5: Phoenix.Router.Route.forward/4884885 warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead886 │887 199 │ worker(Phoenix.Tracker, [module, opts, opts])888 │ ~889 │890 └─ lib/phoenix/presence.ex:199:7: Phoenix.Presence.start_link/4891892 warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead893 │894 71 │ supervise(children, strategy: :one_for_one)895 │ ~896 │897 └─ lib/phoenix/endpoint/supervisor.ex:71:5: Phoenix.Endpoint.Supervisor.init/1898899 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead900 │901 284 │ Phoenix.PlugError.reraise(piped_conn, :error, reason, System.stacktrace())902 │ ~903 │904 └─ lib/phoenix/router.ex:284:74: Phoenix.Router.__call__/1905906 warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead907 │908 76 │ [worker(Phoenix.Config, args)]909 │ ~910 │911 └─ lib/phoenix/endpoint/supervisor.ex:76:6: Phoenix.Endpoint.Supervisor.config_children/3912913 warning: Supervisor.Spec.supervisor/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead914 │915 84 │ [supervisor(adapter, [mod.__pubsub_server__(), pub_conf])]916 │ ~917 │918 └─ lib/phoenix/endpoint/supervisor.ex:84:8: Phoenix.Endpoint.Supervisor.pubsub_children/2919 └─ lib/phoenix/endpoint/supervisor.ex:96:8: Phoenix.Endpoint.Supervisor.server_children/3920 └─ lib/phoenix/endpoint/supervisor.ex:97:8: Phoenix.Endpoint.Supervisor.server_children/3921922 warning: Supervisor.Spec.worker/3 is deprecated. Use the new child specifications outlined in the Supervisor module instead923 │924 106 │ worker(Phoenix.Endpoint.Watcher, watcher_args(cmd, args),925 │ ~926 │927 └─ lib/phoenix/endpoint/supervisor.ex:106:9: Phoenix.Endpoint.Supervisor.watcher_children/3928929 warning: incompatible types given to Plug.Adapters.Cowboy.child_spec/4:930931 Plug.Adapters.Cowboy.child_spec(scheme, endpoint, [], config)932933 given types:934935 (936 dynamic(:http or :https),937 -dynamic(%{..., __sockets__: term()})-,938 empty_list(),939 dynamic(empty_list() or non_empty_list(term(), term()))940 )941942 but expected one of:943944 :http or :https, atom() or binary(), term(), term()945946 where "config" was given the type:947948 # type: dynamic(empty_list() or non_empty_list(term(), term()))949 # from: lib/phoenix/endpoint/cowboy_handler.ex:78:12950 config = Keyword.put_new(config, :dispatch, _: dispatches)951952 where "endpoint" was given the type:953954 # type: dynamic(%{..., __sockets__: term()})955 # from: lib/phoenix/endpoint/cowboy_handler.ex:66:26956 {path, socket} <- endpoint.__sockets__957958 where "scheme" was given the types:959960 # type: dynamic()961 # from: lib/phoenix/endpoint/cowboy_handler.ex:60:18962 scheme963964 # type: dynamic(:http or :https)965 # from: lib/phoenix/endpoint/cowboy_handler.ex:81:28966 Plug.Adapters.Cowboy.child_spec(scheme, endpoint, [], config)967968 type warning found at:969 │970 81 │ Plug.Adapters.Cowboy.child_spec(scheme, endpoint, [], config)971 │ ~972 │973 └─ lib/phoenix/endpoint/cowboy_handler.ex:81:28: Phoenix.Endpoint.CowboyHandler.child_spec/3974975 warning: expected a module (an atom) when invoking path/1 in expression:976977 endpoint.path("/")978979 where "endpoint" was given the type:980981 # type: dynamic(%{..., host: term()})982 # from: lib/phoenix/endpoint/supervisor.ex:312:14983 endpoint.host984985 type warning found at:986 │987 313 │ endpoint.path("/")988 │ ~989 │990 └─ lib/phoenix/endpoint/supervisor.ex:313:14: Phoenix.Endpoint.Supervisor.warmup/1991992 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead993 │994 23 │ {:upgrade, :protocol, __MODULE__, req, {:error, mfa, kind, reason, System.stacktrace}}995 │ ~996 │997 └─ lib/phoenix/endpoint/cowboy_websocket.ex:23:83: Phoenix.Endpoint.CowboyWebSocket.init/3998999 warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1000 │1001 35 │ supervise(children, strategy: :one_for_one)1002 │ ~1003 │1004 └─ lib/phoenix/endpoint/handler.ex:35:5: Phoenix.Endpoint.Handler.init/110051006 warning: Enum.partition/2 is deprecated. Use Enum.split_with/2 instead1007 │1008 39 │ {config_keywords, config_other} = Enum.partition(config, &keyword_item?/1)1009 │ ~1010 │1011 └─ lib/phoenix/endpoint/handler.ex:39:44: Phoenix.Endpoint.Handler.default/310121013 warning: comparison between distinct types found:10141015 !Path.extname(file_path) == ".gz"10161017 given types:10181019 dynamic(boolean()) == binary()10201021 where "file_path" was given the type:10221023 # type: dynamic(binary() or empty_list() or non_empty_list(term(), term()))1024 # from: lib/phoenix/digester.ex:147:451025 Path.basename(file_path)10261027 While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false10281029 type warning found at:1030 │1031 148 │ !Path.extname(file_path) == ".gz"1032 │ ~1033 │1034 └─ lib/phoenix/digester.ex:148:32: Phoenix.Digester.uncompressed_digested_file?/110351036 warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1037 │1038 51 │ worker(Phoenix.CodeReloader.Server, [])1039 │ ~1040 │1041 └─ lib/phoenix.ex:51:7: Phoenix.start/210421043 warning: System.stacktrace/0 is deprecated. Use __STACKTRACE__ instead1044 │1045 61 │ IO.puts Exception.format(kind, reason, System.stacktrace)1046 │ ~1047 │1048 └─ lib/phoenix/code_reloader/server.ex:61:59: Phoenix.CodeReloader.Server.handle_call/310491050 warning: expected a map or struct when accessing .__phoenix_recompile__? in expression:10511052 mod.__phoenix_recompile__?10531054 where "mod" was given the type:10551056 # type: dynamic(atom())1057 # from: lib/mix/tasks/compile.phoenix.ex:34:121058 Code.ensure_loaded?(mod)10591060 hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()10611062 type warning found at:1063 │1064 36 │ mod.__phoenix_recompile__?1065 │ ~1066 │1067 └─ lib/mix/tasks/compile.phoenix.ex:36:13: Mix.Tasks.Compile.Phoenix.modules_for_recompilation/110681069 warning: Enum.partition/2 is deprecated. Use Enum.split_with/2 instead1070 │1071 155 │ Enum.partition attrs, fn1072 │ ~1073 │1074 └─ lib/mix/tasks/phoenix.gen.model.ex:155:10: Mix.Tasks.Phoenix.Gen.Model.partition_attrs_and_assocs/110751076 warning: Enum.partition/2 is deprecated. Use Enum.split_with/2 instead1077 │1078 234 │ Enum.partition(attrs, fn1079 │ ~1080 │1081 └─ lib/mix/phoenix/schema.ex:234:12: Mix.Phoenix.Schema.partition_attrs_and_assocs/210821083Generated phoenix app1084==> phoenix_html1085Compiling 8 files (.ex)1086 warning: using single-quoted strings to represent charlists is deprecated.1087 Use ~c"" if you indeed want a charlist or use "" instead.1088 You may run "mix format --migrate" to change all single-quoted1089 strings to use the ~c sigil and fix this warning.1090 │1091 7 │ @anno (if :erlang.system_info(:otp_release) >= '19' do1092 │ ~1093 │1094 └─ lib/phoenix_html/engine.ex:7:5010951096 warning: use EEx.Engine is deprecated. Use explicit delegation to EEx.Engine instead1097 │1098 13 │ use EEx.Engine1099 │ ~~~~~~~~~~~~~~1100 │1101 └─ lib/phoenix_html/engine.ex:13: Phoenix.HTML.Engine (module)11021103 warning: this clause for handle_text/2 cannot match because a previous clause at line 13 always matches1104 │1105 28 │ def handle_text("", text) do # Required for Elixir < v1.5.11106 │ ~1107 │1108 └─ lib/phoenix_html/engine.ex:28:711091110 warning: this clause for handle_text/2 cannot match because a previous clause at line 13 always matches1111 │1112 32 │ def handle_text({:safe, buffer}, text) do1113 │ ~1114 │1115 └─ lib/phoenix_html/engine.ex:32:711161117 warning: single quotes around keywords are deprecated. Use double quotes instead1118 │1119 264 │ 'csrf-param': @csrf_param, 'method-param': @method_param1120 │ ~1121 │1122 └─ lib/phoenix_html/tag.ex:264:1611231124 warning: single quotes around keywords are deprecated. Use double quotes instead1125 │1126 264 │ 'csrf-param': @csrf_param, 'method-param': @method_param1127 │ ~1128 │1129 └─ lib/phoenix_html/tag.ex:264:4311301131 warning: the right-hand side of || will never be executed:11321133 selected(form, field, opts) || ...11341135 because the left-hand side always evaluates to:11361137 dynamic({term(), term()})11381139 where "field" was given the type:11401141 # type: dynamic()1142 # from: lib/phoenix_html/form.ex:830:201143 field11441145 where "form" was given the type:11461147 # type: dynamic()1148 # from: lib/phoenix_html/form.ex:830:141149 form11501151 where "opts" was given the types:11521153 # type: dynamic()1154 # from: lib/phoenix_html/form.ex:830:361155 opts11561157 # type: dynamic(empty_list() or non_empty_list(term(), term()))1158 # from: lib/phoenix_html/form.ex:831:241159 selected(form, field, opts)11601161 type warning found at:1162 │1163 831 │ {selected, opts} = selected(form, field, opts) || []1164 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1165 │1166 └─ lib/phoenix_html/form.ex:831: Phoenix.HTML.Form.select/411671168 warning: the 1st pattern in clause will never match:11691170 6011711172 because it is expected to receive type:11731174 dynamic(empty_list() or non_empty_list(term(), term()))11751176 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())11771178 type warning found at:1179 │1180 56 │ def to_iodata(?<), do: "<"1181 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1182 │1183 └─ lib/phoenix_html/safe.ex:56: Phoenix.HTML.Safe.List.to_iodata/111841185 warning: the 1st pattern in clause will never match:11861187 6211881189 because it is expected to receive type:11901191 dynamic(empty_list() or non_empty_list(term(), term()))11921193 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())11941195 type warning found at:1196 │1197 57 │ def to_iodata(?>), do: ">"1198 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1199 │1200 └─ lib/phoenix_html/safe.ex:57: Phoenix.HTML.Safe.List.to_iodata/112011202 warning: the 1st pattern in clause will never match:12031204 3812051206 because it is expected to receive type:12071208 dynamic(empty_list() or non_empty_list(term(), term()))12091210 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())12111212 type warning found at:1213 │1214 58 │ def to_iodata(?&), do: "&"1215 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1216 │1217 └─ lib/phoenix_html/safe.ex:58: Phoenix.HTML.Safe.List.to_iodata/112181219 warning: the 1st pattern in clause will never match:12201221 3412221223 because it is expected to receive type:12241225 dynamic(empty_list() or non_empty_list(term(), term()))12261227 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())12281229 type warning found at:1230 │1231 59 │ def to_iodata(?"), do: """1232 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1233 │1234 └─ lib/phoenix_html/safe.ex:59: Phoenix.HTML.Safe.List.to_iodata/112351236 warning: function handle_text/3 required by behaviour EEx.Engine is not implemented (in module Phoenix.HTML.Engine)1237 │1238 1 │ defmodule Phoenix.HTML.Engine do1239 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1240 │1241 └─ lib/phoenix_html/engine.ex:1: Phoenix.HTML.Engine (module)12421243 warning: the 1st pattern in clause will never match:12441245 3912461247 because it is expected to receive type:12481249 dynamic(empty_list() or non_empty_list(term(), term()))12501251 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())12521253 type warning found at:1254 │1255 60 │ def to_iodata(?'), do: "'"1256 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1257 │1258 └─ lib/phoenix_html/safe.ex:60: Phoenix.HTML.Safe.List.to_iodata/112591260 warning: the following clause is redundant:12611262 def handle_text("", text)12631264 it has type:12651266 binary(), dynamic()12671268 previous clauses have already matched on the following types:12691270 term(), term()12711272 │1273 28 │ def handle_text("", text) do # Required for Elixir < v1.5.11274 │ ~1275 │1276 └─ lib/phoenix_html/engine.ex:28:7: Phoenix.HTML.Engine.handle_text/212771278 warning: the following clause is redundant:12791280 def handle_text({:safe, buffer}, text)12811282 it has type:12831284 dynamic({:safe, term()}), dynamic()12851286 previous clauses have already matched on the following types:12871288 term(), term()12891290 │1291 32 │ def handle_text({:safe, buffer}, text) do1292 │ ~1293 │1294 └─ lib/phoenix_html/engine.ex:32:7: Phoenix.HTML.Engine.handle_text/212951296 warning: the 1st pattern in clause will never match:12971298 {:safe, data}12991300 because it is expected to receive type:13011302 dynamic(empty_list() or non_empty_list(term(), term()))13031304 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())13051306 type warning found at:1307 │1308 75 │ def to_iodata({:safe, data}) do1309 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1310 │1311 └─ lib/phoenix_html/safe.ex:75: Phoenix.HTML.Safe.List.to_iodata/113121313 warning: the following clause is redundant:13141315 def to_iodata(other)13161317 it has type:13181319 dynamic(empty_list() or non_empty_list(term(), term()))13201321 previous clauses have already matched on the following types:13221323 non_empty_list(term(), term())1324 empty_list()13251326 │1327 79 │ def to_iodata(other) do1328 │ ~1329 │1330 └─ lib/phoenix_html/safe.ex:79:7: Phoenix.HTML.Safe.List.to_iodata/113311332 warning: the 1st pattern in clause will never match:13331334 h13351336 because it is expected to receive type:13371338 dynamic(empty_list() or non_empty_list(term(), term()))13391340 where "h" was given the type:13411342 # type: integer()1343 # from: lib/phoenix_html/safe.ex:62:251344 is_integer(h)13451346 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())13471348 type warning found at:1349 │1350 62 │ def to_iodata(h) when is_integer(h) and h <= 255 do1351 │ ~1352 │1353 └─ lib/phoenix_html/safe.ex:62:17: Phoenix.HTML.Safe.List.to_iodata/113541355 warning: the 1st pattern in clause will never match:13561357 h13581359 because it is expected to receive type:13601361 dynamic(empty_list() or non_empty_list(term(), term()))13621363 where "h" was given the type:13641365 # type: integer()1366 # from: lib/phoenix_html/safe.ex:65:251367 is_integer(h)13681369 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())13701371 type warning found at:1372 │1373 65 │ def to_iodata(h) when is_integer(h) do1374 │ ~1375 │1376 └─ lib/phoenix_html/safe.ex:65:17: Phoenix.HTML.Safe.List.to_iodata/113771378 warning: the 1st pattern in clause will never match:13791380 h13811382 because it is expected to receive type:13831384 dynamic(empty_list() or non_empty_list(term(), term()))13851386 where "h" was given the type:13871388 # type: binary()1389 # from: lib/phoenix_html/safe.ex:71:251390 is_binary(h)13911392 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())13931394 type warning found at:1395 │1396 71 │ def to_iodata(h) when is_binary(h) do1397 │ ~1398 │1399 └─ lib/phoenix_html/safe.ex:71:17: Phoenix.HTML.Safe.List.to_iodata/114001401Generated phoenix_html app1402==> tracy1403Compiling 8 files (.ex)1404 warning: invalid type annotation. The left side of :: must be a variable, got: fun()1405 │1406 23 │ @spec check_start_trace(definition_id:: binary(), session_id :: binary() | nil, metadata :: fun() :: map() | nil) :: :started | :not_started | {:error, term()}1407 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1408 │1409 └─ lib/tracy.ex:23: Tracy (module)14101411 warning: invalid type annotation. Type annotations cannot be nested: metadata :: fun() :: map() | nil1412 │1413 23 │ @spec check_start_trace(definition_id:: binary(), session_id :: binary() | nil, metadata :: fun() :: map() | nil) :: :started | :not_started | {:error, term()}1414 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1415 │1416 └─ lib/tracy.ex:23: Tracy (module)14171418 warning: invalid type annotation. The left side of :: must be a variable, got: fun()1419 │1420 23 │ @spec check_start_trace(definition_id:: binary(), session_id :: binary() | nil, metadata :: fun() :: map() | nil) :: :started | :not_started | {:error, term()}1421 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1422 │1423 └─ lib/tracy.ex:23: Tracy (module)14241425 warning: unused require Logger1426 │1427 3 │ require Logger1428 │ ~1429 │1430 └─ lib/tracy/plug.ex:3:314311432 warning: unused require Logger1433 │1434 3 │ require Logger1435 │ ~1436 │1437 └─ lib/tracy/util.ex:3:314381439 warning: a struct for Tracy.Tracer.State is expected on struct update:14401441 %Tracy.Tracer.State{state | count: state.count + 1}14421443 but got type:14441445 dynamic(%{..., pid: term()})14461447 where "state" was given the type:14481449 # type: dynamic(%{..., pid: term()})1450 # from: lib/tracy/tracer.ex:47:551451 state = %{pid: pid}14521453 when defining the variable "state", you must also pattern match on "%Tracy.Tracer.State{}"14541455 type warning found at:1456 │1457 48 │ state = %State{state | count: state.count + 1}1458 │ ~1459 │1460 └─ lib/tracy/tracer.ex:48:13: Tracy.Tracer.handle_info/214611462 warning: Supervisor.Spec.worker/3 is deprecated. Use the new child specifications outlined in the Supervisor module instead1463 │1464 10 │ worker(Tracy.Tracer, [], restart: :transient)1465 │ ~1466 │1467 └─ lib/tracy/trace_supervisor.ex:10:7: Tracy.TraceSupervisor.init/114681469 warning: Supervisor.Spec.supervise/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1470 │1471 12 │ supervise(children, strategy: :simple_one_for_one)1472 │ ~1473 │1474 └─ lib/tracy/trace_supervisor.ex:12:5: Tracy.TraceSupervisor.init/114751476 warning: Supervisor.Spec.supervisor/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead1477 │1478 8 │ supervisor(Tracy.TraceSupervisor, [])1479 │ ~1480 │1481 └─ lib/tracy/application.ex:8:7: Tracy.Application.start/214821483 warning: the following clause will never match:14841485 nil ->14861487 because it attempts to match on the result of:14881489 Plug.Conn.get_req_header(conn, "x-tracy-definition")14901491 which has type:14921493 dynamic(list(term()))14941495 type warning found at:1496 │1497 13 │ nil ->1498 │ ~~~~~~1499 │1500 └─ lib/tracy/plug.ex:13: Tracy.Plug.call/215011502Generated tracy app1503warning: the :gettext compiler is no longer required in your mix.exs.15041505Please find the following line in your mix.exs and remove the :gettext entry:15061507 compilers: [..., :gettext, ...] ++ Mix.compilers(),15081509 (gettext 0.26.2) lib/mix/tasks/compile.gettext.ex:5: Mix.Tasks.Compile.Gettext.run/11510 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51511 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21512 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41513 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/21514 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/515151516==> tracy_web1517Compiling 23 files (.ex)1518 warning: unused require Logger1519 │1520 3 │ require Logger1521 │ ~1522 │1523 └─ lib/tracy_web/upstream.ex:3:315241525warning: defining a Gettext backend by calling15261527 use Gettext, otp_app: ...15281529is deprecated. To define a backend, call:15301531 use Gettext.Backend, otp_app: :my_app15321533Then, instead of importing your backend, call this in your module:15341535 use Gettext, backend: MyApp.Gettext15361537 lib/tracy_web/web/gettext.ex:23: TracyWeb.Web.Gettext (module)15381539warning: no configuration found for otp_app :tracy_web and module TracyWeb.Web.Endpoint1540warning: Phoenix.HTML.Engine.handle_text/2 is deprecated, implement handle_text/3 instead1541 (eex 1.20.3) lib/eex/compiler.ex:315: EEx.Compiler.compile/31542 (phoenix 1.3.5) lib/phoenix/template.ex:378: Phoenix.Template.compile/21543 (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/21544 (phoenix 1.3.5) lib/phoenix/template.ex:185: Phoenix.Template."MACRO-__before_compile__"/21545 (elixir 1.20.3) src/elixir_dispatch.erl:263: :elixir_dispatch.expand_macro_fun/71546 (elixir 1.20.3) src/elixir_dispatch.erl:155: :elixir_dispatch.dispatch_require/7154715481549== Compilation error in file lib/tracy_web/web/views/page_view.ex ==1550** (RuntimeError) unexpected EEx.Engine state: {:safe, ""}. This typically means a bug or an outdated EEx.Engine or tool1551 (eex 1.20.3) lib/eex/engine.ex:226: EEx.Engine.check_state!/11552 (eex 1.20.3) lib/eex/engine.ex:189: EEx.Engine.handle_text/31553 (eex 1.20.3) lib/eex/compiler.ex:338: EEx.Compiler.generate_buffer/41554 (phoenix 1.3.5) lib/phoenix/template.ex:378: Phoenix.Template.compile/21555 (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/21556 (phoenix 1.3.5) expanding macro: Phoenix.Template.__before_compile__/11557 lib/tracy_web/web/views/page_view.ex:1: TracyWeb.Web.PageView (module)1558could not compile dependency :tracy_web, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile tracy_web --force", update it with "mix deps.update tracy_web" or clean it with "mix deps.clean tracy_web"