Commit Graph

1292 Commits

Author SHA1 Message Date
Ryan Gonzalez
289f172d56 Fix #1790: Rework statements in while condition
This avoids compiling them more than once while also applying some simplification.
2019-07-22 11:34:48 -04:00
Kodi Arfer
d99cf80986 Run statements in the second argument of assert
I've edited the test to use a list instead of a set because the order of evaluation probably ought to be guaranteed.
2019-07-21 10:17:24 -04:00
Kodi Arfer
3afb4fdabe Use mkexpr in HyASTCompiler.imports_as_stmts 2019-07-21 10:17:24 -04:00
Kodi Arfer
349da353d6 Factor out compiler subs for constructing HyExprs 2019-07-21 10:17:24 -04:00
Kodi Arfer
c99360b294 Remove support for defclass attribute lists 2019-07-17 14:34:31 -04:00
Kodi Arfer
6bc9e842e1 Clean up whitespace 2019-07-17 14:34:31 -04:00
Kodi Arfer
308bedbebe Remove uses of defclass attribute lists 2019-07-17 14:34:31 -04:00
Kodi Arfer
ba9b0239c7 Fix crashes on the new Python 3.8 alpha 2019-06-04 16:03:52 -04:00
Kodi Arfer
9b4178ebd0 Remove undocumented fns integer and string 2019-06-04 14:01:59 -04:00
Kodi Arfer
6af6a2945a Remove if-python2 and its uses 2019-06-04 14:01:59 -04:00
Kodi Arfer
7ba1407257 Remove hy._compat.PY3 2019-06-04 14:01:59 -04:00
Kodi Arfer
762e5fad2d Remove Python 2 support in hy.compiler 2019-06-04 14:01:59 -04:00
Kodi Arfer
67def3359f Remove Python 2 support from hy.importer 2019-06-04 14:01:59 -04:00
Kodi Arfer
5dcb03b64d Move isidentifier to hy.lex 2019-06-04 14:01:59 -04:00
Kodi Arfer
d7da03be12 Simplify hy._compat.isidentifier 2019-06-04 14:01:59 -04:00
Kodi Arfer
e45cee575a Move rename_function to hy.macros 2019-06-04 14:01:59 -04:00
Kodi Arfer
7991c59480 Remove handling of UCS-2 2019-06-04 14:01:59 -04:00
Kodi Arfer
c255f0d03c Remove old hy._compat raising code 2019-06-04 14:01:59 -04:00
Kodi Arfer
ecf0352d37 Remove aliases: builtins, FileNotFoundError 2019-06-04 14:01:59 -04:00
Kodi Arfer
2685b01a4b Remove miscellaneous PY3 checks 2019-06-04 14:01:59 -04:00
Kodi Arfer
bba97ab2a6 Remove hy._compat's type aliases 2019-06-04 14:01:59 -04:00
Kodi Arfer
e77ce92635 Simplify gensym format 2019-04-29 08:10:51 -04:00
Kodi Arfer
6c74cf1f07 Add setx for assignment expressions 2019-04-23 15:35:12 -04:00
Kodi Arfer
8df0a41d7d Provide Module(..., type_ignores) for Python 3.8 2019-04-23 15:35:12 -04:00
Tristan Cacqueray
d793cee90a add tuple? function hy.core
`tuple?` will test if the argument is an instance of tuple.
2019-04-23 15:25:49 -04:00
Tristan Cacqueray
1c7ca7ac1f update contrib and macro to use the new list? function 2019-04-09 00:07:10 +00:00
Tristan Cacqueray
b0ed103931 add list? function to hy.core
`list?` will test if the argument is an instance of list.
2019-04-09 00:07:10 +00:00
Kodi Arfer
cbca711865
Merge pull request #1758 from brandonwillard/fix-decorator-error
Check arguments in with-decorator tag
2019-04-08 14:15:32 -04:00
Andrew R. M
da823d2cad Fix a temporary-file crash 2019-04-06 15:43:10 -04:00
Kodi Arfer
ad97042b6b Don't test Python 3.4 2019-03-17 18:36:53 -04:00
Kodi Arfer
0fe7f42efc Remove internal checks for Python 3.5 2019-03-17 18:28:39 -04:00
Brandon T. Willard
9203fcaeb5 Check arguments in with-decorator tag
Fixes #1757.
2019-03-16 23:19:49 -05:00
Kodi Arfer
5bfc140b4d Implement format strings 2019-02-26 14:04:24 -05:00
Kodi Arfer
56f51a9a20 Implement hy.lex.parse_one_thing 2019-02-26 13:57:50 -05:00
Kodi Arfer
997321d31c Fix .end_line and .end_column of single-token models 2019-02-24 10:13:17 -05:00
Brandon T. Willard
9e62903d8a Add special exception and handling for wrapper errors 2019-02-07 13:45:41 -05:00
Brandon T. Willard
4ae4baac2a Cache command line source for exceptions
Source entered interactively can now be displayed in traceback output.  Also,
the REPL object is now available in its namespace, so that, for instance,
display options--like `spy`--can be turned on and off interactively.

