Build log
nerves_system_rpi0
config_manager 0.1.1 · fail · run config_manager-0.1.1-1791072597047
1807 of 1807 lines
1Resolving Hex dependencies...2Resolution completed in 0.466s3Unchanged:4 castore 1.0.215 circular_buffer 1.1.06 config_manager 0.1.17 cowboy 2.19.08 cowboy_telemetry 0.4.09 cowlib 2.20.0 VULNERABLE!10 EEF-CVE-2026-43966 (MEDIUM)11 aka: CVE-2026-43966, GHSA-w4f7-4cxr-rv3c12 HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/213 https://osv.dev/vulnerability/EEF-CVE-2026-439661415 EEF-CVE-2026-43969 (LOW)16 aka: CVE-2026-43969, GHSA-g2wm-735q-3f5617 Cookie Request Header Injection via Unvalidated Encoder in cow_cookie:cookie/118 https://osv.dev/vulnerability/EEF-CVE-2026-4396919 db_connection 2.10.220 decimal 3.1.121 ecto 3.14.222 ecto_sql 3.14.023 elixir_make 0.10.024 esbuild 0.10.025 expo 1.1.126 gettext 0.26.227 idna 7.1.028 interactive_cmd 0.1.429 jason 1.4.530 mime 2.0.731 nerves 2.0.0-pre.232 nerves_discovery 0.1.533 nerves_logging 0.2.434 nerves_runtime 0.13.1335 nerves_system_bbb 2.30.236 nerves_system_br 1.34.437 nerves_system_mangopi_mq_pro 0.17.238 nerves_system_qemu_aarch64 0.4.239 nerves_system_rpi0 2.1.240 nerves_system_rpi4 2.1.241 nerves_system_rpi5 2.1.242 nerves_system_trellis 0.5.043 nerves_system_x86_64 1.34.244 nerves_toolchain_aarch64_nerves_linux_gnu 15.3.145 nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.146 nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.147 nerves_toolchain_riscv64_nerves_linux_gnu 15.3.148 nerves_toolchain_x86_64_nerves_linux_musl 15.3.149 nerves_uevent 0.1.750 phoenix 1.6.1751 phoenix_ecto 4.7.052 phoenix_html 3.3.453 phoenix_live_dashboard 0.6.554 phoenix_live_view 0.17.14 VULNERABLE!55 EEF-CVE-2026-64941 (LOW)56 aka: CVE-2026-64941, GHSA-36m4-rm57-3prf57 Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR58 https://osv.dev/vulnerability/EEF-CVE-2026-6494159 phoenix_pubsub 2.3.060 phoenix_template 1.1.061 phoenix_view 2.0.462 plug 1.20.363 plug_cowboy 2.9.064 plug_crypto 1.2.565 postgrex 0.22.466 property_table 0.3.467 ranch 2.3.068 ring_logger 0.11.769 swoosh 1.28.170 tablet 0.3.371 telemetry 1.4.272 telemetry_metrics 0.6.273 telemetry_poller 1.3.074 toolshed 0.5.075 uboot_env 1.0.276* Getting config_manager (Hex package)77* Getting nerves (Hex package)78* Getting ring_logger (Hex package)79* Getting toolshed (Hex package)80* Getting nerves_runtime (Hex package)81* Getting nerves_system_bbb (Hex package)82* Getting nerves_system_mangopi_mq_pro (Hex package)83* Getting nerves_system_qemu_aarch64 (Hex package)84* Getting nerves_system_rpi0 (Hex package)85* Getting nerves_system_rpi4 (Hex package)86* Getting nerves_system_rpi5 (Hex package)87* Getting nerves_system_trellis (Hex package)88* Getting nerves_system_x86_64 (Hex package)89* Getting nerves_system_br (Hex package)90* Getting nerves_toolchain_x86_64_nerves_linux_musl (Hex package)91* Getting nerves_toolchain_armv7_nerves_linux_gnueabihf (Hex package)92* Getting nerves_toolchain_aarch64_nerves_linux_gnu (Hex package)93* Getting nerves_toolchain_armv6_nerves_linux_gnueabihf (Hex package)94* Getting nerves_toolchain_riscv64_nerves_linux_gnu (Hex package)95* Getting nerves_logging (Hex package)96* Getting nerves_uevent (Hex package)97* Getting uboot_env (Hex package)98* Getting elixir_make (Hex package)99* Getting property_table (Hex package)100* Getting circular_buffer (Hex package)101* Getting interactive_cmd (Hex package)102* Getting nerves_discovery (Hex package)103* Getting tablet (Hex package)104* Getting ecto_sql (Hex package)105* Getting esbuild (Hex package)106* Getting gettext (Hex package)107* Getting jason (Hex package)108* Getting phoenix (Hex package)109* Getting phoenix_ecto (Hex package)110* Getting phoenix_html (Hex package)111* Getting phoenix_live_dashboard (Hex package)112* Getting phoenix_live_view (Hex package)113* Getting plug_cowboy (Hex package)114* Getting postgrex (Hex package)115* Getting swoosh (Hex package)116* Getting telemetry_metrics (Hex package)117* Getting telemetry_poller (Hex package)118* Getting telemetry (Hex package)119* Getting idna (Hex package)120* Getting mime (Hex package)121* Getting db_connection (Hex package)122* Getting decimal (Hex package)123* Getting cowboy (Hex package)124* Getting cowboy_telemetry (Hex package)125* Getting plug (Hex package)126* Getting plug_crypto (Hex package)127* Getting cowlib (Hex package)128* Getting ranch (Hex package)129* Getting ecto (Hex package)130* Getting castore (Hex package)131* Getting phoenix_pubsub (Hex package)132* Getting phoenix_view (Hex package)133* Getting phoenix_template (Hex package)134* Getting expo (Hex package)135Found packages with security advisories, see above for details136You have added/upgraded packages you could sponsor, run `mix hex.sponsor` to learn more137==> nerves_system_br138Generated nerves_system_br app139==> mime140Compiling 1 file (.ex)141Generated mime app142==> circular_buffer143Compiling 1 file (.ex)144Generated circular_buffer app145==> plug_crypto146Compiling 5 files (.ex)147Generated plug_crypto app148==> nerves_compatibility_test149===> Analyzing applications...150===> Compiling ranch151==> tablet152Compiling 2 files (.ex)153Generated tablet app154==> elixir_make155Compiling 8 files (.ex)156Generated elixir_make app157==> nerves_logging158 CC kmsg_tailer.o159 LD kmsg_tailer160Compiling 5 files (.ex)161Generated nerves_logging app162==> castore163Compiling 1 file (.ex)164Generated castore app165==> nerves_compatibility_test166===> Analyzing applications...167===> Compiling cowlib168==> nerves_discovery169Compiling 5 files (.ex)170Generated nerves_discovery app171==> ring_logger172Compiling 7 files (.ex)173Generated ring_logger app174==> decimal175Compiling 4 files (.ex)176Generated decimal app177==> jason178Compiling 10 files (.ex)179Generated jason app180==> esbuild181Compiling 4 files (.ex)182Generated esbuild app183==> interactive_cmd184Compiling 1 file (.ex)185Generated interactive_cmd app186==> nerves187Compiling 65 files (.ex)188 warning: redefining module Mix.Tasks.Nerves.Init (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Mix.Tasks.Nerves.Init.beam)189 │190 6 │ defmodule Mix.Tasks.Nerves.Init do191 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~192 │193 └─ lib/mix/tasks/nerves.init.ex:6: Mix.Tasks.Nerves.Init (module)194195 warning: redefining module Nerves (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.beam)196 │197 6 │ defmodule Nerves do198 │ ~~~~~~~~~~~~~~~~~~~199 │200 └─ lib/nerves.ex:6: Nerves (module)201202 warning: redefining module Nerves.ArtifactResolver (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.ArtifactResolver.beam)203 │204 5 │ defmodule Nerves.ArtifactResolver do205 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~206 │207 └─ lib/nerves/artifact_resolver.ex:5: Nerves.ArtifactResolver (module)208209 warning: redefining module Nerves.BuildAction.AppModes (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.AppModes.beam)210 │211 6 │ defmodule Nerves.BuildAction.AppModes do212 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~213 │214 └─ lib/nerves/build_action/app_modes.ex:6: Nerves.BuildAction.AppModes (module)215216 warning: redefining module Nerves.BuildAction.CheckExecutables (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.CheckExecutables.beam)217 │218 5 │ defmodule Nerves.BuildAction.CheckExecutables do219 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~220 │221 └─ lib/nerves/build_action/check_executables.ex:5: Nerves.BuildAction.CheckExecutables (module)222223 warning: redefining module Nerves.BuildAction.Erlinit (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.Erlinit.beam)224 │225 8 │ defmodule Nerves.BuildAction.Erlinit do226 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~227 │228 └─ lib/nerves/build_action/erlinit.ex:8: Nerves.BuildAction.Erlinit (module)229230 warning: redefining module Nerves.BuildAction.Firmware (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.Firmware.beam)231 │232 5 │ defmodule Nerves.BuildAction.Firmware do233 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~234 │235 └─ lib/nerves/build_action/firmware.ex:5: Nerves.BuildAction.Firmware (module)236237 warning: redefining module Nerves.BuildAction.IExStartupCheck (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.IExStartupCheck.beam)238 │239 7 │ defmodule Nerves.BuildAction.IExStartupCheck do240 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~241 │242 └─ lib/nerves/build_action/iex_startup_check.ex:7: Nerves.BuildAction.IExStartupCheck (module)243244 warning: redefining module Nerves.BuildAction.NervesV1System (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1System.beam)245 │246 5 │ defmodule Nerves.BuildAction.NervesV1System do247 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~248 │249 └─ lib/nerves/build_action/nerves_v1_system.ex:5: Nerves.BuildAction.NervesV1System (module)250251 warning: redefining module Nerves.BuildAction.NervesV1Toolchain (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.NervesV1Toolchain.beam)252 │253 5 │ defmodule Nerves.BuildAction.NervesV1Toolchain do254 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~255 │256 └─ lib/nerves/build_action/nerves_v1_toolchain.ex:5: Nerves.BuildAction.NervesV1Toolchain (module)257258 warning: redefining module Nerves.BuildAction.Rootfs (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.Rootfs.beam)259 │260 5 │ defmodule Nerves.BuildAction.Rootfs do261 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~262 │263 └─ lib/nerves/build_action/rootfs.ex:5: Nerves.BuildAction.Rootfs (module)264265 warning: redefining module Nerves.BuildAction.SortApps (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.SortApps.beam)266 │267 6 │ defmodule Nerves.BuildAction.SortApps do268 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~269 │270 └─ lib/nerves/build_action/sort_apps.ex:6: Nerves.BuildAction.SortApps (module)271272 warning: redefining module Nerves.BuildAction.StripAll (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.StripAll.beam)273 │274 5 │ defmodule Nerves.BuildAction.StripAll do275 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~276 │277 └─ lib/nerves/build_action/strip_all.ex:5: Nerves.BuildAction.StripAll (module)278279 warning: redefining module Nerves.BuildAction.Trimmer (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildAction.Trimmer.beam)280 │281 5 │ defmodule Nerves.BuildAction.Trimmer do282 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~283 │284 └─ lib/nerves/build_action/trimmer.ex:5: Nerves.BuildAction.Trimmer (module)285286 warning: redefining module Nerves.BuildPlan (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildPlan.beam)287 │288 5 │ defmodule Nerves.BuildPlan do289 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~290 │291 └─ lib/nerves/build_plan.ex:5: Nerves.BuildPlan (module)292293 warning: redefining module Nerves.BuildPlan.Checks (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.BuildPlan.Checks.beam)294 │295 5 │ defmodule Nerves.BuildPlan.Checks do296 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~297 │298 └─ lib/nerves/build_plan/checks.ex:5: Nerves.BuildPlan.Checks (module)299300 warning: redefining module Nerves.Container (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.Container.beam)301 │302 6 │ defmodule Nerves.Container do303 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~304 │305 └─ lib/nerves/container.ex:6: Nerves.Container (module)306307 warning: redefining module Nerves.Fingerprint (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.Fingerprint.beam)308 │309 5 │ defmodule Nerves.Fingerprint do310 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~311 │312 └─ lib/nerves/fingerprint.ex:5: Nerves.Fingerprint (module)313314 warning: redefining module Nerves.MixPackage (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.MixPackage.beam)315 │316 5 │ defmodule Nerves.MixPackage do317 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~318 │319 └─ lib/nerves/mix_package.ex:5: Nerves.MixPackage (module)320321 warning: redefining module Nerves.Paths (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.Paths.beam)322 │323 5 │ defmodule Nerves.Paths do324 │ ~~~~~~~~~~~~~~~~~~~~~~~~~325 │326 └─ lib/nerves/paths.ex:5: Nerves.Paths (module)327328 warning: redefining module Nerves.TargetTuple (current version loaded from /work/proj/_build/rpi0/lib/nerves/ebin/Elixir.Nerves.TargetTuple.beam)329 │330 5 │ defmodule Nerves.TargetTuple do331 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~332 │333 └─ lib/nerves/target_tuple.ex:5: Nerves.TargetTuple (module)334335Generated nerves app336==> nerves_toolchain_armv6_nerves_linux_gnueabihf337Compiling 1 file (.ex)338Generated nerves_toolchain_armv6_nerves_linux_gnueabihf app339==> nerves_system_rpi0340Generated nerves_system_rpi0 app341==> nerves_compatibility_test342===> Analyzing applications...343===> Compiling idna344===> Analyzing applications...345===> Compiling telemetry346==> telemetry_metrics347Compiling 7 files (.ex)348 warning: unused require Logger349 │350 391 │ require Logger351 │ ~352 │353 └─ lib/telemetry_metrics.ex:391:3354355Generated telemetry_metrics app356==> nerves_compatibility_test357===> Analyzing applications...358===> Compiling telemetry_poller359==> db_connection360Compiling 18 files (.ex)361Generated db_connection app362==> ecto363Compiling 56 files (.ex)364Generated ecto app365==> nerves_compatibility_test366===> Analyzing applications...367===> Compiling cowboy368==> expo369Compiling 2 files (.erl)370Compiling 22 files (.ex)371Generated expo app372==> gettext373Compiling 18 files (.ex)374 warning: unused require Gettext.Macros375 │376 594 │ require Gettext.Macros377 │ ~378 │379 └─ lib/gettext.ex:594:3380381 warning: Kernel.ParallelCompiler.async/1 is deprecated. Use `pmap/2` instead382 │383 426 │ Kernel.ParallelCompiler.async(fn ->384 │ ~385 │386 └─ lib/gettext/compiler.ex:426:39: Gettext.Compiler.compile_po_files/3387388 warning: the following clause is redundant:389390 defp ensure_empty_msgstr!(%Expo.Message.Plural{} = message)391392 it has type:393394 dynamic(%Expo.Message.Plural{})395396 previous clauses have already matched on the following types:397398 %Expo.Message.Singular{}399 %Expo.Message.Plural{}400401 │402 391 │ defp ensure_empty_msgstr!(%Message.Plural{} = message) do403 │ ~404 │405 └─ lib/gettext/extractor.ex:391:8: Gettext.Extractor.ensure_empty_msgstr!/1406407Generated gettext app408==> phoenix_pubsub409Compiling 12 files (.ex)410Generated phoenix_pubsub app411==> plug412Compiling 1 file (.erl)413Compiling 42 files (.ex)414Generated plug app415==> phoenix_html416Compiling 9 files (.ex)417 warning: comparison between distinct types found:418419 id == nil420421 given types:422423 dynamic(not false and not nil and not binary()) == nil424425 where "id" was given the types:426427 # type: dynamic(not false and not nil)428 # from: lib/phoenix_html/form_data.ex:92:8429 id = Keyword.get(opts, :id) || name430431 # type: dynamic(not false and not nil and not binary())432 # from: lib/phoenix_html/form_data.ex:94:12433 is_binary(id)434435 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 false436437 type warning found at:438 │439 94 │ unless is_binary(id) or is_nil(id) do440 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~441 │442 └─ lib/phoenix_html/form_data.ex:94: Phoenix.HTML.FormData.Atom.to_form/2443444 warning: the 1st pattern in clause will never match:445446 60447448 because it is expected to receive type:449450 dynamic(empty_list() or non_empty_list(term(), term()))451452 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())453454 type warning found at:455 │456 56 │ def to_iodata(?<), do: "<"457 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~458 │459 └─ lib/phoenix_html/safe.ex:56: Phoenix.HTML.Safe.List.to_iodata/1460461 warning: the 1st pattern in clause will never match:462463 62464465 because it is expected to receive type:466467 dynamic(empty_list() or non_empty_list(term(), term()))468469 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())470471 type warning found at:472 │473 57 │ def to_iodata(?>), do: ">"474 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~475 │476 └─ lib/phoenix_html/safe.ex:57: Phoenix.HTML.Safe.List.to_iodata/1477478 warning: the 1st pattern in clause will never match:479480 38481482 because it is expected to receive type:483484 dynamic(empty_list() or non_empty_list(term(), term()))485486 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())487488 type warning found at:489 │490 58 │ def to_iodata(?&), do: "&"491 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~492 │493 └─ lib/phoenix_html/safe.ex:58: Phoenix.HTML.Safe.List.to_iodata/1494495 warning: the 1st pattern in clause will never match:496497 34498499 because it is expected to receive type:500501 dynamic(empty_list() or non_empty_list(term(), term()))502503 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())504505 type warning found at:506 │507 59 │ def to_iodata(?"), do: """508 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~509 │510 └─ lib/phoenix_html/safe.ex:59: Phoenix.HTML.Safe.List.to_iodata/1511512 warning: the 1st pattern in clause will never match:513514 39515516 because it is expected to receive type:517518 dynamic(empty_list() or non_empty_list(term(), term()))519520 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())521522 type warning found at:523 │524 60 │ def to_iodata(?'), do: "'"525 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~526 │527 └─ lib/phoenix_html/safe.ex:60: Phoenix.HTML.Safe.List.to_iodata/1528529 warning: the 1st pattern in clause will never match:530531 {:safe, data}532533 because it is expected to receive type:534535 dynamic(empty_list() or non_empty_list(term(), term()))536537 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())538539 type warning found at:540 │541 76 │ def to_iodata({:safe, data}) do542 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~543 │544 └─ lib/phoenix_html/safe.ex:76: Phoenix.HTML.Safe.List.to_iodata/1545546 warning: the following clause is redundant:547548 def to_iodata(other)549550 it has type:551552 dynamic(empty_list() or non_empty_list(term(), term()))553554 previous clauses have already matched on the following types:555556 non_empty_list(term(), term())557 empty_list()558559 │560 80 │ def to_iodata(other) do561 │ ~562 │563 └─ lib/phoenix_html/safe.ex:80:7: Phoenix.HTML.Safe.List.to_iodata/1564565 warning: the 1st pattern in clause will never match:566567 h568569 because it is expected to receive type:570571 dynamic(empty_list() or non_empty_list(term(), term()))572573 where "h" was given the type:574575 # type: integer()576 # from: lib/phoenix_html/safe.ex:62:25577 is_integer(h)578579 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())580581 type warning found at:582 │583 62 │ def to_iodata(h) when is_integer(h) and h <= 255 do584 │ ~585 │586 └─ lib/phoenix_html/safe.ex:62:17: Phoenix.HTML.Safe.List.to_iodata/1587588 warning: the 1st pattern in clause will never match:589590 h591592 because it is expected to receive type:593594 dynamic(empty_list() or non_empty_list(term(), term()))595596 where "h" was given the type:597598 # type: integer()599 # from: lib/phoenix_html/safe.ex:66:25600 is_integer(h)601602 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())603604 type warning found at:605 │606 66 │ def to_iodata(h) when is_integer(h) do607 │ ~608 │609 └─ lib/phoenix_html/safe.ex:66:17: Phoenix.HTML.Safe.List.to_iodata/1610611 warning: the 1st pattern in clause will never match:612613 h614615 because it is expected to receive type:616617 dynamic(empty_list() or non_empty_list(term(), term()))618619 where "h" was given the type:620621 # type: binary()622 # from: lib/phoenix_html/safe.ex:72:25623 is_binary(h)624625 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())626627 type warning found at:628 │629 72 │ def to_iodata(h) when is_binary(h) do630 │ ~631 │632 └─ lib/phoenix_html/safe.ex:72:17: Phoenix.HTML.Safe.List.to_iodata/1633634Generated phoenix_html app635==> phoenix_template636Compiling 4 files (.ex)637Generated phoenix_template app638==> phoenix_view639Compiling 1 file (.ex)640 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 operator641 │642 655 │ <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix643 │ ~644 │645 └─ lib/phoenix_view.ex:655:29: Phoenix.View.unsuffix/2646647Generated phoenix_view app648warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"649 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2650 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1651 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5652 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2653 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4654 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2655656==> postgrex657Compiling 70 files (.ex)658Generated postgrex app659==> ecto_sql660Compiling 25 files (.ex)661Generated ecto_sql app662warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"663 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2664 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1665 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5666 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2667 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4668 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2669670==> phoenix_ecto671Compiling 7 files (.ex)672Generated phoenix_ecto app673==> uboot_env674Compiling 5 files (.ex)675Generated uboot_env app676==> property_table677Compiling 8 files (.ex)678Generated property_table app679==> nerves_uevent680 CC uevent.o681 LD uevent682Compiling 5 files (.ex)683Generated nerves_uevent app684==> nerves_runtime685Compiling 14 files (.ex)686Generated nerves_runtime app687==> toolshed688Compiling 5 files (.ex)689Generated toolshed app690==> nerves_compatibility_test691===> Analyzing applications...692===> Compiling cowboy_telemetry693==> plug_cowboy694Compiling 5 files (.ex)695Generated plug_cowboy app696warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"697 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2698 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1699 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5700 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2701 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4702 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2703704==> phoenix705Compiling 69 files (.ex)706 warning: using single-quoted strings to represent charlists is deprecated.707 Use ~c"" if you indeed want a charlist or use "" instead.708 You may run "mix format --migrate" to change all single-quoted709 strings to use the ~c sigil and fix this warning.710 │711 258 │ notBefore: {:utcTime, '#{not_before}000000Z'},712 │ ~713 │714 └─ lib/mix/tasks/phx.gen.cert.ex:258:33715716 warning: using single-quoted strings to represent charlists is deprecated.717 Use ~c"" if you indeed want a charlist or use "" instead.718 You may run "mix format --migrate" to change all single-quoted719 strings to use the ~c sigil and fix this warning.720 │721 259 │ notAfter: {:utcTime, '#{not_after}000000Z'}722 │ ~723 │724 └─ lib/mix/tasks/phx.gen.cert.ex:259:32725726 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead727 │728 50 │ Logger.warn(729 │ ~730 │731 └─ lib/phoenix/code_reloader/server.ex:50:20: Phoenix.CodeReloader.Server.handle_call/3732733 warning: unused require Logger734 │735 9 │ require Logger736 │ ~737 │738 └─ lib/phoenix/config.ex:9:3739740 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.741742 This error happens when you have function calls without parentheses inside keywords. For example:743744 function(arg, one: nested_call a, b, c)745 function(arg, one: if expr, do: :this, else: :that)746747 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:748749 function(arg, one: if(expr, do: :this, else: :that))750 function(arg, one: nested_call(a, b, c))751752 Ambiguity found at:753 │754 998 │ defp get_disposition_type(other), do: raise ArgumentError, "expected :disposition to be :attachment or :inline, got: #{inspect(other)}"755 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~756 │757 └─ lib/phoenix/controller.ex:998758759 warning: unused require Logger760 │761 259 │ require Logger762 │ ~763 │764 └─ lib/phoenix/endpoint.ex:259:3765766 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead767 │768 1009 │ Logger.warn "send_download/3 has been invoked during an AJAX request. " <>769 │ ~770 │771 └─ lib/phoenix/controller.ex:1009:14: Phoenix.Controller.warn_if_ajax/1772773 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead774 │775 34 │ Logger.warn("no configuration found for otp_app #{inspect(otp_app)} and module #{inspect(mod)}")776 │ ~777 │778 └─ lib/phoenix/endpoint/supervisor.ex:34:20: Phoenix.Endpoint.Supervisor.init/1779780 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead781 │782 57 │ Logger.warn(":instrumenters configuration for #{inspect(mod)} is deprecated and has no effect")783 │ ~784 │785 └─ lib/phoenix/endpoint/supervisor.ex:57:14: Phoenix.Endpoint.Supervisor.init/1786787 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead788 │789 78 │ Logger.warn """790 │ ~791 │792 └─ lib/phoenix/endpoint/supervisor.ex:78:14: Phoenix.Endpoint.Supervisor.pubsub_children/2793794 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead795 │796 264 │ Logger.warn("url: [host: ...] configuration value #{inspect(host)} for #{inspect(endpoint)} is invalid")797 │ ~798 │799 └─ lib/phoenix/endpoint/supervisor.ex:264:14: Phoenix.Endpoint.Supervisor.build_url/2800801 warning: unused require Phoenix.Endpoint802 │803 6 │ require Phoenix.Endpoint804 │ ~805 │806 └─ lib/phoenix/controller.ex:6:3807808 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 operator809 │810 46 │ <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix811 │ ~812 │813 └─ lib/phoenix/naming.ex:46:29: Phoenix.Naming.unsuffix/2814815 warning: unused require Phoenix.Endpoint816 │817 19 │ require Phoenix.Endpoint818 │ ~819 │820 └─ lib/phoenix/endpoint/render_errors.ex:19:3821822 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.823824 This error happens when you have function calls without parentheses inside keywords. For example:825826 function(arg, one: nested_call a, b, c)827 function(arg, one: if expr, do: :this, else: :that)828829 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:830831 function(arg, one: if(expr, do: :this, else: :that))832 function(arg, one: nested_call(a, b, c))833834 Ambiguity found at:835 │836 71 │ unless actions -- supported_actions == [], do: raise ArgumentError, """837 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~838 │839 └─ lib/phoenix/router/resource.ex:71840841 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead842 │843 653 │ Logger.warn fn -> "Ignoring unmatched topic \"#{topic}\" in #{inspect(socket.handler)}" end844 │ ~845 │846 └─ lib/phoenix/socket.ex:653:16: Phoenix.Socket.handle_in/4847848 warning: unused require Phoenix.Endpoint849 │850 6 │ require Phoenix.Endpoint851 │ ~852 │853 └─ lib/phoenix/channel/server.ex:6:3854855 warning: unused require Phoenix.Endpoint856 │857 192 │ require Phoenix.Endpoint858 │ ~859 │860 └─ lib/phoenix/socket.ex:192:3861862 warning: unused require Logger863 │864 93 │ require Logger865 │ ~866 │867 └─ lib/phoenix/token.ex:93:3868869 warning: comparison between distinct types found:870871 merge_all != []872873 given types:874875 dynamic(non_empty_list({atom(), term()})) != empty_list()876877 where "merge_all" was given the type:878879 # type: dynamic(non_empty_list({atom(), term()}))880 # from: lib/phoenix/router/route.ex:111:15881 merge_all = merge_params ++ merge_private ++ merge_assigns882883 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 false884885 type warning found at:886 │887 113 │ if merge_all != [] do888 │ ~889 │890 └─ lib/phoenix/router/route.ex:113:18: Phoenix.Router.Route.build_prepare/1891892 warning: a struct for Plug.Conn is expected on struct update:893894 %Plug.Conn{conn | state: :sent}895896 but got type:897898 dynamic()899900 where "conn" was given the type:901902 # type: dynamic()903 # from: lib/phoenix/endpoint/render_errors.ex:57:17904 conn905906 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"907908 type warning found at:909 │910 61 │ %Plug.Conn{conn | state: :sent}911 │ ~912 │913 └─ lib/phoenix/endpoint/render_errors.ex:61:9: Phoenix.Endpoint.RenderErrors.__catch__/5914915 warning: a struct for Plug.Conn is expected on struct update:916917 %Plug.Conn{conn | query_params: %{}, params: %{}}918919 but got type:920921 dynamic(%{..., params: %Plug.Conn.Unfetched{}})922923 where "conn" was given the types:924925 # type: dynamic(%{..., params: term()})926 # from: lib/phoenix/endpoint/render_errors.ex:124:17927 conn.params928929 # type: dynamic(%{..., params: %Plug.Conn.Unfetched{}})930 # from: lib/phoenix/endpoint/render_errors.ex:124:17931 conn.params932933 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"934935 type warning found at:936 │937 125 │ %Plug.Conn.Unfetched{} -> %Plug.Conn{conn | query_params: %{}, params: %{}}938 │ ~939 │940 └─ lib/phoenix/endpoint/render_errors.ex:125:35: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/1941942 warning: a struct for Plug.Conn is expected on struct update:943944 %Plug.Conn{conn | query_params: %{}, params: params}945946 but got type:947948 dynamic(%{..., params: not %Plug.Conn.Unfetched{}})949950 where "conn" was given the types:951952 # type: dynamic(%{..., params: term()})953 # from: lib/phoenix/endpoint/render_errors.ex:124:17954 conn.params955956 # type: dynamic(%{..., params: not %Plug.Conn.Unfetched{}})957 # from: lib/phoenix/endpoint/render_errors.ex:124:17958 conn.params959960 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"961962 type warning found at:963 │964 126 │ params -> %Plug.Conn{conn | query_params: %{}, params: params}965 │ ~966 │967 └─ lib/phoenix/endpoint/render_errors.ex:126:19: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/1968969 warning: a struct for Plug.Conn is expected on struct update:970971 %Plug.Conn{conn | params: params}972973 but got type:974975 dynamic(%{..., params: map()})976977 where "conn" was given the type:978979 # type: dynamic(%{..., params: map()})980 # from: lib/phoenix/controller.ex:1036:17981 Map.get(conn.params, required_key)982983 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"984985 type warning found at:986 │987 1043 │ %Plug.Conn{conn | params: params}988 │ ~989 │990 └─ lib/phoenix/controller.ex:1043:5: Phoenix.Controller.scrub_params/2991992 warning: incompatible types given to socket_children/1:993994 socket_children(mod)995996 given types:997998 -dynamic(atom())-9991000 but expected one of:10011002 %{..., __sockets__: term()}10031004 where "mod" was given the types:10051006 # type: dynamic(atom() or binary())1007 # from: lib/phoenix/endpoint/supervisor.ex:27:411008 defaults(otp_app, mod)10091010 # type: dynamic(atom())1011 # from: lib/phoenix/endpoint/supervisor.ex:31:161012 mod.init(:supervisor, env_conf)10131014 type warning found at:1015 │1016 67 │ socket_children(mod) ++1017 │ ~1018 │1019 └─ lib/phoenix/endpoint/supervisor.ex:67:7: Phoenix.Endpoint.Supervisor.init/110201021 warning: expected a module (an atom) when invoking compress_file/2 in expression:10221023 compressor.compress_file(file.digested_filename, file.digested_content)10241025 where "compressor" was given the type:10261027 # type: dynamic(%{..., file_extensions: non_empty_list(term(), term())})1028 # from: lib/phoenix/digester.ex:167:281029 [file_extension | _] = compressor.file_extensions10301031 where "file" was given the type:10321033 # type: dynamic(%{..., relative_path: term()})1034 # from: lib/phoenix/digester.ex:161:171035 Path.join(output_path, file.relative_path)10361037 type warning found at:1038 │1039 170 │ compressor.compress_file(file.digested_filename, file.digested_content) do1040 │ ~1041 │1042 └─ lib/phoenix/digester.ex:170:25: Phoenix.Digester.write_to_disk/210431044Generated phoenix app1045warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1046 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21047 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11048 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51049 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21050 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41051 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/210521053==> phoenix_live_view1054Compiling 31 files (.ex)1055 warning: using single-quoted strings to represent charlists is deprecated.1056 Use ~c"" if you indeed want a charlist or use "" instead.1057 You may run "mix format --migrate" to change all single-quoted1058 strings to use the ~c sigil and fix this warning.1059 │1060 319 │ {'LiveView', view},1061 │ ~1062 │1063 └─ lib/phoenix_live_view/channel.ex:319:1010641065 warning: using single-quoted strings to represent charlists is deprecated.1066 Use ~c"" if you indeed want a charlist or use "" instead.1067 You may run "mix format --migrate" to change all single-quoted1068 strings to use the ~c sigil and fix this warning.1069 │1070 320 │ {'Parent pid', parent_pid},1071 │ ~1072 │1073 └─ lib/phoenix_live_view/channel.ex:320:1010741075 warning: using single-quoted strings to represent charlists is deprecated.1076 Use ~c"" if you indeed want a charlist or use "" instead.1077 You may run "mix format --migrate" to change all single-quoted1078 strings to use the ~c sigil and fix this warning.1079 │1080 321 │ {'Transport pid', transport_pid},1081 │ ~1082 │1083 └─ lib/phoenix_live_view/channel.ex:321:1010841085 warning: using single-quoted strings to represent charlists is deprecated.1086 Use ~c"" if you indeed want a charlist or use "" instead.1087 You may run "mix format --migrate" to change all single-quoted1088 strings to use the ~c sigil and fix this warning.1089 │1090 322 │ {'Topic', topic},1091 │ ~1092 │1093 └─ lib/phoenix_live_view/channel.ex:322:1010941095 warning: using single-quoted strings to represent charlists is deprecated.1096 Use ~c"" if you indeed want a charlist or use "" instead.1097 You may run "mix format --migrate" to change all single-quoted1098 strings to use the ~c sigil and fix this warning.1099 │1100 323 │ {'Components count', map_size(cid_to_component)}1101 │ ~1102 │1103 └─ lib/phoenix_live_view/channel.ex:323:1011041105 warning: using single-quoted strings to represent charlists is deprecated.1106 Use ~c"" if you indeed want a charlist or use "" instead.1107 You may run "mix format --migrate" to change all single-quoted1108 strings to use the ~c sigil and fix this warning.1109 │1110 329 │ [data: [{'State', state}]]1111 │ ~1112 │1113 └─ lib/phoenix_live_view/channel.ex:329:1411141115 warning: using single-quoted strings to represent charlists is deprecated.1116 Use ~c"" if you indeed want a charlist or use "" instead.1117 You may run "mix format --migrate" to change all single-quoted1118 strings to use the ~c sigil and fix this warning.1119 │1120 112 │ @codepoints '\s\n\r\t'1121 │ ~1122 │1123 └─ lib/phoenix_live_view/html_algebra.ex:112:1511241125 warning: using single-quoted strings to represent charlists is deprecated.1126 Use ~c"" if you indeed want a charlist or use "" instead.1127 You may run "mix format --migrate" to change all single-quoted1128 strings to use the ~c sigil and fix this warning.1129 │1130 125 │ do: :binary.first(text) in '\n\r'1131 │ ~1132 │1133 └─ lib/phoenix_live_view/html_algebra.ex:125:3211341135 warning: using single-quoted strings to represent charlists is deprecated.1136 Use ~c"" if you indeed want a charlist or use "" instead.1137 You may run "mix format --migrate" to change all single-quoted1138 strings to use the ~c sigil and fix this warning.1139 │1140 130 │ do: :binary.last(text) in '\n\r'1141 │ ~1142 │1143 └─ lib/phoenix_live_view/html_algebra.ex:130:3111441145 warning: using single-quoted strings to represent charlists is deprecated.1146 Use ~c"" if you indeed want a charlist or use "" instead.1147 You may run "mix format --migrate" to change all single-quoted1148 strings to use the ~c sigil and fix this warning.1149 │1150 503 │ defp count_newlines_until_text(<<char, rest::binary>>, counter) when char in '\s\t\r',1151 │ ~1152 │1153 └─ lib/phoenix_live_view/html_formatter.ex:503:8011541155 warning: using single-quoted strings to represent charlists is deprecated.1156 Use ~c"" if you indeed want a charlist or use "" instead.1157 You may run "mix format --migrate" to change all single-quoted1158 strings to use the ~c sigil and fix this warning.1159 │1160 536 │ do: if(String.trim_leading(text) == "", do: false, else: !(:binary.last(text) in '\s\t'))1161 │ ~1162 │1163 └─ lib/phoenix_live_view/html_formatter.ex:536:8611641165 warning: using single-quoted strings to represent charlists is deprecated.1166 Use ~c"" if you indeed want a charlist or use "" instead.1167 You may run "mix format --migrate" to change all single-quoted1168 strings to use the ~c sigil and fix this warning.1169 │1170 546 │ if String.trim_leading(text) != "" and :binary.first(text) not in '\s\t\n\r' do1171 │ ~1172 │1173 └─ lib/phoenix_live_view/html_formatter.ex:546:7311741175 warning: using single-quoted strings to represent charlists is deprecated.1176 Use ~c"" if you indeed want a charlist or use "" instead.1177 You may run "mix format --migrate" to change all single-quoted1178 strings to use the ~c sigil and fix this warning.1179 │1180 3 │ @space_chars '\s\t\f'1181 │ ~1182 │1183 └─ lib/phoenix_live_view/html_tokenizer.ex:3:1611841185 warning: using single-quoted strings to represent charlists is deprecated.1186 Use ~c"" if you indeed want a charlist or use "" instead.1187 You may run "mix format --migrate" to change all single-quoted1188 strings to use the ~c sigil and fix this warning.1189 │1190 4 │ @quote_chars '"\''1191 │ ~1192 │1193 └─ lib/phoenix_live_view/html_tokenizer.ex:4:1611941195 warning: using single-quoted strings to represent charlists is deprecated.1196 Use ~c"" if you indeed want a charlist or use "" instead.1197 You may run "mix format --migrate" to change all single-quoted1198 strings to use the ~c sigil and fix this warning.1199 │1200 5 │ @stop_chars '>/=\r\n' ++ @quote_chars ++ @space_chars1201 │ ~1202 │1203 └─ lib/phoenix_live_view/html_tokenizer.ex:5:1512041205 warning: unused require Logger1206 │1207 25 │ require Logger1208 │ ~1209 │1210 └─ lib/phoenix_live_view/socket.ex:25:312111212 warning: unused require Phoenix.ChannelTest1213 │1214 179 │ require Phoenix.ChannelTest1215 │ ~1216 │1217 └─ lib/phoenix_live_view/test/live_view_test.ex:179:312181219 warning: unused require Phoenix.ConnTest1220 │1221 178 │ require Phoenix.ConnTest1222 │ ~1223 │1224 └─ lib/phoenix_live_view/test/live_view_test.ex:178:312251226 warning: unused require Phoenix.ChannelTest1227 │1228 4 │ require Phoenix.ChannelTest1229 │ ~1230 │1231 └─ lib/phoenix_live_view/test/upload_client.ex:4:312321233 warning: unused require Logger1234 │1235 6 │ require Logger1236 │ ~1237 │1238 └─ lib/phoenix_live_view/upload_channel.ex:6:312391240 warning: a struct for Phoenix.LiveView.Socket is expected on struct update:12411242 %Phoenix.LiveView.Socket{1243 socket1244 | private: Map.put(socket.private, :phoenix_live_layout, {mod, template})1245 }12461247 but got type:12481249 dynamic()12501251 where "socket" was given the type:12521253 # type: dynamic()1254 # from: lib/phoenix_live_view/utils.ex:459:211255 socket12561257 when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"12581259 type warning found at:1260 │1261 460 │ %Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, {mod, template})}1262 │ ~1263 │1264 └─ lib/phoenix_live_view/utils.ex:460:5: Phoenix.LiveView.Utils.do_mount_opt/312651266 warning: a struct for Phoenix.LiveView.Socket is expected on struct update:12671268 %Phoenix.LiveView.Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, false)}12691270 but got type:12711272 dynamic()12731274 where "socket" was given the type:12751276 # type: dynamic()1277 # from: lib/phoenix_live_view/utils.ex:463:211278 socket12791280 when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"12811282 type warning found at:1283 │1284 464 │ %Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, false)}1285 │ ~1286 │1287 └─ lib/phoenix_live_view/utils.ex:464:5: Phoenix.LiveView.Utils.do_mount_opt/312881289 warning: a struct for Phoenix.LiveView.Socket is expected on struct update:12901291 %Phoenix.LiveView.Socket{1292 socket1293 | assigns: Map.merge(temp_assigns, socket.assigns),1294 private: Map.put(socket.private, :temporary_assigns, temp_assigns)1295 }12961297 but got type:12981299 dynamic()13001301 where "socket" was given the type:13021303 # type: dynamic()1304 # from: lib/phoenix_live_view/utils.ex:473:211305 socket13061307 when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"13081309 type warning found at:1310 │1311 480 │ %Socket{1312 │ ~1313 │1314 └─ lib/phoenix_live_view/utils.ex:480:5: Phoenix.LiveView.Utils.do_mount_opt/313151316 warning: a struct for Phoenix.LiveView.Socket is expected on struct update:13171318 %Phoenix.LiveView.Socket{1319 socket1320 | assigns: %Phoenix.LiveView.Socket.AssignsNotInSocket{__assigns__: assigns}1321 }13221323 but got type:13241325 dynamic(%{..., assigns: term()})13261327 where "socket" was given the type:13281329 # type: dynamic(%{..., assigns: term()})1330 # from: lib/phoenix_live_view/utils.ex:491:431331 %{assigns: assigns} = socket13321333 when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"13341335 type warning found at:1336 │1337 492 │ socket = %Socket{socket | assigns: %Socket.AssignsNotInSocket{__assigns__: assigns}}1338 │ ~1339 │1340 └─ lib/phoenix_live_view/utils.ex:492:14: Phoenix.LiveView.Utils.render_assigns/113411342 warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:13431344 %Phoenix.LiveView.UploadEntry{entry | preflighted?: true}13451346 but got type:13471348 dynamic()13491350 where "entry" was given the type:13511352 # type: dynamic()1353 # from: lib/phoenix_live_view/upload_config.ex:339:281354 entry <- conf.entries13551356 when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"13571358 type warning found at:1359 │1360 339 │ | entries: for(entry <- conf.entries, do: %UploadEntry{entry | preflighted?: true})1361 │ ~1362 │1363 └─ lib/phoenix_live_view/upload_config.ex:339:49: Phoenix.LiveView.UploadConfig.mark_preflighted/113641365 warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:13661367 %Phoenix.LiveView.UploadEntry{entry | valid?: true, uuid: generate_uuid()}13681369 but got type:13701371 dynamic()13721373 where "entry" was given the type:13741375 # type: dynamic()1376 # from: lib/phoenix_live_view/upload_config.ex:539:301377 entry13781379 when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"13801381 type warning found at:1382 │1383 540 │ entry = %UploadEntry{entry | valid?: true, uuid: generate_uuid()}1384 │ ~1385 │1386 └─ lib/phoenix_live_view/upload_config.ex:540:13: Phoenix.LiveView.UploadConfig.put_valid_entry/213871388 warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:13891390 %Phoenix.LiveView.UploadEntry{entry | valid?: false}13911392 but got type:13931394 dynamic()13951396 where "entry" was given the type:13971398 # type: dynamic()1399 # from: lib/phoenix_live_view/upload_config.ex:552:321400 entry14011402 when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"14031404 type warning found at:1405 │1406 553 │ entry = %UploadEntry{entry | valid?: false}1407 │ ~1408 │1409 └─ lib/phoenix_live_view/upload_config.ex:553:13: Phoenix.LiveView.UploadConfig.put_invalid_entry/314101411 warning: a struct for Phoenix.HTML.Form is expected on struct update:14121413 %Phoenix.HTML.Form{Phoenix.HTML.FormData.to_form(form_for, form_options) | action: action || "#"}14141415 but got type:14161417 dynamic()14181419 where "form_for" was given the type:14201421 # type: dynamic(not false and not nil)1422 # from: lib/phoenix_live_view/helpers.ex:1101:141423 form_for = assigns[:for] || :erlang.error(ArgumentError.exception("missing :for assign to form"))14241425 where "form_options" was given the type:14261427 # type: dynamic(list({term(), term()}))1428 # from: lib/phoenix_live_view/helpers.ex:1102:181429 form_options = assigns_to_attributes(assigns, [:action, :for])14301431 you must assign "Phoenix.HTML.FormData.to_form(form_for, form_options)" to variable and pattern match on "%Phoenix.HTML.Form{}"14321433 type warning found at:1434 │1435 1106 │ form = %Phoenix.HTML.Form{1436 │ ~1437 │1438 └─ lib/phoenix_live_view/helpers.ex:1106:14: Phoenix.LiveView.Helpers.form/114391440 warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:14411442 %Phoenix.LiveView.UploadEntry{entry | cancelled?: true}14431444 but got type:14451446 dynamic()14471448 where "entry" was given the type:14491450 # type: dynamic()1451 # from: lib/phoenix_live_view/upload_config.ex:635:421452 entry14531454 when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"14551456 type warning found at:1457 │1458 635 │ update_entry(conf, entry.ref, fn entry -> %UploadEntry{entry | cancelled?: true} end)1459 │ ~1460 │1461 └─ lib/phoenix_live_view/upload_config.ex:635:51: Phoenix.LiveView.UploadConfig.cancel_entry/214621463 warning: Logger.disable/1 is deprecated. Use Logger.put_process_level(pid, :none) instead1464 │1465 72 │ Logger.disable(self())1466 │ ~1467 │1468 └─ lib/phoenix_live_view/test/client_proxy.ex:72:12: Phoenix.LiveViewTest.ClientProxy.init/114691470 warning: a struct for Phoenix.LiveViewTest.ClientProxy is expected on struct update:14711472 %Phoenix.LiveViewTest.ClientProxy{view | rendered: rendered}14731474 but got type:14751476 dynamic(%{..., rendered: map()})14771478 where "view" was given the type:14791480 # type: dynamic(%{..., rendered: map()})1481 # from: lib/phoenix_live_view/test/client_proxy.ex:701:241482 Phoenix.LiveViewTest.DOM.merge_diff(view.rendered, diff)14831484 when defining the variable "view", you must also pattern match on "%Phoenix.LiveViewTest.ClientProxy{}"14851486 type warning found at:1487 │1488 702 │ new_view = %ClientProxy{view | rendered: rendered}1489 │ ~1490 │1491 └─ lib/phoenix_live_view/test/client_proxy.ex:702:20: Phoenix.LiveViewTest.ClientProxy.merge_rendered/314921493 warning: the right-hand side of || (shown as ... below) will never be executed:14941495 conn.private[:live_view_connect_info] || prune_conn(conn) || ...14961497 because the left-hand side always evaluates to:14981499 dynamic(not false and not nil)15001501 where "conn" was given the types:15021503 # type: dynamic(%Plug.Conn{assigns: %{..., live_module: term()}, status: integer()})1504 # from: lib/phoenix_live_view/test/live_view_test.ex:320:721505 %Plug.Conn{status: 200, assigns: %{live_module: live_module}} = conn15061507 # type: dynamic(%Plug.Conn{1508 assigns: %{..., live_module: term()},1509 private:1510 %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or1511 non_struct_map(),1512 status: integer()1513 })1514 # from: lib/phoenix_live_view/test/live_view_test.ex:334:351515 conn.private[:live_view_connect_params]15161517 type warning found at:1518 │1519 335 │ connect_info: conn.private[:live_view_connect_info] || prune_conn(conn) || %{},1520 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1521 │1522 └─ lib/phoenix_live_view/test/live_view_test.ex:335: Phoenix.LiveViewTest.connect_from_static_token/215231524 warning: Plug.Conn.Query.decode_pair/2 is deprecated. Use decode_init/0, decode_each/2, and decode_done/2 instead1525 │1526 1095 │ Plug.Conn.Query.decode_pair({name, DOM.attribute(selected, "value")}, acc)1527 │ ~1528 │1529 └─ lib/phoenix_live_view/test/client_proxy.ex:1095:23: Phoenix.LiveViewTest.ClientProxy.form_defaults/31530 └─ lib/phoenix_live_view/test/client_proxy.ex:1100:21: Phoenix.LiveViewTest.ClientProxy.form_defaults/31531 └─ lib/phoenix_live_view/test/client_proxy.ex:1110:27: Phoenix.LiveViewTest.ClientProxy.form_defaults/31532 └─ lib/phoenix_live_view/test/client_proxy.ex:1119:25: Phoenix.LiveViewTest.ClientProxy.form_defaults/315331534 warning: the following clause is redundant:15351536 def update(assigns, _key, fun) when is_function(fun, 1) or is_function(fun, 2)15371538 it has type:15391540 dynamic(), dynamic(), dynamic((none() -> term()) or (none(), none() -> term()))15411542 previous clauses have already matched on the following types:15431544 %Phoenix.LiveView.Socket{}, term(), (none(), none() -> term())1545 %Phoenix.LiveView.Socket{}, term(), (none() -> term())1546 term(), term(), (none(), none() -> term())1547 term(), term(), (none() -> term())15481549 │1550 952 │ def update(assigns, _key, fun) when is_function(fun, 1) or is_function(fun, 2) do1551 │ ~1552 │1553 └─ lib/phoenix_live_view.ex:952:7: Phoenix.LiveView.update/315541555 warning: this clause of defp class_names/1 is never used (or it will always fail/warn when invoked)1556 │1557 603 │ defp class_names(nil), do: []1558 │ ~1559 │1560 └─ lib/phoenix_live_view/js.ex:603:8: Phoenix.LiveView.JS.class_names/115611562 warning: the following clause is redundant:15631564 def to_iodata(%_{} = struct)15651566 it has type:15671568 dynamic(%Phoenix.LiveView.Rendered{})15691570 previous clauses have already matched on the following types:15711572 %Phoenix.LiveView.Rendered{}15731574 │1575 127 │ def to_iodata(%_{} = struct) do1576 │ ~1577 │1578 └─ lib/phoenix_live_view/engine.ex:127:9: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/115791580 warning: the 1st pattern in clause will never match:15811582 nil15831584 because it is expected to receive type:15851586 dynamic(%Phoenix.LiveView.Rendered{})15871588 hint: defimpl for Phoenix.LiveView.Rendered requires its callbacks to match exclusively on %Phoenix.LiveView.Rendered{}15891590 type warning found at:1591 │1592 131 │ def to_iodata(nil) do1593 │ ~~~~~~~~~~~~~~~~~~~~~1594 │1595 └─ lib/phoenix_live_view/engine.ex:131: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/115961597 warning: the following clause is redundant:15981599 def to_iodata(other)16001601 it has type:16021603 dynamic(%Phoenix.LiveView.Rendered{})16041605 previous clauses have already matched on the following types:16061607 %Phoenix.LiveView.Rendered{}16081609 │1610 135 │ def to_iodata(other) do1611 │ ~1612 │1613 └─ lib/phoenix_live_view/engine.ex:135:9: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/116141615Generated phoenix_live_view app1616warning: Phoenix now requires you to explicitly list which engine to use1617for Phoenix JSON encoding. We recommend everyone to upgrade to1618Jason by setting in your config/config.exs:16191620 config :phoenix, :json_library, Jason16211622And then adding {:jason, "~> 1.0"} as a dependency.16231624If instead you would rather continue using Poison, then add to1625your config/config.exs:16261627 config :phoenix, :json_library, Poison16281629 (phoenix 1.6.17) lib/phoenix.ex:56: Phoenix.start/21630 (kernel 11.0.4) application_master.erl:299: :application_master.start_it_old/416311632warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1633 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21634 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11635 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51636 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21637 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41638 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/216391640==> phoenix_live_dashboard1641Compiling 40 files (.ex)1642 warning: using single-quoted strings to represent charlists is deprecated.1643 Use ~c"" if you indeed want a charlist or use "" instead.1644 You may run "mix format --migrate" to change all single-quoted1645 strings to use the ~c sigil and fix this warning.1646 │1647 709 │ '#Port' ++ rest = :erlang.port_to_list(ref)1648 │ ~1649 │1650 └─ lib/phoenix/live_dashboard/page_builder.ex:709:516511652 warning: using single-quoted strings to represent charlists is deprecated.1653 Use ~c"" if you indeed want a charlist or use "" instead.1654 You may run "mix format --migrate" to change all single-quoted1655 strings to use the ~c sigil and fix this warning.1656 │1657 728 │ '#Ref' ++ rest = :erlang.ref_to_list(ref)1658 │ ~1659 │1660 └─ lib/phoenix/live_dashboard/page_builder.ex:728:516611662 warning: using single-quoted strings to represent charlists is deprecated.1663 Use ~c"" if you indeed want a charlist or use "" instead.1664 You may run "mix format --migrate" to change all single-quoted1665 strings to use the ~c sigil and fix this warning.1666 │1667 446 │ @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1668 │ ~1669 │1670 └─ lib/phoenix/live_dashboard/system_info.ex:446:1616711672 warning: using single-quoted strings to represent charlists is deprecated.1673 Use ~c"" if you indeed want a charlist or use "" instead.1674 You may run "mix format --migrate" to change all single-quoted1675 strings to use the ~c sigil and fix this warning.1676 │1677 446 │ @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1678 │ ~1679 │1680 └─ lib/phoenix/live_dashboard/system_info.ex:446:2816811682 warning: using single-quoted strings to represent charlists is deprecated.1683 Use ~c"" if you indeed want a charlist or use "" instead.1684 You may run "mix format --migrate" to change all single-quoted1685 strings to use the ~c sigil and fix this warning.1686 │1687 446 │ @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1688 │ ~1689 │1690 └─ lib/phoenix/live_dashboard/system_info.ex:446:4016911692 warning: using single-quoted strings to represent charlists is deprecated.1693 Use ~c"" if you indeed want a charlist or use "" instead.1694 You may run "mix format --migrate" to change all single-quoted1695 strings to use the ~c sigil and fix this warning.1696 │1697 654 │ [{'none', 0, 0}] -> []1698 │ ~1699 │1700 └─ lib/phoenix/live_dashboard/system_info.ex:654:1117011702warning: 0..-2 has a default step of -1, please write 0..-2//-1 instead1703 lib/phoenix/live_dashboard/page_live.ex:178: Phoenix.LiveDashboard.PageLive.dashboard_mount_path/317041705warning: 0..-3 has a default step of -1, please write 0..-3//-1 instead1706 lib/phoenix/live_dashboard/page_live.ex:178: Phoenix.LiveDashboard.PageLive.dashboard_mount_path/317071708 warning: expected a module (an atom) when invoking __live__/0 in expression:17091710 Map.put(component_assigns, :page, page).__live__()17111712 but got type:17131714 dynamic(%{..., page: term()})17151716 where "component_assigns" was given the type:17171718 # type: dynamic(map())1719 # from: lib/phoenix/live_dashboard/components/nav_bar_component.ex:218:391720 Map.put(component_assigns, :page, page)17211722 where "page" was given the type:17231724 # type: dynamic()1725 # from: lib/phoenix/live_dashboard/components/nav_bar_component.ex:215:231726 page17271728 hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()17291730 type warning found at:1731 │1732 218 │ live_component(component, Map.put(component_assigns, :page, page))1733 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1734 │1735 └─ lib/phoenix/live_dashboard/components/nav_bar_component.ex:218: Phoenix.LiveDashboard.NavBarComponent.render_content/217361737 warning: expected a module (an atom) when invoking __live__/0 in expression:17381739 component_assigns.__live__()17401741 where "component_assigns" was given the type:17421743 # type: dynamic(%{..., page: term()})1744 # from: lib/phoenix/live_dashboard/page_live.ex:238:231745 component_assigns = Map.put(component_assigns, :page, assigns.page)17461747 hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()17481749 type warning found at:1750 │1751 239 │ live_component(component, component_assigns)1752 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1753 │1754 └─ lib/phoenix/live_dashboard/page_live.ex:239: Phoenix.LiveDashboard.PageLive.render_page/217551756 warning: Logger.add_backend/1 is deprecated. Use LoggerBackends.add/2 from :logger_backends dependency1757 │1758 8 │ Logger.add_backend(Phoenix.LiveDashboard.LoggerPubSubBackend)1759 │ ~1760 │1761 └─ lib/phoenix/live_dashboard/application.ex:8:12: Phoenix.LiveDashboard.Application.start/217621763Generated phoenix_live_dashboard app1764==> swoosh1765Compiling 62 files (.ex)1766Generated swoosh app1767warning: the :gettext compiler is no longer required in your mix.exs.17681769Please find the following line in your mix.exs and remove the :gettext entry:17701771 compilers: [..., :gettext, ...] ++ Mix.compilers(),17721773 (gettext 0.26.2) lib/mix/tasks/compile.gettext.ex:5: Mix.Tasks.Compile.Gettext.run/11774 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51775 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21776 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41777 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/21778 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/517791780==> config_manager1781Compiling 18 files (.ex)1782warning: defining a Gettext backend by calling17831784 use Gettext, otp_app: ...17851786is deprecated. To define a backend, call:17871788 use Gettext.Backend, otp_app: :my_app17891790Then, instead of importing your backend, call this in your module:17911792 use Gettext, backend: MyApp.Gettext17931794 lib/config_manager_web/gettext.ex:23: ConfigManagerWeb.Gettext (module)179517961797== Compilation error in file lib/config_manager_web/endpoint.ex ==1798** (ArgumentError) invalid :json_decoder option. The module Poison is not loaded and could not be found1799 (plug 1.20.3) lib/plug/parsers/json.ex:48: Plug.Parsers.JSON.validate_decoder!/11800 (plug 1.20.3) lib/plug/parsers/json.ex:35: Plug.Parsers.JSON.init/11801 (plug 1.20.3) lib/plug/parsers.ex:283: anonymous fn/2 in Plug.Parsers.convert_parsers/21802 (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/21803 (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/21804 (plug 1.20.3) lib/plug/parsers.ex:263: Plug.Parsers.init/11805 (plug 1.20.3) lib/plug/builder.ex:358: Plug.Builder.init_module_plug/41806 (plug 1.20.3) lib/plug/builder.ex:339: anonymous fn/5 in Plug.Builder.compile/31807could not compile dependency :config_manager, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile config_manager --force", update it with "mix deps.update config_manager" or clean it with "mix deps.clean config_manager"