Commit Graph
61 Commits
Author SHA1 Message Date
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