Closes hylang/hy#1397.
2019-02-07 13:45:41 -05:00
Brandon T. Willard
fb6feaf082 Improve correspondence with Python errors and console behavior
Compiler and command-line error messages now reflect their Python counterparts.
E.g. where Python emits a `SyntaxError`, so does Hy; same for `TypeError`s.
Multiple tests have been added that check the format and type of raised
exceptions over varying command-line invocations (e.g. interactive and not).

A new exception type for `require` errors was added so that they can be treated
like normal run-time errors and not compiler errors.

The Hy REPL has been further refactored to better match the class-structured
API.  Now, different error types are handled separately and leverage more base
class-provided functionality.

Closes hylang/hy#1486.
2019-02-07 13:45:41 -05:00
Brandon T. Willard
cadfa4152b Make colored output configurable
Colored exception output is now disabled by default and configurable through
`hy.errors._hy_colored_errors` and the environment variable
`HY_COLORED_ERRORS`.

Likewise, Hy model/AST color printing is now configurable and disabled by
default.  The corresponding variables are `hy.models._hy_colored_ast_objects`
and `HY_COLORED_AST_OBJECTS`.

Closes hylang/hy#1429, closes hylang/hy#1510.
2019-02-07 13:43:58 -05:00
Brandon T. Willard
e468d5f081 Refactor REPL error handling and filter Hy internal trace output
These changes make the Hy REPL more closely follow `code.InteractiveConsole`'s
class interface and provide minimally intrusive traceback print-out filtering
via a context manager that temporarily alters `sys.excepthook`.  In other words,
exception messages from the REPL will no longer show Hy internal
code (e.g. importer, compiler and parsing functions).

The boolean variable `hy.errors._hy_filter_internal_errors` dynamically
enables/disables trace filtering, and the env variable
`HY_FILTER_INTERNAL_ERRORS` can be used as the initial value.
2019-02-07 13:43:58 -05:00
Brandon T. Willard
51c7efe6e8 Retain compiled source and file information for exceptions
This commit refactors the exception/error classes and their handling.
It also retains Hy source strings and their originating file information, when
available, all throughout the core parser and compiler functions.

As well, with these changes, calling code is no longer responsible for providing
source and file details to exceptions,

Closes hylang/hy#657.
2019-02-07 13:43:58 -05:00
Kodi Arfer
902926c543 Use ._syntax_error in place of HyTypeError.
And standardize the indentation of these calls.
2019-02-07 13:43:57 -05:00
Kodi Arfer
62638b44a3 Update copyright years 2019-02-07 08:57:35 -05:00
Kodi Arfer
f1e693c96b Fix a Python 2 crash 2019-02-03 14:13:48 -05:00
Kodi Arfer
983ea2dda2 Make (require [foo [*]]) pull in macros required by foo 2019-01-31 12:42:40 -05:00
Kodi Arfer
b777972a0e Fix mangling of characters below 0xFF 2018-12-14 15:54:23 -05:00
Brandon T. Willard
b8b02c9df9 Handle empty defmain args
Closes hylang/hy#1707.
2018-11-29 14:37:52 -06:00
Brandon T. Willard
15c68455ec Use a fixed compiler in HyREPL
These changes make `HyREPL` use a single `HyASTCompiler` instance, instead of
creating one every time a valid source string is processed.

This change avoids the unnecessary re-initiation of the standard library
`import` and `require` steps that currently occur within the module tracked by a
`HyREPL` instance.

Also, one can now pass an existing compiler instance to `hy_repl` and
`hy_compiler`.

Closes hylang/hy#1698.
2018-11-28 16:35:42 -06:00
Brandon T. Willard
8b6646d5c9 Remove hy.core compilation requirement from hy package
Previously, when importing `hy` (and any of its sub-packages/modules), Hy source
compilation for `hy.core.language` was necessarily triggered.  This, in turn,
would trigger compilation of the other standard library source files.

This commit removes that chain of events and allows the `hy` package to be
imported without any Hy compilation.

Furthermore, `read` and `read_str` are now implemented in Python and the Hy
standard library files now handle their own dependencies explicitly (i.e. they
`import` and/or `require` the other standard library files upon which they
depend).

The latter changes were necessary, because the automatically triggered
compilation of `hy.core.language` (and associated standard library files) was
serving--implicitly--as a means of producing bytecode in an order that just
happened to work for any compilation occurring afterward.  This chain of
events/dependencies was extremely cryptic, brittle, and difficult to debug, and
these changes should help to remedy that.

Closes hylang/hy#1697.
2018-11-28 14:12:33 -05:00
Brandon T. Willard
86fda31ab1 Move compilation and parsing functions out of importer.py
Functions and variables relating to compilation and parsing have been moved to
`compiler.py` and `lex/__init__.py`, respectively.  Those functions are
  - `hy_parse` from `hy.importer` to `hy.lex`
  - `hy_eval`, `ast_compile`, and `calling_module` from `hy.importer` to
  `hy.compiler`

Closes hylang/hy#1695.
2018-11-28 14:12:33 -05:00