José Valim
cbc6029fec
Store each compiler option directly in elixir_config, closes #9208
2019-07-18 17:13:10 +02:00
José Valim
6ac1b99e0c
Rely on bootstrap only during compilation
2019-05-04 16:43:18 +02:00
José Valim
3e673ac134
Ensure we support counters in bitstring size vars
2019-01-07 22:31:31 +01:00
Michał Muskała
887e8f2633
Rewrite match operators in elixir ( #8043 )
...
Until now, we left rewriting operators in matches to Erlang. This forced
us to inherit Erlang semantics, especially for the ++ operator, that
only allows lists of integers on the left side inside matches. The new
implementation just rewrites this operator regular improper list matching.
Additionally we rewrite matching on -/1 and +/1 operators to number
literals - matching with those operators and variables was never
supported.
Additionally do a bit of housekeeping and refactor code around rewriting
and validating remote calls.
2018-08-04 15:14:13 +02:00
Mike Buhot
c096508f37
Allow :raw option in File.exists?, regular? and dir? ( #8028 )
2018-08-03 11:38:45 +02:00
José Valim
95ec1be78a
Clean up private elixir_config API
2018-07-19 23:27:52 +02:00
lukevmorris
2f268088af
Warn if nested comparisons are found ( #7773 )
2018-06-21 18:59:52 +02:00
José Valim
e0dc8b0051
Use posix and raw when extracing stale sources in Mix
...
Thanks @michalmuskala for the suggestion.
2018-01-25 08:16:59 -02:00
José Valim
4b930b0a0b
Avoid conflicts with erl_anno in meta
...
We avoid using :file publicly as well as :location privately.
We do still use :file privately but that's supposed to mirror
the `-file` annotation in Erlang before function definitions.
2017-10-25 00:33:05 +02:00
José Valim
eadcc92ff3
Do not match on empty block meta
2017-10-06 15:19:37 +02:00
José Valim
0beeef8b1f
Do not crash IEx on :init.stop
2017-08-01 21:10:29 +02:00
José Valim
579f93bcc7
Ensure elixir_erl:debug_info/4 does not require elixir running ( #6401 )
2017-07-29 17:27:05 +02:00
José Valim
4087e74400
Also store file sizes in manifest
...
The goal is to make compilation more robust to
flukes in the mtime measurement.
Closes #5815 .
2017-05-08 22:28:33 +02:00
José Valim
54a8dce800
Use new extra_chunks option when possible
2017-05-08 15:26:43 +02:00
José Valim
300acb518e
Deprecate parens as nil and support guards on funs with zero arity
...
Closes #5799
2017-02-21 13:06:43 +01:00
José Valim
a7316e752f
Fix how the generated annotation is handled in Elixir
2017-02-20 23:14:16 +01:00
José Valim
ff8dd1af7f
More module renaming and organizing
2017-02-19 21:20:43 +01:00
José Valim
e7e0d512ff
Move erlang modules to new erl namespace
2017-02-19 20:20:59 +01:00
José Valim
d5ec484a69
Convert default argument handling to Elixir pass
2017-02-18 19:44:38 +01:00
José Valim
9c0d6a66d5
Assert valid match and guard constructs on Elixir pass
2017-02-08 15:58:34 +01:00
Eksperimental
f1cc31be3c
Remove use of underscore before ordinal numbers in functions and variables ( #5414 )
2016-11-04 19:44:40 +01:00
Eksperimental
33bb6f3d14
Properly spell UTF-8 ( #5373 )
2016-10-28 21:09:23 +02:00
Aleksei Magusev
290447cabe
There is no :erlang.is_record/1 function
2016-10-21 00:58:39 +02:00
Aleksei Magusev
8eae1166fd
Consider is_process_alive/1 calls in returns_boolean/1 check
2016-09-28 13:19:26 +02:00
Aleksei Magusev
79a72ae26c
Consider is_record/1,2,3 calls in returns_boolean/1 check
2016-09-28 13:08:45 +02:00
Aleksei Magusev
4e681d5fcb
Consider is_map/1 calls in returns_boolean/1 check
2016-09-28 12:49:49 +02:00
José Valim
89adb42b58
Update return boolean check for orelse/andalso
2016-09-28 10:30:48 +02:00
Andrea Leopardi
d80038f86a
Force defmodule to not be tail-call optimized ( #4958 )
2016-07-08 10:35:47 +02:00
José Valim
25ca5c825a
Disable relative paths when loading mix.exs, closes #4465
2016-06-12 18:55:00 +02:00
eksperimental
3bd976737e
Use proper case for proper nouns and acronyms
...
Use proper case for proper nouns (e.g., Elixir, Rebar, Git, and others)
as well as acronyms (e.g., URL, HTTP, and others).
2016-06-06 15:17:59 +02:00
José Valim
fa920eb6b8
Rename bundle/2 to describe/2
2016-05-30 12:19:21 +02:00
José Valim
c87a7dbf26
Add @enforce_keys to defstruct, defexception and friends
2016-05-26 13:26:58 +02:00
eksperimental
0aece49e2d
Replace 'char_list' and 'char list' with 'charlist'
2016-05-07 03:20:57 +07:00
eksperimental
4ceb41e71b
Formmating: Add white space around vertical bar ( #4507 )
2016-04-25 00:55:49 +02:00
eksperimental
bed9816549
Formatting: add white space after comma ( #4491 )
...
Standardizes the use of comma leaving a white space after it whenever applicable.
Note: It does not enforce this in quantifiers in regular expressions such as in: `x{1,3}`
2016-04-19 01:23:50 +02:00
José Valim
fae0134001
Do not build structs if not necessary
2016-04-13 16:56:15 +02:00
José Valim
4fa892208e
Properly change __ENV__.file when @file is set
...
Note that @file may be set from the :file meta as well.
2015-11-21 05:02:38 +08:00
José Valim
3ccd5137ef
Add generated annotations
2015-10-11 12:02:47 -05:00
José Valim
a0e1f16c48
Ensure File.touch and File.touch! properly work with universal time
...
Operations that change mtime should work with universal times.
Closes #3722 .
2015-09-11 23:45:47 +02:00
José Valim
bb36b5f3ea
Refactor extraction of meta location
2015-05-16 10:41:39 +02:00
eksperimental
61675c3ea8
Add space after comma: Format consistently
2015-03-17 22:55:27 +07:00
José Valim
4513b6965f
Emit :file attribute on all nodes instead of a select few
2014-07-08 15:53:32 +02:00
José Valim
538b51c20a
Remove usage of :filelib functions
...
This is to work around a regression in 17.1 where many
:filelib functions were broken. More information read:
http://erlang.org/pipermail/erlang-bugs/2014-June/004465.html
2014-06-27 23:00:18 +02:00
José Valim
64f8541ee6
Make cond a special form so it does not leak vars on head
2014-06-25 01:46:56 +02:00
José Valim
bf8f5c4bb8
Add String.to_char_list and List.to_string
2014-05-17 13:59:17 +02:00
José Valim
fdf53787cf
Remove unecessary .hrl macros
2014-04-30 19:24:04 +02:00
James Fish
29e0fadec1
Fix compiler abstract code
...
Previously the source filename of a module was sometimes a binary, this
change ensures it is always an erlang string.
Previously dialyzer did not know not to auto import bifs as it does not
read the compile options from a beam. This change uses an attribute in
the abstract code rather than a compile option so that dialyzer does not
auto import bifs.
2014-04-27 13:49:35 +01:00
José Valim
56f15d9f4e
Do not add spaces after { and before }
...
This makes the source code consistent with the result
returned by inspect/2.
2014-04-21 19:06:35 +02:00
José Valim
6a725ab91f
Provide List.from_char_data! and String.from_char_data!
2014-02-23 11:04:24 +01:00
José Valim
655e54b551
Update Macro functions to support maps
2014-02-19 10:33:59 +01:00