Build log
nerves_system_x86_64
exshome 0.1.7 · fail · run exshome-0.1.7-1791181754346
2296 of 2296 lines
1Resolving Hex dependencies...2Resolution completed in 0.414s3Unchanged:4 castore 0.1.225 cc_precompiler 0.1.116 circular_buffer 1.1.07 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 2.4.1 VULNERABLE!21 EEF-CVE-2026-32686 (MEDIUM)22 aka: CVE-2026-32686, GHSA-rhv4-8758-jx7v23 Unbounded exponent in decimal enables unauthenticated DoS24 https://osv.dev/vulnerability/EEF-CVE-2026-3268625 ecto 3.13.626 ecto_sql 3.13.527 ecto_sqlite3 0.7.728 elixir_make 0.10.029 erlexec 1.21.0 RETIRED!30 (deprecated) Deprecated31 esbuild 0.10.032 expo 1.1.133 exqlite 0.42.034 exshome 0.1.735 gettext 0.26.236 interactive_cmd 0.1.437 jason 1.4.538 mime 2.0.739 nerves 2.0.0-pre.240 nerves_discovery 0.1.541 nerves_logging 0.2.442 nerves_runtime 0.13.1343 nerves_system_bbb 2.30.244 nerves_system_br 1.34.445 nerves_system_mangopi_mq_pro 0.17.246 nerves_system_qemu_aarch64 0.4.247 nerves_system_rpi0 2.1.248 nerves_system_rpi4 2.1.249 nerves_system_rpi5 2.1.250 nerves_system_trellis 0.5.051 nerves_system_x86_64 1.34.252 nerves_toolchain_aarch64_nerves_linux_gnu 15.3.153 nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.154 nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.155 nerves_toolchain_riscv64_nerves_linux_gnu 15.3.156 nerves_toolchain_x86_64_nerves_linux_musl 15.3.157 nerves_uevent 0.1.758 nimble_options 0.4.059 phoenix 1.6.1760 phoenix_ecto 4.7.061 phoenix_html 3.3.462 phoenix_live_dashboard 0.6.563 phoenix_live_view 0.17.14 VULNERABLE!64 EEF-CVE-2026-64941 (LOW)65 aka: CVE-2026-64941, GHSA-36m4-rm57-3prf66 Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR67 https://osv.dev/vulnerability/EEF-CVE-2026-6494168 phoenix_pubsub 2.3.069 phoenix_template 1.1.070 phoenix_view 2.0.471 plug 1.20.372 plug_cowboy 2.9.073 plug_crypto 1.2.574 property_table 0.3.475 ranch 2.3.076 ring_logger 0.11.777 tablet 0.3.378 tailwind 0.5.179 telemetry 1.4.280 telemetry_metrics 0.6.281 telemetry_poller 1.3.082 toolshed 0.5.083 tz 0.20.184 tz_extra 0.20.185 uboot_env 1.0.286* Getting exshome (Hex package)87* Getting nerves (Hex package)88* Getting ring_logger (Hex package)89* Getting toolshed (Hex package)90* Getting nerves_runtime (Hex package)91* Getting nerves_system_bbb (Hex package)92* Getting nerves_system_mangopi_mq_pro (Hex package)93* Getting nerves_system_qemu_aarch64 (Hex package)94* Getting nerves_system_rpi0 (Hex package)95* Getting nerves_system_rpi4 (Hex package)96* Getting nerves_system_rpi5 (Hex package)97* Getting nerves_system_trellis (Hex package)98* Getting nerves_system_x86_64 (Hex package)99* Getting nerves_system_br (Hex package)100* Getting nerves_toolchain_x86_64_nerves_linux_musl (Hex package)101* Getting nerves_toolchain_armv7_nerves_linux_gnueabihf (Hex package)102* Getting nerves_toolchain_aarch64_nerves_linux_gnu (Hex package)103* Getting nerves_toolchain_armv6_nerves_linux_gnueabihf (Hex package)104* Getting nerves_toolchain_riscv64_nerves_linux_gnu (Hex package)105* Getting nerves_logging (Hex package)106* Getting nerves_uevent (Hex package)107* Getting uboot_env (Hex package)108* Getting elixir_make (Hex package)109* Getting property_table (Hex package)110* Getting circular_buffer (Hex package)111* Getting interactive_cmd (Hex package)112* Getting nerves_discovery (Hex package)113* Getting tablet (Hex package)114* Getting ecto (Hex package)115* Getting ecto_sqlite3 (Hex package)116* Getting erlexec (Hex package)117* Getting esbuild (Hex package)118* Getting gettext (Hex package)119* Getting jason (Hex package)120* Getting nimble_options (Hex package)121* Getting phoenix (Hex package)122* Getting phoenix_ecto (Hex package)123* Getting phoenix_html (Hex package)124* Getting phoenix_live_dashboard (Hex package)125* Getting phoenix_live_view (Hex package)126* Getting plug_cowboy (Hex package)127* Getting tailwind (Hex package)128* Getting telemetry_metrics (Hex package)129* Getting telemetry_poller (Hex package)130* Getting tz (Hex package)131* Getting tz_extra (Hex package)132* Getting telemetry (Hex package)133* Getting cowboy (Hex package)134* Getting cowboy_telemetry (Hex package)135* Getting plug (Hex package)136* Getting mime (Hex package)137* Getting plug_crypto (Hex package)138* Getting cowlib (Hex package)139* Getting ranch (Hex package)140* Getting castore (Hex package)141* Getting phoenix_pubsub (Hex package)142* Getting phoenix_view (Hex package)143* Getting phoenix_template (Hex package)144* Getting expo (Hex package)145* Getting decimal (Hex package)146* Getting ecto_sql (Hex package)147* Getting exqlite (Hex package)148* Getting cc_precompiler (Hex package)149* Getting db_connection (Hex package)150Found retired packages, see above for details151Found packages with security advisories, see above for details152You have added/upgraded packages you could sponsor, run `mix hex.sponsor` to learn more153==> nimble_options154Compiling 3 files (.ex)155Generated nimble_options app156==> nerves_compatibility_test157===> Fetching pc v1.15.0158===> Analyzing applications...159===> Compiling pc160===> Compiling c_src/ei++.cpp161===> Compiling c_src/exec.cpp162===> Compiling c_src/exec_impl.cpp163===> Linking /work/proj/_build/x86_64/lib/erlexec/priv/x86_64-nerves-linux-musl/exec-port164===> Analyzing applications...165===> Compiling erlexec166==> phoenix_html167Compiling 9 files (.ex)168 warning: comparison between distinct types found:169170 id == nil171172 given types:173174 dynamic(not false and not nil and not binary()) == nil175176 where "id" was given the types:177178 # type: dynamic(not false and not nil)179 # from: lib/phoenix_html/form_data.ex:92:8180 id = Keyword.get(opts, :id) || name181182 # type: dynamic(not false and not nil and not binary())183 # from: lib/phoenix_html/form_data.ex:94:12184 is_binary(id)185186 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 false187188 type warning found at:189 │190 94 │ unless is_binary(id) or is_nil(id) do191 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~192 │193 └─ lib/phoenix_html/form_data.ex:94: Phoenix.HTML.FormData.Atom.to_form/2194195 warning: the 1st pattern in clause will never match:196197 60198199 because it is expected to receive type:200201 dynamic(empty_list() or non_empty_list(term(), term()))202203 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())204205 type warning found at:206 │207 56 │ def to_iodata(?<), do: "<"208 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~209 │210 └─ lib/phoenix_html/safe.ex:56: Phoenix.HTML.Safe.List.to_iodata/1211212 warning: the 1st pattern in clause will never match:213214 62215216 because it is expected to receive type:217218 dynamic(empty_list() or non_empty_list(term(), term()))219220 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())221222 type warning found at:223 │224 57 │ def to_iodata(?>), do: ">"225 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~226 │227 └─ lib/phoenix_html/safe.ex:57: Phoenix.HTML.Safe.List.to_iodata/1228229 warning: the 1st pattern in clause will never match:230231 38232233 because it is expected to receive type:234235 dynamic(empty_list() or non_empty_list(term(), term()))236237 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())238239 type warning found at:240 │241 58 │ def to_iodata(?&), do: "&"242 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~243 │244 └─ lib/phoenix_html/safe.ex:58: Phoenix.HTML.Safe.List.to_iodata/1245246 warning: the 1st pattern in clause will never match:247248 34249250 because it is expected to receive type:251252 dynamic(empty_list() or non_empty_list(term(), term()))253254 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())255256 type warning found at:257 │258 59 │ def to_iodata(?"), do: """259 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~260 │261 └─ lib/phoenix_html/safe.ex:59: Phoenix.HTML.Safe.List.to_iodata/1262263 warning: the 1st pattern in clause will never match:264265 39266267 because it is expected to receive type:268269 dynamic(empty_list() or non_empty_list(term(), term()))270271 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())272273 type warning found at:274 │275 60 │ def to_iodata(?'), do: "'"276 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~277 │278 └─ lib/phoenix_html/safe.ex:60: Phoenix.HTML.Safe.List.to_iodata/1279280 warning: the 1st pattern in clause will never match:281282 {:safe, data}283284 because it is expected to receive type:285286 dynamic(empty_list() or non_empty_list(term(), term()))287288 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())289290 type warning found at:291 │292 76 │ def to_iodata({:safe, data}) do293 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~294 │295 └─ lib/phoenix_html/safe.ex:76: Phoenix.HTML.Safe.List.to_iodata/1296297 warning: the following clause is redundant:298299 def to_iodata(other)300301 it has type:302303 dynamic(empty_list() or non_empty_list(term(), term()))304305 previous clauses have already matched on the following types:306307 non_empty_list(term(), term())308 empty_list()309310 │311 80 │ def to_iodata(other) do312 │ ~313 │314 └─ lib/phoenix_html/safe.ex:80:7: Phoenix.HTML.Safe.List.to_iodata/1315316 warning: the 1st pattern in clause will never match:317318 h319320 because it is expected to receive type:321322 dynamic(empty_list() or non_empty_list(term(), term()))323324 where "h" was given the type:325326 # type: integer()327 # from: lib/phoenix_html/safe.ex:62:25328 is_integer(h)329330 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())331332 type warning found at:333 │334 62 │ def to_iodata(h) when is_integer(h) and h <= 255 do335 │ ~336 │337 └─ lib/phoenix_html/safe.ex:62:17: Phoenix.HTML.Safe.List.to_iodata/1338339 warning: the 1st pattern in clause will never match:340341 h342343 because it is expected to receive type:344345 dynamic(empty_list() or non_empty_list(term(), term()))346347 where "h" was given the type:348349 # type: integer()350 # from: lib/phoenix_html/safe.ex:66:25351 is_integer(h)352353 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())354355 type warning found at:356 │357 66 │ def to_iodata(h) when is_integer(h) do358 │ ~359 │360 └─ lib/phoenix_html/safe.ex:66:17: Phoenix.HTML.Safe.List.to_iodata/1361362 warning: the 1st pattern in clause will never match:363364 h365366 because it is expected to receive type:367368 dynamic(empty_list() or non_empty_list(term(), term()))369370 where "h" was given the type:371372 # type: binary()373 # from: lib/phoenix_html/safe.ex:72:25374 is_binary(h)375376 hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())377378 type warning found at:379 │380 72 │ def to_iodata(h) when is_binary(h) do381 │ ~382 │383 └─ lib/phoenix_html/safe.ex:72:17: Phoenix.HTML.Safe.List.to_iodata/1384385Generated phoenix_html app386warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"387 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2388 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1389 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5390 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2391 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4392 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2393394==> phoenix_ecto395Compiling 7 files (.ex)396Generated phoenix_ecto app397==> phoenix_template398Compiling 4 files (.ex)399Generated phoenix_template app400==> phoenix_view401Compiling 1 file (.ex)402 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 operator403 │404 655 │ <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix405 │ ~406 │407 └─ lib/phoenix_view.ex:655:29: Phoenix.View.unsuffix/2408409Generated phoenix_view app410==> tz411Compiling 15 files (.ex)412 warning: Application.fetch_env/2 is discouraged in the module body, use Application.compile_env/3 instead413 │414 3 │ case Application.fetch_env(:tz, :http_client) do415 │ ~416 │417 └─ lib/http/http.ex:3:22: Tz.HTTP (module)418419 warning: using single-quoted strings to represent charlists is deprecated.420 Use ~c"" if you indeed want a charlist or use "" instead.421 You may run "mix format --migrate" to change all single-quoted422 strings to use the ~c sigil and fix this warning.423 │424 55 │ 'africa',425 │ ~426 │427 └─ lib/iana_data_dir.ex:55:7428429 warning: using single-quoted strings to represent charlists is deprecated.430 Use ~c"" if you indeed want a charlist or use "" instead.431 You may run "mix format --migrate" to change all single-quoted432 strings to use the ~c sigil and fix this warning.433 │434 56 │ 'antarctica',435 │ ~436 │437 └─ lib/iana_data_dir.ex:56:7438439 warning: using single-quoted strings to represent charlists is deprecated.440 Use ~c"" if you indeed want a charlist or use "" instead.441 You may run "mix format --migrate" to change all single-quoted442 strings to use the ~c sigil and fix this warning.443 │444 57 │ 'asia',445 │ ~446 │447 └─ lib/iana_data_dir.ex:57:7448449 warning: using single-quoted strings to represent charlists is deprecated.450 Use ~c"" if you indeed want a charlist or use "" instead.451 You may run "mix format --migrate" to change all single-quoted452 strings to use the ~c sigil and fix this warning.453 │454 58 │ 'australasia',455 │ ~456 │457 └─ lib/iana_data_dir.ex:58:7458459 warning: using single-quoted strings to represent charlists is deprecated.460 Use ~c"" if you indeed want a charlist or use "" instead.461 You may run "mix format --migrate" to change all single-quoted462 strings to use the ~c sigil and fix this warning.463 │464 59 │ 'backward',465 │ ~466 │467 └─ lib/iana_data_dir.ex:59:7468469 warning: using single-quoted strings to represent charlists is deprecated.470 Use ~c"" if you indeed want a charlist or use "" instead.471 You may run "mix format --migrate" to change all single-quoted472 strings to use the ~c sigil and fix this warning.473 │474 60 │ 'etcetera',475 │ ~476 │477 └─ lib/iana_data_dir.ex:60:7478479 warning: using single-quoted strings to represent charlists is deprecated.480 Use ~c"" if you indeed want a charlist or use "" instead.481 You may run "mix format --migrate" to change all single-quoted482 strings to use the ~c sigil and fix this warning.483 │484 61 │ 'europe',485 │ ~486 │487 └─ lib/iana_data_dir.ex:61:7488489 warning: using single-quoted strings to represent charlists is deprecated.490 Use ~c"" if you indeed want a charlist or use "" instead.491 You may run "mix format --migrate" to change all single-quoted492 strings to use the ~c sigil and fix this warning.493 │494 62 │ 'northamerica',495 │ ~496 │497 └─ lib/iana_data_dir.ex:62:7498499 warning: using single-quoted strings to represent charlists is deprecated.500 Use ~c"" if you indeed want a charlist or use "" instead.501 You may run "mix format --migrate" to change all single-quoted502 strings to use the ~c sigil and fix this warning.503 │504 63 │ 'southamerica',505 │ ~506 │507 └─ lib/iana_data_dir.ex:63:7508509 warning: using single-quoted strings to represent charlists is deprecated.510 Use ~c"" if you indeed want a charlist or use "" instead.511 You may run "mix format --migrate" to change all single-quoted512 strings to use the ~c sigil and fix this warning.513 │514 64 │ 'iso3166.tab',515 │ ~516 │517 └─ lib/iana_data_dir.ex:64:7518519 warning: using single-quoted strings to represent charlists is deprecated.520 Use ~c"" if you indeed want a charlist or use "" instead.521 You may run "mix format --migrate" to change all single-quoted522 strings to use the ~c sigil and fix this warning.523 │524 65 │ 'zone1970.tab'525 │ ~526 │527 └─ lib/iana_data_dir.ex:65:7528529 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead530 │531 3 │ @custom_data_dir Application.get_env(:tz, :data_dir)532 │ ~533 │534 └─ lib/iana_data_dir.ex:3:32: Tz.IanaDataDir (module)535536 warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead537 │538 5 │ @build_periods_with_ongoing_dst_changes_until_year Application.get_env(:tz, :build_time_zone_periods_with_ongoing_dst_changes_until_year, 5 + NaiveDateTime.utc_now().year)539 │ ~540 │541 └─ lib/iana_file_parser.ex:5:66: Tz.IanaFileParser (module)542543 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead544 │545 11 │ @reject_periods_before_year Application.get_env(:tz, :reject_time_zone_periods_before_year)546 │ ~547 │548 └─ lib/compiler.ex:11:43: Tz.Compiler (module)549550 warning: unused require Tz.IanaFileParser551 │552 4 │ require Tz.IanaFileParser553 │ ~554 │555 └─ lib/compiler.ex:4:3556557 warning: unused require Tz.PeriodsBuilder558 │559 5 │ require Tz.PeriodsBuilder560 │ ~561 │562 └─ lib/compiler.ex:5:3563564 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead565 │566 15 │ Logger.warn("Tz found a more recent time zone database available for download at #{link}")567 │ ~568 │569 └─ lib/watch_periodically.ex:15:18: Tz.WatchPeriodically.watch/0570571 warning: nil.request/2 is undefined (module nil is not available or is yet to be defined)572 │573 27 │ case HTTP.get_http_client!().request("data.iana.org", "/time-zones/tzdb/version") do574 │ ~575 │576 └─ lib/updater.ex:27:34: Tz.Updater.fetch_iana_tz_version/0577 └─ lib/updater.ex:75:34: Tz.Updater.download_tz_database/1578579 warning: this clause of defp reject_periods_before_year/2 is never used (or it will always fail/warn when invoked)580 │581 65 │ defp reject_periods_before_year(periods, reject_before_year) do582 │ ~583 │584 └─ lib/compiler.ex:65:8: Tz.Compiler.reject_periods_before_year/2585586 warning: this clause of defp add_to_and_convert_date_tuple/4 is never used (or it will always fail/warn when invoked)587 │588 250 │ defp add_to_and_convert_date_tuple(:min, _, _, _), do: :min589 │ ~590 │591 └─ lib/periods_builder.ex:250:8: Tz.PeriodsBuilder.add_to_and_convert_date_tuple/4592593 warning: this clause of defp add_to_and_convert_date_tuple/4 is never used (or it will always fail/warn when invoked)594 │595 251 │ defp add_to_and_convert_date_tuple(:max, _, _, _), do: :max596 │ ~597 │598 └─ lib/periods_builder.ex:251:8: Tz.PeriodsBuilder.add_to_and_convert_date_tuple/4599600Generated tz app601==> tz_extra602Compiling 7 files (.ex)603 warning: unused require TzExtra.IanaFileParser604 │605 4 │ require TzExtra.IanaFileParser606 │ ~607 │608 └─ lib/compiler.ex:4:3609610 warning: unused require TzExtra.Compiler611 │612 3 │ require TzExtra.Compiler613 │ ~614 │615 └─ lib/changeset.ex:3:5616617Generated tz_extra app618==> ecto_sqlite3619Compiling 4 files (.ex)620 warning: using single-quoted strings to represent charlists is deprecated.621 Use ~c"" if you indeed want a charlist or use "" instead.622 You may run "mix format --migrate" to change all single-quoted623 strings to use the ~c sigil and fix this warning.624 │625 778 │ {['?'], counter + 1}626 │ ~627 │628 └─ lib/ecto/adapters/sqlite3/connection.ex:778:11629630 warning: using single-quoted strings to represent charlists is deprecated.631 Use ~c"" if you indeed want a charlist or use "" instead.632 You may run "mix format --migrate" to change all single-quoted633 strings to use the ~c sigil and fix this warning.634 │635 1177 │ '?'636 │ ~637 │638 └─ lib/ecto/adapters/sqlite3/connection.ex:1177:5639640 warning: function dump_cmd/3 required by behaviour Ecto.Adapter.Structure is not implemented (in module Ecto.Adapters.SQLite3)641 │642 1 │ defmodule Ecto.Adapters.SQLite3 do643 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~644 │645 └─ lib/ecto/adapters/sqlite3.ex:1: Ecto.Adapters.SQLite3 (module)646647 warning: function query_many/4 required by behaviour Ecto.Adapters.SQL.Connection is not implemented (in module Ecto.Adapters.SQLite3.Connection)648 │649 1 │ defmodule Ecto.Adapters.SQLite3.Connection do650 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~651 │652 └─ lib/ecto/adapters/sqlite3/connection.ex:1: Ecto.Adapters.SQLite3.Connection (module)653654 warning: the following clause is redundant:655656 def execute_ddl({:create, %Ecto.Migration.Index{} = index})657658 it has type:659660 dynamic({:create, %Ecto.Migration.Index{}})661662 previous clauses have already matched on the following types:663664 {:create, %Ecto.Migration.Table{}, term()}665 {:create_if_not_exists, %Ecto.Migration.Table{}, term()}666 {:drop, %Ecto.Migration.Table{}}667 {:drop, %Ecto.Migration.Table{}, term()}668 {:drop_if_exists, %Ecto.Migration.Table{}}669 {:drop_if_exists, %Ecto.Migration.Table{}, term()}670 {:alter, %Ecto.Migration.Table{}, term()}671 {:create, %Ecto.Migration.Index{}}672 {:create_if_not_exists, %Ecto.Migration.Index{}}673 {:drop, %Ecto.Migration.Index{}}674 {:drop, %Ecto.Migration.Index{}, term()}675 {:drop_if_exists, %Ecto.Migration.Index{}}676 {:drop_if_exists, %Ecto.Migration.Index{}, term()}677 {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}678 {:rename, %Ecto.Migration.Table{}, term(), term()}679680 │681 560 │ def execute_ddl({:create, %Index{} = index}) do682 │ ~683 │684 └─ lib/ecto/adapters/sqlite3/connection.ex:560:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1685686 warning: the following clause is redundant:687688 def execute_ddl({:create_if_not_exists, %Ecto.Migration.Index{} = index})689690 it has type:691692 dynamic({:create_if_not_exists, %Ecto.Migration.Index{}})693694 previous clauses have already matched on the following types:695696 {:create, %Ecto.Migration.Table{}, term()}697 {:create_if_not_exists, %Ecto.Migration.Table{}, term()}698 {:drop, %Ecto.Migration.Table{}}699 {:drop, %Ecto.Migration.Table{}, term()}700 {:drop_if_exists, %Ecto.Migration.Table{}}701 {:drop_if_exists, %Ecto.Migration.Table{}, term()}702 {:alter, %Ecto.Migration.Table{}, term()}703 {:create, %Ecto.Migration.Index{}}704 {:create_if_not_exists, %Ecto.Migration.Index{}}705 {:drop, %Ecto.Migration.Index{}}706 {:drop, %Ecto.Migration.Index{}, term()}707 {:drop_if_exists, %Ecto.Migration.Index{}}708 {:drop_if_exists, %Ecto.Migration.Index{}, term()}709 {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}710 {:rename, %Ecto.Migration.Table{}, term(), term()}711712 │713 582 │ def execute_ddl({:create_if_not_exists, %Index{} = index}) do714 │ ~715 │716 └─ lib/ecto/adapters/sqlite3/connection.ex:582:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1717718 warning: the following clause is redundant:719720 def execute_ddl({:drop, %Ecto.Migration.Index{} = index})721722 it has type:723724 dynamic({:drop, %Ecto.Migration.Index{}})725726 previous clauses have already matched on the following types:727728 {:create, %Ecto.Migration.Table{}, term()}729 {:create_if_not_exists, %Ecto.Migration.Table{}, term()}730 {:drop, %Ecto.Migration.Table{}}731 {:drop, %Ecto.Migration.Table{}, term()}732 {:drop_if_exists, %Ecto.Migration.Table{}}733 {:drop_if_exists, %Ecto.Migration.Table{}, term()}734 {:alter, %Ecto.Migration.Table{}, term()}735 {:create, %Ecto.Migration.Index{}}736 {:create_if_not_exists, %Ecto.Migration.Index{}}737 {:drop, %Ecto.Migration.Index{}}738 {:drop, %Ecto.Migration.Index{}, term()}739 {:drop_if_exists, %Ecto.Migration.Index{}}740 {:drop_if_exists, %Ecto.Migration.Index{}, term()}741 {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}742 {:rename, %Ecto.Migration.Table{}, term(), term()}743 {:create, %Ecto.Migration.Constraint{}}744745 │746 609 │ def execute_ddl({:drop, %Index{} = index}) do747 │ ~748 │749 └─ lib/ecto/adapters/sqlite3/connection.ex:609:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1750751 warning: the following clause is redundant:752753 def execute_ddl({:drop, %Ecto.Migration.Index{} = index, _mode})754755 it has type:756757 dynamic({:drop, %Ecto.Migration.Index{}, term()})758759 previous clauses have already matched on the following types:760761 {:create, %Ecto.Migration.Table{}, term()}762 {:create_if_not_exists, %Ecto.Migration.Table{}, term()}763 {:drop, %Ecto.Migration.Table{}}764 {:drop, %Ecto.Migration.Table{}, term()}765 {:drop_if_exists, %Ecto.Migration.Table{}}766 {:drop_if_exists, %Ecto.Migration.Table{}, term()}767 {:alter, %Ecto.Migration.Table{}, term()}768 {:create, %Ecto.Migration.Index{}}769 {:create_if_not_exists, %Ecto.Migration.Index{}}770 {:drop, %Ecto.Migration.Index{}}771 {:drop, %Ecto.Migration.Index{}, term()}772 {:drop_if_exists, %Ecto.Migration.Index{}}773 {:drop_if_exists, %Ecto.Migration.Index{}, term()}774 {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}775 {:rename, %Ecto.Migration.Table{}, term(), term()}776 {:create, %Ecto.Migration.Constraint{}}777778 │779 619 │ def execute_ddl({:drop, %Index{} = index, _mode}) do780 │ ~781 │782 └─ lib/ecto/adapters/sqlite3/connection.ex:619:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1783784 warning: the following clause is redundant:785786 def execute_ddl({:drop_if_exists, %Ecto.Migration.Index{} = index})787788 it has type:789790 dynamic({:drop_if_exists, %Ecto.Migration.Index{}})791792 previous clauses have already matched on the following types:793794 {:create, %Ecto.Migration.Table{}, term()}795 {:create_if_not_exists, %Ecto.Migration.Table{}, term()}796 {:drop, %Ecto.Migration.Table{}}797 {:drop, %Ecto.Migration.Table{}, term()}798 {:drop_if_exists, %Ecto.Migration.Table{}}799 {:drop_if_exists, %Ecto.Migration.Table{}, term()}800 {:alter, %Ecto.Migration.Table{}, term()}801 {:create, %Ecto.Migration.Index{}}802 {:create_if_not_exists, %Ecto.Migration.Index{}}803 {:drop, %Ecto.Migration.Index{}}804 {:drop, %Ecto.Migration.Index{}, term()}805 {:drop_if_exists, %Ecto.Migration.Index{}}806 {:drop_if_exists, %Ecto.Migration.Index{}, term()}807 {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}808 {:rename, %Ecto.Migration.Table{}, term(), term()}809 {:create, %Ecto.Migration.Constraint{}}810811 │812 624 │ def execute_ddl({:drop_if_exists, %Index{} = index}) do813 │ ~814 │815 └─ lib/ecto/adapters/sqlite3/connection.ex:624:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1816817 warning: the following clause is redundant:818819 def execute_ddl({:drop_if_exists, %Ecto.Migration.Index{} = index, _mode})820821 it has type:822823 dynamic({:drop_if_exists, %Ecto.Migration.Index{}, term()})824825 previous clauses have already matched on the following types:826827 {:create, %Ecto.Migration.Table{}, term()}828 {:create_if_not_exists, %Ecto.Migration.Table{}, term()}829 {:drop, %Ecto.Migration.Table{}}830 {:drop, %Ecto.Migration.Table{}, term()}831 {:drop_if_exists, %Ecto.Migration.Table{}}832 {:drop_if_exists, %Ecto.Migration.Table{}, term()}833 {:alter, %Ecto.Migration.Table{}, term()}834 {:create, %Ecto.Migration.Index{}}835 {:create_if_not_exists, %Ecto.Migration.Index{}}836 {:drop, %Ecto.Migration.Index{}}837 {:drop, %Ecto.Migration.Index{}, term()}838 {:drop_if_exists, %Ecto.Migration.Index{}}839 {:drop_if_exists, %Ecto.Migration.Index{}, term()}840 {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}841 {:rename, %Ecto.Migration.Table{}, term(), term()}842 {:create, %Ecto.Migration.Constraint{}}843844 │845 634 │ def execute_ddl({:drop_if_exists, %Index{} = index, _mode}) do846 │ ~847 │848 └─ lib/ecto/adapters/sqlite3/connection.ex:634:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1849850 warning: the following clause is redundant:851852 def execute_ddl(853 {:rename, %Ecto.Migration.Table{} = current_table, %Ecto.Migration.Table{} = new_table}854 )855856 it has type:857858 dynamic({:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}})859860 previous clauses have already matched on the following types:861862 {:create, %Ecto.Migration.Table{}, term()}863 {:create_if_not_exists, %Ecto.Migration.Table{}, term()}864 {:drop, %Ecto.Migration.Table{}}865 {:drop, %Ecto.Migration.Table{}, term()}866 {:drop_if_exists, %Ecto.Migration.Table{}}867 {:drop_if_exists, %Ecto.Migration.Table{}, term()}868 {:alter, %Ecto.Migration.Table{}, term()}869 {:create, %Ecto.Migration.Index{}}870 {:create_if_not_exists, %Ecto.Migration.Index{}}871 {:drop, %Ecto.Migration.Index{}}872 {:drop, %Ecto.Migration.Index{}, term()}873 {:drop_if_exists, %Ecto.Migration.Index{}}874 {:drop_if_exists, %Ecto.Migration.Index{}, term()}875 {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}876 {:rename, %Ecto.Migration.Table{}, term(), term()}877 {:create, %Ecto.Migration.Constraint{}}878 {:drop, %Ecto.Migration.Constraint{}, term()}879 {:drop_if_exists, %Ecto.Migration.Constraint{}, term()}880881 │882 649 │ def execute_ddl({:rename, %Table{} = current_table, %Table{} = new_table}) do883 │ ~884 │885 └─ lib/ecto/adapters/sqlite3/connection.ex:649:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1886887 warning: the following clause is redundant:888889 def execute_ddl({:rename, %Ecto.Migration.Table{} = table, current_column, new_column})890891 it has type:892893 dynamic({:rename, %Ecto.Migration.Table{}, term(), term()})894895 previous clauses have already matched on the following types:896897 {:create, %Ecto.Migration.Table{}, term()}898 {:create_if_not_exists, %Ecto.Migration.Table{}, term()}899 {:drop, %Ecto.Migration.Table{}}900 {:drop, %Ecto.Migration.Table{}, term()}901 {:drop_if_exists, %Ecto.Migration.Table{}}902 {:drop_if_exists, %Ecto.Migration.Table{}, term()}903 {:alter, %Ecto.Migration.Table{}, term()}904 {:create, %Ecto.Migration.Index{}}905 {:create_if_not_exists, %Ecto.Migration.Index{}}906 {:drop, %Ecto.Migration.Index{}}907 {:drop, %Ecto.Migration.Index{}, term()}908 {:drop_if_exists, %Ecto.Migration.Index{}}909 {:drop_if_exists, %Ecto.Migration.Index{}, term()}910 {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}911 {:rename, %Ecto.Migration.Table{}, term(), term()}912 {:create, %Ecto.Migration.Constraint{}}913 {:drop, %Ecto.Migration.Constraint{}, term()}914 {:drop_if_exists, %Ecto.Migration.Constraint{}, term()}915916 │917 661 │ def execute_ddl({:rename, %Table{} = table, current_column, new_column}) do918 │ ~919 │920 └─ lib/ecto/adapters/sqlite3/connection.ex:661:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1921922Generated ecto_sqlite3 app923warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"924 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2925 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1926 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5927 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2928 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4929 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2930931==> phoenix932Compiling 69 files (.ex)933 warning: using single-quoted strings to represent charlists is deprecated.934 Use ~c"" if you indeed want a charlist or use "" instead.935 You may run "mix format --migrate" to change all single-quoted936 strings to use the ~c sigil and fix this warning.937 │938 258 │ notBefore: {:utcTime, '#{not_before}000000Z'},939 │ ~940 │941 └─ lib/mix/tasks/phx.gen.cert.ex:258:33942943 warning: using single-quoted strings to represent charlists is deprecated.944 Use ~c"" if you indeed want a charlist or use "" instead.945 You may run "mix format --migrate" to change all single-quoted946 strings to use the ~c sigil and fix this warning.947 │948 259 │ notAfter: {:utcTime, '#{not_after}000000Z'}949 │ ~950 │951 └─ lib/mix/tasks/phx.gen.cert.ex:259:32952953 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead954 │955 50 │ Logger.warn(956 │ ~957 │958 └─ lib/phoenix/code_reloader/server.ex:50:20: Phoenix.CodeReloader.Server.handle_call/3959960 warning: unused require Logger961 │962 9 │ require Logger963 │ ~964 │965 └─ lib/phoenix/config.ex:9:3966967 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.968969 This error happens when you have function calls without parentheses inside keywords. For example:970971 function(arg, one: nested_call a, b, c)972 function(arg, one: if expr, do: :this, else: :that)973974 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:975976 function(arg, one: if(expr, do: :this, else: :that))977 function(arg, one: nested_call(a, b, c))978979 Ambiguity found at:980 │981 998 │ defp get_disposition_type(other), do: raise ArgumentError, "expected :disposition to be :attachment or :inline, got: #{inspect(other)}"982 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~983 │984 └─ lib/phoenix/controller.ex:998985986 warning: unused require Logger987 │988 259 │ require Logger989 │ ~990 │991 └─ lib/phoenix/endpoint.ex:259:3992993 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead994 │995 1009 │ Logger.warn "send_download/3 has been invoked during an AJAX request. " <>996 │ ~997 │998 └─ lib/phoenix/controller.ex:1009:14: Phoenix.Controller.warn_if_ajax/19991000 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1001 │1002 34 │ Logger.warn("no configuration found for otp_app #{inspect(otp_app)} and module #{inspect(mod)}")1003 │ ~1004 │1005 └─ lib/phoenix/endpoint/supervisor.ex:34:20: Phoenix.Endpoint.Supervisor.init/110061007 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1008 │1009 57 │ Logger.warn(":instrumenters configuration for #{inspect(mod)} is deprecated and has no effect")1010 │ ~1011 │1012 └─ lib/phoenix/endpoint/supervisor.ex:57:14: Phoenix.Endpoint.Supervisor.init/110131014 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1015 │1016 78 │ Logger.warn """1017 │ ~1018 │1019 └─ lib/phoenix/endpoint/supervisor.ex:78:14: Phoenix.Endpoint.Supervisor.pubsub_children/210201021 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1022 │1023 264 │ Logger.warn("url: [host: ...] configuration value #{inspect(host)} for #{inspect(endpoint)} is invalid")1024 │ ~1025 │1026 └─ lib/phoenix/endpoint/supervisor.ex:264:14: Phoenix.Endpoint.Supervisor.build_url/210271028 warning: unused require Phoenix.Endpoint1029 │1030 6 │ require Phoenix.Endpoint1031 │ ~1032 │1033 └─ lib/phoenix/controller.ex:6:310341035 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 operator1036 │1037 46 │ <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix1038 │ ~1039 │1040 └─ lib/phoenix/naming.ex:46:29: Phoenix.Naming.unsuffix/210411042 warning: unused require Phoenix.Endpoint1043 │1044 19 │ require Phoenix.Endpoint1045 │ ~1046 │1047 └─ lib/phoenix/endpoint/render_errors.ex:19:310481049 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.10501051 This error happens when you have function calls without parentheses inside keywords. For example:10521053 function(arg, one: nested_call a, b, c)1054 function(arg, one: if expr, do: :this, else: :that)10551056 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:10571058 function(arg, one: if(expr, do: :this, else: :that))1059 function(arg, one: nested_call(a, b, c))10601061 Ambiguity found at:1062 │1063 71 │ unless actions -- supported_actions == [], do: raise ArgumentError, """1064 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1065 │1066 └─ lib/phoenix/router/resource.ex:7110671068 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1069 │1070 653 │ Logger.warn fn -> "Ignoring unmatched topic \"#{topic}\" in #{inspect(socket.handler)}" end1071 │ ~1072 │1073 └─ lib/phoenix/socket.ex:653:16: Phoenix.Socket.handle_in/410741075 warning: unused require Phoenix.Endpoint1076 │1077 6 │ require Phoenix.Endpoint1078 │ ~1079 │1080 └─ lib/phoenix/channel/server.ex:6:310811082 warning: unused require Phoenix.Endpoint1083 │1084 192 │ require Phoenix.Endpoint1085 │ ~1086 │1087 └─ lib/phoenix/socket.ex:192:310881089 warning: unused require Logger1090 │1091 93 │ require Logger1092 │ ~1093 │1094 └─ lib/phoenix/token.ex:93:310951096 warning: comparison between distinct types found:10971098 merge_all != []10991100 given types:11011102 dynamic(non_empty_list({atom(), term()})) != empty_list()11031104 where "merge_all" was given the type:11051106 # type: dynamic(non_empty_list({atom(), term()}))1107 # from: lib/phoenix/router/route.ex:111:151108 merge_all = merge_params ++ merge_private ++ merge_assigns11091110 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 false11111112 type warning found at:1113 │1114 113 │ if merge_all != [] do1115 │ ~1116 │1117 └─ lib/phoenix/router/route.ex:113:18: Phoenix.Router.Route.build_prepare/111181119 warning: a struct for Plug.Conn is expected on struct update:11201121 %Plug.Conn{conn | state: :sent}11221123 but got type:11241125 dynamic()11261127 where "conn" was given the type:11281129 # type: dynamic()1130 # from: lib/phoenix/endpoint/render_errors.ex:57:171131 conn11321133 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"11341135 type warning found at:1136 │1137 61 │ %Plug.Conn{conn | state: :sent}1138 │ ~1139 │1140 └─ lib/phoenix/endpoint/render_errors.ex:61:9: Phoenix.Endpoint.RenderErrors.__catch__/511411142 warning: a struct for Plug.Conn is expected on struct update:11431144 %Plug.Conn{conn | query_params: %{}, params: %{}}11451146 but got type:11471148 dynamic(%{..., params: %Plug.Conn.Unfetched{}})11491150 where "conn" was given the types:11511152 # type: dynamic(%{..., params: term()})1153 # from: lib/phoenix/endpoint/render_errors.ex:124:171154 conn.params11551156 # type: dynamic(%{..., params: %Plug.Conn.Unfetched{}})1157 # from: lib/phoenix/endpoint/render_errors.ex:124:171158 conn.params11591160 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"11611162 type warning found at:1163 │1164 125 │ %Plug.Conn.Unfetched{} -> %Plug.Conn{conn | query_params: %{}, params: %{}}1165 │ ~1166 │1167 └─ lib/phoenix/endpoint/render_errors.ex:125:35: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/111681169 warning: a struct for Plug.Conn is expected on struct update:11701171 %Plug.Conn{conn | query_params: %{}, params: params}11721173 but got type:11741175 dynamic(%{..., params: not %Plug.Conn.Unfetched{}})11761177 where "conn" was given the types:11781179 # type: dynamic(%{..., params: term()})1180 # from: lib/phoenix/endpoint/render_errors.ex:124:171181 conn.params11821183 # type: dynamic(%{..., params: not %Plug.Conn.Unfetched{}})1184 # from: lib/phoenix/endpoint/render_errors.ex:124:171185 conn.params11861187 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"11881189 type warning found at:1190 │1191 126 │ params -> %Plug.Conn{conn | query_params: %{}, params: params}1192 │ ~1193 │1194 └─ lib/phoenix/endpoint/render_errors.ex:126:19: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/111951196 warning: a struct for Plug.Conn is expected on struct update:11971198 %Plug.Conn{conn | params: params}11991200 but got type:12011202 dynamic(%{..., params: map()})12031204 where "conn" was given the type:12051206 # type: dynamic(%{..., params: map()})1207 # from: lib/phoenix/controller.ex:1036:171208 Map.get(conn.params, required_key)12091210 when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"12111212 type warning found at:1213 │1214 1043 │ %Plug.Conn{conn | params: params}1215 │ ~1216 │1217 └─ lib/phoenix/controller.ex:1043:5: Phoenix.Controller.scrub_params/212181219 warning: incompatible types given to socket_children/1:12201221 socket_children(mod)12221223 given types:12241225 -dynamic(atom())-12261227 but expected one of:12281229 %{..., __sockets__: term()}12301231 where "mod" was given the types:12321233 # type: dynamic(atom() or binary())1234 # from: lib/phoenix/endpoint/supervisor.ex:27:411235 defaults(otp_app, mod)12361237 # type: dynamic(atom())1238 # from: lib/phoenix/endpoint/supervisor.ex:31:161239 mod.init(:supervisor, env_conf)12401241 type warning found at:1242 │1243 67 │ socket_children(mod) ++1244 │ ~1245 │1246 └─ lib/phoenix/endpoint/supervisor.ex:67:7: Phoenix.Endpoint.Supervisor.init/112471248 warning: expected a module (an atom) when invoking compress_file/2 in expression:12491250 compressor.compress_file(file.digested_filename, file.digested_content)12511252 where "compressor" was given the type:12531254 # type: dynamic(%{..., file_extensions: non_empty_list(term(), term())})1255 # from: lib/phoenix/digester.ex:167:281256 [file_extension | _] = compressor.file_extensions12571258 where "file" was given the type:12591260 # type: dynamic(%{..., relative_path: term()})1261 # from: lib/phoenix/digester.ex:161:171262 Path.join(output_path, file.relative_path)12631264 type warning found at:1265 │1266 170 │ compressor.compress_file(file.digested_filename, file.digested_content) do1267 │ ~1268 │1269 └─ lib/phoenix/digester.ex:170:25: Phoenix.Digester.write_to_disk/212701271Generated phoenix app1272warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1273 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21274 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11275 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51276 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21277 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41278 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/212791280==> phoenix_live_view1281Compiling 31 files (.ex)1282 warning: using single-quoted strings to represent charlists is deprecated.1283 Use ~c"" if you indeed want a charlist or use "" instead.1284 You may run "mix format --migrate" to change all single-quoted1285 strings to use the ~c sigil and fix this warning.1286 │1287 319 │ {'LiveView', view},1288 │ ~1289 │1290 └─ lib/phoenix_live_view/channel.ex:319:1012911292 warning: using single-quoted strings to represent charlists is deprecated.1293 Use ~c"" if you indeed want a charlist or use "" instead.1294 You may run "mix format --migrate" to change all single-quoted1295 strings to use the ~c sigil and fix this warning.1296 │1297 320 │ {'Parent pid', parent_pid},1298 │ ~1299 │1300 └─ lib/phoenix_live_view/channel.ex:320:1013011302 warning: using single-quoted strings to represent charlists is deprecated.1303 Use ~c"" if you indeed want a charlist or use "" instead.1304 You may run "mix format --migrate" to change all single-quoted1305 strings to use the ~c sigil and fix this warning.1306 │1307 321 │ {'Transport pid', transport_pid},1308 │ ~1309 │1310 └─ lib/phoenix_live_view/channel.ex:321:1013111312 warning: using single-quoted strings to represent charlists is deprecated.1313 Use ~c"" if you indeed want a charlist or use "" instead.1314 You may run "mix format --migrate" to change all single-quoted1315 strings to use the ~c sigil and fix this warning.1316 │1317 322 │ {'Topic', topic},1318 │ ~1319 │1320 └─ lib/phoenix_live_view/channel.ex:322:1013211322 warning: using single-quoted strings to represent charlists is deprecated.1323 Use ~c"" if you indeed want a charlist or use "" instead.1324 You may run "mix format --migrate" to change all single-quoted1325 strings to use the ~c sigil and fix this warning.1326 │1327 323 │ {'Components count', map_size(cid_to_component)}1328 │ ~1329 │1330 └─ lib/phoenix_live_view/channel.ex:323:1013311332 warning: using single-quoted strings to represent charlists is deprecated.1333 Use ~c"" if you indeed want a charlist or use "" instead.1334 You may run "mix format --migrate" to change all single-quoted1335 strings to use the ~c sigil and fix this warning.1336 │1337 329 │ [data: [{'State', state}]]1338 │ ~1339 │1340 └─ lib/phoenix_live_view/channel.ex:329:1413411342 warning: using single-quoted strings to represent charlists is deprecated.1343 Use ~c"" if you indeed want a charlist or use "" instead.1344 You may run "mix format --migrate" to change all single-quoted1345 strings to use the ~c sigil and fix this warning.1346 │1347 112 │ @codepoints '\s\n\r\t'1348 │ ~1349 │1350 └─ lib/phoenix_live_view/html_algebra.ex:112:1513511352 warning: using single-quoted strings to represent charlists is deprecated.1353 Use ~c"" if you indeed want a charlist or use "" instead.1354 You may run "mix format --migrate" to change all single-quoted1355 strings to use the ~c sigil and fix this warning.1356 │1357 125 │ do: :binary.first(text) in '\n\r'1358 │ ~1359 │1360 └─ lib/phoenix_live_view/html_algebra.ex:125:3213611362 warning: using single-quoted strings to represent charlists is deprecated.1363 Use ~c"" if you indeed want a charlist or use "" instead.1364 You may run "mix format --migrate" to change all single-quoted1365 strings to use the ~c sigil and fix this warning.1366 │1367 130 │ do: :binary.last(text) in '\n\r'1368 │ ~1369 │1370 └─ lib/phoenix_live_view/html_algebra.ex:130:3113711372 warning: using single-quoted strings to represent charlists is deprecated.1373 Use ~c"" if you indeed want a charlist or use "" instead.1374 You may run "mix format --migrate" to change all single-quoted1375 strings to use the ~c sigil and fix this warning.1376 │1377 503 │ defp count_newlines_until_text(<<char, rest::binary>>, counter) when char in '\s\t\r',1378 │ ~1379 │1380 └─ lib/phoenix_live_view/html_formatter.ex:503:8013811382 warning: using single-quoted strings to represent charlists is deprecated.1383 Use ~c"" if you indeed want a charlist or use "" instead.1384 You may run "mix format --migrate" to change all single-quoted1385 strings to use the ~c sigil and fix this warning.1386 │1387 536 │ do: if(String.trim_leading(text) == "", do: false, else: !(:binary.last(text) in '\s\t'))1388 │ ~1389 │1390 └─ lib/phoenix_live_view/html_formatter.ex:536:8613911392 warning: using single-quoted strings to represent charlists is deprecated.1393 Use ~c"" if you indeed want a charlist or use "" instead.1394 You may run "mix format --migrate" to change all single-quoted1395 strings to use the ~c sigil and fix this warning.1396 │1397 546 │ if String.trim_leading(text) != "" and :binary.first(text) not in '\s\t\n\r' do1398 │ ~1399 │1400 └─ lib/phoenix_live_view/html_formatter.ex:546:7314011402 warning: using single-quoted strings to represent charlists is deprecated.1403 Use ~c"" if you indeed want a charlist or use "" instead.1404 You may run "mix format --migrate" to change all single-quoted1405 strings to use the ~c sigil and fix this warning.1406 │1407 3 │ @space_chars '\s\t\f'1408 │ ~1409 │1410 └─ lib/phoenix_live_view/html_tokenizer.ex:3:1614111412 warning: using single-quoted strings to represent charlists is deprecated.1413 Use ~c"" if you indeed want a charlist or use "" instead.1414 You may run "mix format --migrate" to change all single-quoted1415 strings to use the ~c sigil and fix this warning.1416 │1417 4 │ @quote_chars '"\''1418 │ ~1419 │1420 └─ lib/phoenix_live_view/html_tokenizer.ex:4:1614211422 warning: using single-quoted strings to represent charlists is deprecated.1423 Use ~c"" if you indeed want a charlist or use "" instead.1424 You may run "mix format --migrate" to change all single-quoted1425 strings to use the ~c sigil and fix this warning.1426 │1427 5 │ @stop_chars '>/=\r\n' ++ @quote_chars ++ @space_chars1428 │ ~1429 │1430 └─ lib/phoenix_live_view/html_tokenizer.ex:5:1514311432 warning: unused require Logger1433 │1434 25 │ require Logger1435 │ ~1436 │1437 └─ lib/phoenix_live_view/socket.ex:25:314381439 warning: unused require Phoenix.ChannelTest1440 │1441 179 │ require Phoenix.ChannelTest1442 │ ~1443 │1444 └─ lib/phoenix_live_view/test/live_view_test.ex:179:314451446 warning: unused require Phoenix.ConnTest1447 │1448 178 │ require Phoenix.ConnTest1449 │ ~1450 │1451 └─ lib/phoenix_live_view/test/live_view_test.ex:178:314521453 warning: unused require Phoenix.ChannelTest1454 │1455 4 │ require Phoenix.ChannelTest1456 │ ~1457 │1458 └─ lib/phoenix_live_view/test/upload_client.ex:4:314591460 warning: unused require Logger1461 │1462 6 │ require Logger1463 │ ~1464 │1465 └─ lib/phoenix_live_view/upload_channel.ex:6:314661467 warning: a struct for Phoenix.LiveView.Socket is expected on struct update:14681469 %Phoenix.LiveView.Socket{1470 socket1471 | private: Map.put(socket.private, :phoenix_live_layout, {mod, template})1472 }14731474 but got type:14751476 dynamic()14771478 where "socket" was given the type:14791480 # type: dynamic()1481 # from: lib/phoenix_live_view/utils.ex:459:211482 socket14831484 when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"14851486 type warning found at:1487 │1488 460 │ %Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, {mod, template})}1489 │ ~1490 │1491 └─ lib/phoenix_live_view/utils.ex:460:5: Phoenix.LiveView.Utils.do_mount_opt/314921493 warning: a struct for Phoenix.LiveView.Socket is expected on struct update:14941495 %Phoenix.LiveView.Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, false)}14961497 but got type:14981499 dynamic()15001501 where "socket" was given the type:15021503 # type: dynamic()1504 # from: lib/phoenix_live_view/utils.ex:463:211505 socket15061507 when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"15081509 type warning found at:1510 │1511 464 │ %Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, false)}1512 │ ~1513 │1514 └─ lib/phoenix_live_view/utils.ex:464:5: Phoenix.LiveView.Utils.do_mount_opt/315151516 warning: a struct for Phoenix.LiveView.Socket is expected on struct update:15171518 %Phoenix.LiveView.Socket{1519 socket1520 | assigns: Map.merge(temp_assigns, socket.assigns),1521 private: Map.put(socket.private, :temporary_assigns, temp_assigns)1522 }15231524 but got type:15251526 dynamic()15271528 where "socket" was given the type:15291530 # type: dynamic()1531 # from: lib/phoenix_live_view/utils.ex:473:211532 socket15331534 when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"15351536 type warning found at:1537 │1538 480 │ %Socket{1539 │ ~1540 │1541 └─ lib/phoenix_live_view/utils.ex:480:5: Phoenix.LiveView.Utils.do_mount_opt/315421543 warning: a struct for Phoenix.LiveView.Socket is expected on struct update:15441545 %Phoenix.LiveView.Socket{1546 socket1547 | assigns: %Phoenix.LiveView.Socket.AssignsNotInSocket{__assigns__: assigns}1548 }15491550 but got type:15511552 dynamic(%{..., assigns: term()})15531554 where "socket" was given the type:15551556 # type: dynamic(%{..., assigns: term()})1557 # from: lib/phoenix_live_view/utils.ex:491:431558 %{assigns: assigns} = socket15591560 when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"15611562 type warning found at:1563 │1564 492 │ socket = %Socket{socket | assigns: %Socket.AssignsNotInSocket{__assigns__: assigns}}1565 │ ~1566 │1567 └─ lib/phoenix_live_view/utils.ex:492:14: Phoenix.LiveView.Utils.render_assigns/115681569 warning: a struct for Phoenix.HTML.Form is expected on struct update:15701571 %Phoenix.HTML.Form{Phoenix.HTML.FormData.to_form(form_for, form_options) | action: action || "#"}15721573 but got type:15741575 dynamic()15761577 where "form_for" was given the type:15781579 # type: dynamic(not false and not nil)1580 # from: lib/phoenix_live_view/helpers.ex:1101:141581 form_for = assigns[:for] || :erlang.error(ArgumentError.exception("missing :for assign to form"))15821583 where "form_options" was given the type:15841585 # type: dynamic(list({term(), term()}))1586 # from: lib/phoenix_live_view/helpers.ex:1102:181587 form_options = assigns_to_attributes(assigns, [:action, :for])15881589 you must assign "Phoenix.HTML.FormData.to_form(form_for, form_options)" to variable and pattern match on "%Phoenix.HTML.Form{}"15901591 type warning found at:1592 │1593 1106 │ form = %Phoenix.HTML.Form{1594 │ ~1595 │1596 └─ lib/phoenix_live_view/helpers.ex:1106:14: Phoenix.LiveView.Helpers.form/115971598 warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:15991600 %Phoenix.LiveView.UploadEntry{entry | preflighted?: true}16011602 but got type:16031604 dynamic()16051606 where "entry" was given the type:16071608 # type: dynamic()1609 # from: lib/phoenix_live_view/upload_config.ex:339:281610 entry <- conf.entries16111612 when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"16131614 type warning found at:1615 │1616 339 │ | entries: for(entry <- conf.entries, do: %UploadEntry{entry | preflighted?: true})1617 │ ~1618 │1619 └─ lib/phoenix_live_view/upload_config.ex:339:49: Phoenix.LiveView.UploadConfig.mark_preflighted/116201621 warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:16221623 %Phoenix.LiveView.UploadEntry{entry | valid?: true, uuid: generate_uuid()}16241625 but got type:16261627 dynamic()16281629 where "entry" was given the type:16301631 # type: dynamic()1632 # from: lib/phoenix_live_view/upload_config.ex:539:301633 entry16341635 when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"16361637 type warning found at:1638 │1639 540 │ entry = %UploadEntry{entry | valid?: true, uuid: generate_uuid()}1640 │ ~1641 │1642 └─ lib/phoenix_live_view/upload_config.ex:540:13: Phoenix.LiveView.UploadConfig.put_valid_entry/216431644 warning: Logger.disable/1 is deprecated. Use Logger.put_process_level(pid, :none) instead1645 │1646 72 │ Logger.disable(self())1647 │ ~1648 │1649 └─ lib/phoenix_live_view/test/client_proxy.ex:72:12: Phoenix.LiveViewTest.ClientProxy.init/116501651 warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:16521653 %Phoenix.LiveView.UploadEntry{entry | valid?: false}16541655 but got type:16561657 dynamic()16581659 where "entry" was given the type:16601661 # type: dynamic()1662 # from: lib/phoenix_live_view/upload_config.ex:552:321663 entry16641665 when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"16661667 type warning found at:1668 │1669 553 │ entry = %UploadEntry{entry | valid?: false}1670 │ ~1671 │1672 └─ lib/phoenix_live_view/upload_config.ex:553:13: Phoenix.LiveView.UploadConfig.put_invalid_entry/316731674 warning: a struct for Phoenix.LiveViewTest.ClientProxy is expected on struct update:16751676 %Phoenix.LiveViewTest.ClientProxy{view | rendered: rendered}16771678 but got type:16791680 dynamic(%{..., rendered: map()})16811682 where "view" was given the type:16831684 # type: dynamic(%{..., rendered: map()})1685 # from: lib/phoenix_live_view/test/client_proxy.ex:701:241686 Phoenix.LiveViewTest.DOM.merge_diff(view.rendered, diff)16871688 when defining the variable "view", you must also pattern match on "%Phoenix.LiveViewTest.ClientProxy{}"16891690 type warning found at:1691 │1692 702 │ new_view = %ClientProxy{view | rendered: rendered}1693 │ ~1694 │1695 └─ lib/phoenix_live_view/test/client_proxy.ex:702:20: Phoenix.LiveViewTest.ClientProxy.merge_rendered/316961697 warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:16981699 %Phoenix.LiveView.UploadEntry{entry | cancelled?: true}17001701 but got type:17021703 dynamic()17041705 where "entry" was given the type:17061707 # type: dynamic()1708 # from: lib/phoenix_live_view/upload_config.ex:635:421709 entry17101711 when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"17121713 type warning found at:1714 │1715 635 │ update_entry(conf, entry.ref, fn entry -> %UploadEntry{entry | cancelled?: true} end)1716 │ ~1717 │1718 └─ lib/phoenix_live_view/upload_config.ex:635:51: Phoenix.LiveView.UploadConfig.cancel_entry/217191720 warning: Plug.Conn.Query.decode_pair/2 is deprecated. Use decode_init/0, decode_each/2, and decode_done/2 instead1721 │1722 1095 │ Plug.Conn.Query.decode_pair({name, DOM.attribute(selected, "value")}, acc)1723 │ ~1724 │1725 └─ lib/phoenix_live_view/test/client_proxy.ex:1095:23: Phoenix.LiveViewTest.ClientProxy.form_defaults/31726 └─ lib/phoenix_live_view/test/client_proxy.ex:1100:21: Phoenix.LiveViewTest.ClientProxy.form_defaults/31727 └─ lib/phoenix_live_view/test/client_proxy.ex:1110:27: Phoenix.LiveViewTest.ClientProxy.form_defaults/31728 └─ lib/phoenix_live_view/test/client_proxy.ex:1119:25: Phoenix.LiveViewTest.ClientProxy.form_defaults/317291730 warning: the right-hand side of || (shown as ... below) will never be executed:17311732 conn.private[:live_view_connect_info] || prune_conn(conn) || ...17331734 because the left-hand side always evaluates to:17351736 dynamic(not false and not nil)17371738 where "conn" was given the types:17391740 # type: dynamic(%Plug.Conn{assigns: %{..., live_module: term()}, status: integer()})1741 # from: lib/phoenix_live_view/test/live_view_test.ex:320:721742 %Plug.Conn{status: 200, assigns: %{live_module: live_module}} = conn17431744 # type: dynamic(%Plug.Conn{1745 assigns: %{..., live_module: term()},1746 private:1747 %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or1748 non_struct_map(),1749 status: integer()1750 })1751 # from: lib/phoenix_live_view/test/live_view_test.ex:334:351752 conn.private[:live_view_connect_params]17531754 type warning found at:1755 │1756 335 │ connect_info: conn.private[:live_view_connect_info] || prune_conn(conn) || %{},1757 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1758 │1759 └─ lib/phoenix_live_view/test/live_view_test.ex:335: Phoenix.LiveViewTest.connect_from_static_token/217601761 warning: the following clause is redundant:17621763 def update(assigns, _key, fun) when is_function(fun, 1) or is_function(fun, 2)17641765 it has type:17661767 dynamic(), dynamic(), dynamic((none() -> term()) or (none(), none() -> term()))17681769 previous clauses have already matched on the following types:17701771 %Phoenix.LiveView.Socket{}, term(), (none(), none() -> term())1772 %Phoenix.LiveView.Socket{}, term(), (none() -> term())1773 term(), term(), (none(), none() -> term())1774 term(), term(), (none() -> term())17751776 │1777 952 │ def update(assigns, _key, fun) when is_function(fun, 1) or is_function(fun, 2) do1778 │ ~1779 │1780 └─ lib/phoenix_live_view.ex:952:7: Phoenix.LiveView.update/317811782 warning: this clause of defp class_names/1 is never used (or it will always fail/warn when invoked)1783 │1784 603 │ defp class_names(nil), do: []1785 │ ~1786 │1787 └─ lib/phoenix_live_view/js.ex:603:8: Phoenix.LiveView.JS.class_names/117881789 warning: the following clause is redundant:17901791 def to_iodata(%_{} = struct)17921793 it has type:17941795 dynamic(%Phoenix.LiveView.Rendered{})17961797 previous clauses have already matched on the following types:17981799 %Phoenix.LiveView.Rendered{}18001801 │1802 127 │ def to_iodata(%_{} = struct) do1803 │ ~1804 │1805 └─ lib/phoenix_live_view/engine.ex:127:9: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/118061807 warning: the 1st pattern in clause will never match:18081809 nil18101811 because it is expected to receive type:18121813 dynamic(%Phoenix.LiveView.Rendered{})18141815 hint: defimpl for Phoenix.LiveView.Rendered requires its callbacks to match exclusively on %Phoenix.LiveView.Rendered{}18161817 type warning found at:1818 │1819 131 │ def to_iodata(nil) do1820 │ ~~~~~~~~~~~~~~~~~~~~~1821 │1822 └─ lib/phoenix_live_view/engine.ex:131: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/118231824 warning: the following clause is redundant:18251826 def to_iodata(other)18271828 it has type:18291830 dynamic(%Phoenix.LiveView.Rendered{})18311832 previous clauses have already matched on the following types:18331834 %Phoenix.LiveView.Rendered{}18351836 │1837 135 │ def to_iodata(other) do1838 │ ~1839 │1840 └─ lib/phoenix_live_view/engine.ex:135:9: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/118411842Generated phoenix_live_view app1843warning: Phoenix now requires you to explicitly list which engine to use1844for Phoenix JSON encoding. We recommend everyone to upgrade to1845Jason by setting in your config/config.exs:18461847 config :phoenix, :json_library, Jason18481849And then adding {:jason, "~> 1.0"} as a dependency.18501851If instead you would rather continue using Poison, then add to1852your config/config.exs:18531854 config :phoenix, :json_library, Poison18551856 (phoenix 1.6.17) lib/phoenix.ex:56: Phoenix.start/21857 (kernel 11.0.4) application_master.erl:299: :application_master.start_it_old/418581859warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1860 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21861 (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11862 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51863 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21864 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41865 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/218661867==> phoenix_live_dashboard1868Compiling 40 files (.ex)1869 warning: using single-quoted strings to represent charlists is deprecated.1870 Use ~c"" if you indeed want a charlist or use "" instead.1871 You may run "mix format --migrate" to change all single-quoted1872 strings to use the ~c sigil and fix this warning.1873 │1874 709 │ '#Port' ++ rest = :erlang.port_to_list(ref)1875 │ ~1876 │1877 └─ lib/phoenix/live_dashboard/page_builder.ex:709:518781879 warning: using single-quoted strings to represent charlists is deprecated.1880 Use ~c"" if you indeed want a charlist or use "" instead.1881 You may run "mix format --migrate" to change all single-quoted1882 strings to use the ~c sigil and fix this warning.1883 │1884 728 │ '#Ref' ++ rest = :erlang.ref_to_list(ref)1885 │ ~1886 │1887 └─ lib/phoenix/live_dashboard/page_builder.ex:728:518881889 warning: using single-quoted strings to represent charlists is deprecated.1890 Use ~c"" if you indeed want a charlist or use "" instead.1891 You may run "mix format --migrate" to change all single-quoted1892 strings to use the ~c sigil and fix this warning.1893 │1894 446 │ @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1895 │ ~1896 │1897 └─ lib/phoenix/live_dashboard/system_info.ex:446:1618981899 warning: using single-quoted strings to represent charlists is deprecated.1900 Use ~c"" if you indeed want a charlist or use "" instead.1901 You may run "mix format --migrate" to change all single-quoted1902 strings to use the ~c sigil and fix this warning.1903 │1904 446 │ @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1905 │ ~1906 │1907 └─ lib/phoenix/live_dashboard/system_info.ex:446:2819081909 warning: using single-quoted strings to represent charlists is deprecated.1910 Use ~c"" if you indeed want a charlist or use "" instead.1911 You may run "mix format --migrate" to change all single-quoted1912 strings to use the ~c sigil and fix this warning.1913 │1914 446 │ @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1915 │ ~1916 │1917 └─ lib/phoenix/live_dashboard/system_info.ex:446:4019181919 warning: using single-quoted strings to represent charlists is deprecated.1920 Use ~c"" if you indeed want a charlist or use "" instead.1921 You may run "mix format --migrate" to change all single-quoted1922 strings to use the ~c sigil and fix this warning.1923 │1924 654 │ [{'none', 0, 0}] -> []1925 │ ~1926 │1927 └─ lib/phoenix/live_dashboard/system_info.ex:654:1119281929warning: 0..-2 has a default step of -1, please write 0..-2//-1 instead1930 lib/phoenix/live_dashboard/page_live.ex:178: Phoenix.LiveDashboard.PageLive.dashboard_mount_path/319311932warning: 0..-3 has a default step of -1, please write 0..-3//-1 instead1933 lib/phoenix/live_dashboard/page_live.ex:178: Phoenix.LiveDashboard.PageLive.dashboard_mount_path/319341935 warning: expected a module (an atom) when invoking __live__/0 in expression:19361937 Map.put(component_assigns, :page, page).__live__()19381939 but got type:19401941 dynamic(%{..., page: term()})19421943 where "component_assigns" was given the type:19441945 # type: dynamic(map())1946 # from: lib/phoenix/live_dashboard/components/nav_bar_component.ex:218:391947 Map.put(component_assigns, :page, page)19481949 where "page" was given the type:19501951 # type: dynamic()1952 # from: lib/phoenix/live_dashboard/components/nav_bar_component.ex:215:231953 page19541955 hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()19561957 type warning found at:1958 │1959 218 │ live_component(component, Map.put(component_assigns, :page, page))1960 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1961 │1962 └─ lib/phoenix/live_dashboard/components/nav_bar_component.ex:218: Phoenix.LiveDashboard.NavBarComponent.render_content/219631964 warning: expected a module (an atom) when invoking __live__/0 in expression:19651966 component_assigns.__live__()19671968 where "component_assigns" was given the type:19691970 # type: dynamic(%{..., page: term()})1971 # from: lib/phoenix/live_dashboard/page_live.ex:238:231972 component_assigns = Map.put(component_assigns, :page, assigns.page)19731974 hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()19751976 type warning found at:1977 │1978 239 │ live_component(component, component_assigns)1979 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1980 │1981 └─ lib/phoenix/live_dashboard/page_live.ex:239: Phoenix.LiveDashboard.PageLive.render_page/219821983 warning: Postgrex.Interval.to_string/1 is undefined (module Postgrex.Interval is not available or is yet to be defined)1984 │1985 276 │ do: struct.to_string(value)1986 │ ~1987 │1988 └─ lib/phoenix/live_dashboard/pages/ecto_stats_page.ex:276:16: Phoenix.LiveDashboard.EctoStatsPage.format/219891990 warning: Logger.add_backend/1 is deprecated. Use LoggerBackends.add/2 from :logger_backends dependency1991 │1992 8 │ Logger.add_backend(Phoenix.LiveDashboard.LoggerPubSubBackend)1993 │ ~1994 │1995 └─ lib/phoenix/live_dashboard/application.ex:8:12: Phoenix.LiveDashboard.Application.start/219961997Generated phoenix_live_dashboard app1998warning: the :gettext compiler is no longer required in your mix.exs.19992000Please find the following line in your mix.exs and remove the :gettext entry:20012002 compilers: [..., :gettext, ...] ++ Mix.compilers(),20032004 (gettext 0.26.2) lib/mix/tasks/compile.gettext.ex:5: Mix.Tasks.Compile.Gettext.run/12005 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/52006 (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/22007 (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/42008 (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/22009 (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/520102011==> exshome2012Compiling 68 files (.ex)2013 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2014 │2015 6 │ use Exshome.Dependency.GenServerDependency,2016 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2017 │2018 └─ lib/exshome_clock/services/local_time.ex:6: ExshomeClock.Services.LocalTime.handle_dependency_change/120192020 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2021 │2022 6 │ use Exshome.Dependency.GenServerDependency,2023 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2024 │2025 └─ lib/exshome_clock/services/local_time.ex:6: ExshomeClock.Services.LocalTime.handle_event/220262027 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2028 │2029 5 │ use Exshome.Dependency.GenServerDependency, name: "utc_time"2030 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2031 │2032 └─ lib/exshome_clock/services/utc_time.ex:5: ExshomeClock.Services.UtcTime.handle_dependency_change/120332034 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2035 │2036 5 │ use Exshome.Dependency.GenServerDependency, name: "utc_time"2037 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2038 │2039 └─ lib/exshome_clock/services/utc_time.ex:5: ExshomeClock.Services.UtcTime.handle_event/220402041 warning: using single-quoted strings to represent charlists is deprecated.2042 Use ~c"" if you indeed want a charlist or use "" instead.2043 You may run "mix format --migrate" to change all single-quoted2044 strings to use the ~c sigil and fix this warning.2045 │2046 80 │ '--no-video',2047 │ ~2048 │2049 └─ lib/exshome_player/services/mpv_server.ex:80:720502051 warning: using single-quoted strings to represent charlists is deprecated.2052 Use ~c"" if you indeed want a charlist or use "" instead.2053 You may run "mix format --migrate" to change all single-quoted2054 strings to use the ~c sigil and fix this warning.2055 │2056 81 │ '--idle',2057 │ ~2058 │2059 └─ lib/exshome_player/services/mpv_server.ex:81:720602061 warning: using single-quoted strings to represent charlists is deprecated.2062 Use ~c"" if you indeed want a charlist or use "" instead.2063 You may run "mix format --migrate" to change all single-quoted2064 strings to use the ~c sigil and fix this warning.2065 │2066 82 │ '--no-cache',2067 │ ~2068 │2069 └─ lib/exshome_player/services/mpv_server.ex:82:720702071 warning: using single-quoted strings to represent charlists is deprecated.2072 Use ~c"" if you indeed want a charlist or use "" instead.2073 You may run "mix format --migrate" to change all single-quoted2074 strings to use the ~c sigil and fix this warning.2075 │2076 83 │ '--no-terminal',2077 │ ~2078 │2079 └─ lib/exshome_player/services/mpv_server.ex:83:720802081 warning: using single-quoted strings to represent charlists is deprecated.2082 Use ~c"" if you indeed want a charlist or use "" instead.2083 You may run "mix format --migrate" to change all single-quoted2084 strings to use the ~c sigil and fix this warning.2085 │2086 84 │ '--input-ipc-server=#{socket_path()}'2087 │ ~2088 │2089 └─ lib/exshome_player/services/mpv_server.ex:84:720902091 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2092 │2093 5 │ use Exshome.Dependency.GenServerDependency, name: "mpv_server"2094 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2095 │2096 └─ lib/exshome_player/services/mpv_server.ex:5: ExshomePlayer.Services.MpvServer.handle_dependency_change/120972098 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2099 │2100 5 │ use Exshome.Dependency.GenServerDependency, name: "mpv_server"2101 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2102 │2103 └─ lib/exshome_player/services/mpv_server.ex:5: ExshomePlayer.Services.MpvServer.handle_event/221042105 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2106 │2107 5 │ use Exshome.Dependency.GenServerDependency, name: "mpv_socket"2108 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2109 │2110 └─ lib/exshome_player/services/mpv_socket.ex:5: ExshomePlayer.Services.MpvSocket.handle_dependency_change/121112112 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2113 │2114 5 │ use Exshome.Dependency.GenServerDependency, name: "mpv_socket"2115 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2116 │2117 └─ lib/exshome_player/services/mpv_socket.ex:5: ExshomePlayer.Services.MpvSocket.handle_event/221182119 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2120 │2121 11 │ use Exshome.Dependency.GenServerDependency,2122 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2123 │2124 └─ lib/exshome_player/services/player_state.ex:11: ExshomePlayer.Services.PlayerState.handle_dependency_change/121252126 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2127 │2128 11 │ use Exshome.Dependency.GenServerDependency,2129 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2130 │2131 └─ lib/exshome_player/services/player_state.ex:11: ExshomePlayer.Services.PlayerState.handle_event/221322133 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2134 │2135 11 │ use Exshome.Dependency.GenServerDependency,2136 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2137 │2138 └─ lib/exshome_player/services/playlist.ex:11: ExshomePlayer.Services.Playlist.handle_dependency_change/121392140 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2141 │2142 11 │ use Exshome.Dependency.GenServerDependency,2143 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2144 │2145 └─ lib/exshome_player/services/playlist.ex:11: ExshomePlayer.Services.Playlist.handle_event/221462147 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2148 │2149 8 │ use Exshome.Dependency.GenServerDependency,2150 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2151 │2152 └─ lib/exshome_player/variables/duration.ex:8: ExshomePlayer.Variables.Duration.handle_dependency_change/121532154 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2155 │2156 8 │ use Exshome.Dependency.GenServerDependency,2157 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2158 │2159 └─ lib/exshome_player/variables/duration.ex:8: ExshomePlayer.Variables.Duration.handle_event/221602161 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2162 │2163 8 │ use Exshome.Dependency.GenServerDependency,2164 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2165 │2166 └─ lib/exshome_player/variables/path.ex:8: ExshomePlayer.Variables.Path.handle_dependency_change/121672168 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2169 │2170 8 │ use Exshome.Dependency.GenServerDependency,2171 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2172 │2173 └─ lib/exshome_player/variables/path.ex:8: ExshomePlayer.Variables.Path.handle_event/221742175 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2176 │2177 8 │ use Exshome.Dependency.GenServerDependency,2178 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2179 │2180 └─ lib/exshome_player/variables/position.ex:8: ExshomePlayer.Variables.Position.handle_dependency_change/121812182 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2183 │2184 8 │ use Exshome.Dependency.GenServerDependency,2185 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2186 │2187 └─ lib/exshome_player/variables/position.ex:8: ExshomePlayer.Variables.Position.handle_event/221882189 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2190 │2191 8 │ use Exshome.Dependency.GenServerDependency,2192 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2193 │2194 └─ lib/exshome_player/variables/pause.ex:8: ExshomePlayer.Variables.Pause.handle_dependency_change/121952196 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2197 │2198 8 │ use Exshome.Dependency.GenServerDependency,2199 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2200 │2201 └─ lib/exshome_player/variables/pause.ex:8: ExshomePlayer.Variables.Pause.handle_event/222022203 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2204 │2205 8 │ use Exshome.Dependency.GenServerDependency,2206 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2207 │2208 └─ lib/exshome_player/variables/volume.ex:8: ExshomePlayer.Variables.Volume.handle_dependency_change/122092210 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2211 │2212 8 │ use Exshome.Dependency.GenServerDependency,2213 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2214 │2215 └─ lib/exshome_player/variables/volume.ex:8: ExshomePlayer.Variables.Volume.handle_event/222162217 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2218 │2219 8 │ use Exshome.Dependency.GenServerDependency,2220 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2221 │2222 └─ lib/exshome_player/variables/title.ex:8: ExshomePlayer.Variables.Title.handle_dependency_change/122232224 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2225 │2226 8 │ use Exshome.Dependency.GenServerDependency,2227 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2228 │2229 └─ lib/exshome_player/variables/title.ex:8: ExshomePlayer.Variables.Title.handle_event/222302231warning: defining a Gettext backend by calling22322233 use Gettext, otp_app: ...22342235is deprecated. To define a backend, call:22362237 use Gettext.Backend, otp_app: :my_app22382239Then, instead of importing your backend, call this in your module:22402241 use Gettext, backend: MyApp.Gettext22422243 lib/exshome_web/gettext.ex:23: ExshomeWeb.Gettext (module)22442245 warning: using single-quoted strings to represent charlists is deprecated.2246 Use ~c"" if you indeed want a charlist or use "" instead.2247 You may run "mix format --migrate" to change all single-quoted2248 strings to use the ~c sigil and fix this warning.2249 │2250 21 │ class={"text-4xl #{if @deps.playlist.current_id == track.id, do: 'playing'}"}2251 │ ~2252 │2253 └─ lib/exshome_player/web/templates/playlist.html.heex:21:7822542255 warning: using single-quoted strings to represent charlists is deprecated.2256 Use ~c"" if you indeed want a charlist or use "" instead.2257 You may run "mix format --migrate" to change all single-quoted2258 strings to use the ~c sigil and fix this warning.2259 │2260 26 │ "#{if @deps.playlist.current_id == track.id, do: 'font-bold dark:text-yellow-200'} flex flex-col flex-grow pl-4 text-left justify-center overflow-x-auto overflow-y-hidden"2261 │ ~2262 │2263 └─ lib/exshome_player/web/templates/playlist.html.heex:26:6222642265 warning: using single-quoted strings to represent charlists is deprecated.2266 Use ~c"" if you indeed want a charlist or use "" instead.2267 You may run "mix format --migrate" to change all single-quoted2268 strings to use the ~c sigil and fix this warning.2269 │2270 6 │ <div class={"icon mt-[15%] #{if @deps.pause, do: 'play', else: 'pause'}"}>2271 │ ~2272 │2273 └─ lib/exshome_player/web/templates/preview.html.heex:6:5422742275 warning: using single-quoted strings to represent charlists is deprecated.2276 Use ~c"" if you indeed want a charlist or use "" instead.2277 You may run "mix format --migrate" to change all single-quoted2278 strings to use the ~c sigil and fix this warning.2279 │2280 6 │ <div class={"icon mt-[15%] #{if @deps.pause, do: 'play', else: 'pause'}"}>2281 │ ~2282 │2283 └─ lib/exshome_player/web/templates/preview.html.heex:6:68228422852286== Compilation error in file lib/exshome_web/endpoint.ex ==2287** (ArgumentError) invalid :json_decoder option. The module Poison is not loaded and could not be found2288 (plug 1.20.3) lib/plug/parsers/json.ex:48: Plug.Parsers.JSON.validate_decoder!/12289 (plug 1.20.3) lib/plug/parsers/json.ex:35: Plug.Parsers.JSON.init/12290 (plug 1.20.3) lib/plug/parsers.ex:283: anonymous fn/2 in Plug.Parsers.convert_parsers/22291 (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/22292 (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/22293 (plug 1.20.3) lib/plug/parsers.ex:263: Plug.Parsers.init/12294 (plug 1.20.3) lib/plug/builder.ex:358: Plug.Builder.init_module_plug/42295 (plug 1.20.3) lib/plug/builder.ex:339: anonymous fn/5 in Plug.Builder.compile/32296could not compile dependency :exshome, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile exshome --force", update it with "mix deps.update exshome" or clean it with "mix deps.clean exshome"