Commit Graph
2254 Commits
Author SHA1 Message Date
José Valim ef5916bb67 Refactor and normalize format 2022-10-27 23:29:09 +02:00
sabiwara 8feb6c223c Use orelse in for guard (#12217) 2022-10-27 07:27:41 +02:00
José Valim 386113af86 Include snippets in more syntax errors 2022-10-25 12:52:20 +02:00
José Valim 8f57c0ed1b Update notes on | 2022-10-25 10:36:40 +02:00
Marc-André Lafortune f63e600c6c Add precision to error message (#12213) 2022-10-25 10:29:28 +02:00
José Valim d739957b3d Expand left side of -> in rescue, closes #12209 2022-10-21 17:04:25 +02:00
José Valim 0a1a5991d9 Remove unecessary parens in nullary type funs 2022-10-14 13:55:23 +02:00
José Valim e070d4fbf4 Use correct column in invalid alias terminator 2022-10-11 14:56:34 +02:00
José Valim 9fb3cf6030 Fix ambiguity in &INT with brackets 2022-10-08 10:52:37 +02:00
sabiwara 26d050e65b Handle unused :uniq comprehensions (#12116) 2022-10-05 10:42:56 +02:00
José Valim b7dd72f567 Improve error message for invalid % { syntax 2022-09-27 18:56:29 +02:00
José Valim 9aca91ce06 Improve error message for too many arguments in access 2022-09-27 17:51:23 +02:00
José Valim 29ed6925b3 Warn for nested calls without parens inside keywords 2022-09-24 16:50:07 +02:00
José Valim 3ee1e83eef Remove parser ambiguity within stepped ranges 2022-09-10 00:32:13 +02:00
José Valim 755b25249b Improve error message for unbound _ 2022-09-09 22:26:35 +02:00
Michael Adkins 4dd730267a Add commas to bare usage of "however" where appropriate (#12119) 2022-09-06 20:29:01 +02:00
José Valim 904072081a Raise on missing struct for module conflict, closes #12113 2022-09-04 16:01:37 +02:00
sabiwara 239ae0877a Handle syntax_colors in quoted_to_algebra and dbg (#12106) 2022-09-04 15:10:22 +02:00
Marc-André Lafortune b5d40c6f99 Behaviour as runtime dependency (#12103) 2022-08-30 08:34:08 +02:00
José Valim c94924a6c2 List compile-time deps for after_verify 2022-08-29 23:37:21 +02:00
José Valim 2a78d378cd Add TODOs 2022-08-23 08:53:38 +02:00
José Valim 937cece227 Improve error message 2022-08-22 11:27:49 +02:00
José Valim f97d8585e8 Deprecate ... as a valid function call identifier 2022-08-15 15:10:54 +02:00
Andreas Lappe 487c24d518 Fix typo (#12068) 2022-08-12 12:49:10 +02:00
sabiwara 7dc718b292 Replace inner AST for bitstring modifiers (#12055) 2022-08-06 09:28:07 +02:00
Łukasz Samson 7ebea3b246 Emit consistent position meta on fn capture traces (#12033) 2022-08-02 09:44:12 +02:00
Andrea LeopardiandJosé Valim 65829ef4e8 Add Process.alias/0,1 and Process.unalias/1 (#12020)
We can have these now that Elixir requires Erlang/OTP 24+.

Co-authored-by: José Valim <jose.valim@dashbit.co>
2022-07-28 09:53:37 +02:00
José Valim 76a683f41c Add deprecations 2022-07-27 17:18:53 +02:00
sabiwara c64606b765 Warn on missing parentheses in bitstring modifiers (#11862) 2022-07-27 13:28:24 +02:00
José Valim 239f8f9e3b Require Erlang/OTP 24 2022-07-27 13:20:42 +02:00
José Valim 391a287709 Track all arities in imports inside quotes, closes #11651 2022-07-26 21:36:30 +02:00
sabiwara c84c65710b Improve error messages for dot syntax (#12003) 2022-07-26 12:20:20 +02:00
José Valim b75c43876d Update TODOs and deprecations 2022-07-25 16:41:23 +02:00
José Valim 8fc62b814e Add TODO related to ... 2022-07-25 09:31:21 +02:00
José Valim 03514d70eb Add @after_verify callback
@after_verify hooks are invoked right after the current module is verified for
undefined functions, deprecations, etc. A module is always verified after
it is compiled. In Mix projects, a module is also verified when any of its
runtime dependencies change. Therefore this is useful to perform verification
of the current module while avoiding compile-time dependencies.

Here are some sample use cases:

  * Ecto can use this validate associations consistently and effectively
  * Phoenix can use this to verify routes
  * Surface can use this to verify component attributes
2022-07-20 16:34:15 +02:00
José Valim fd5f3a1674 Share syntax colors between IEx and dbg (#11992) 2022-07-18 11:54:05 +02:00
José Valim 658bceee63 Track dbg callback inside Mix projects 2022-07-16 20:48:16 +02:00
José Valim dd01320f22 Optimize variable loading in eval 2022-07-15 11:41:47 +02:00
José Valim 7913d5d02e Lazily expand module attributes to avoid compile-time deps
Before this patch, this code would add a compile-time
dependency to Bar and Baz:

    defmodule Foo do
      @mods [Bar, Baz]
      def example(arg) when arg in @mods, do: arg
    end

That's because Bar and Baz were read in the module body,
even though ultimately they are only expanded and used
inside a function.

This patch postpones the expansion of aliases until they
are used. So if `@mods` is only used inside functions,
no compile-time deps are added.

Closes #11714.
2022-07-14 16:36:43 +02:00
José Valim ed82538f9a Simplify passing of values to the checker 2022-07-12 12:55:48 +02:00
José Valim 5f0454d27d Start checker processes lazily 2022-07-12 12:13:04 +02:00
José Valim 824f81010a Automatically cascade generated: true on macro expansion, closes #11976 2022-07-11 16:40:26 +02:00
José Valim 6bb2eb317b Treat requires from local macros as compile-time deps 2022-07-11 13:17:01 +02:00
José Valim 2a7d58c3f7 Register functions used in local macros as exports
Ideally we want to list them as requires but we don't have
the infrastructure to do so. So meanwhile, we list them
as exports, which is the same level used by require.
2022-07-11 09:09:54 +02:00
José Valim 03ffc663e7 Add autocompletion of binary modifiers in IEx
Macro.path/2 was added as a helper function for
traversing expressions and returning their context.
2022-07-09 17:06:04 +02:00
José Valim cd74e72441 Do not emit already consolidated warnings during mix xref trace, closes #11899 2022-07-06 11:05:42 +02:00
José Valim 25002872b8 Keep file env consistently as an absolute path, closes #11964 2022-07-05 23:04:03 +02:00
sabiwara 04eda2e8f8 Fix bug in fn defaults (#11963)
Closes #11961.
2022-07-05 16:02:01 +02:00
José Valim 410c468467 Remove outdated TODO 2022-06-19 23:00:10 +02:00
José Valim 41a698a1f3 Wrap more of the struct expansion stacktrace 2022-06-15 20:56:00 +02:00