Commit Graph

342 Commits

Author SHA1 Message Date
Kodi Arfer
80eb27906a Update copyright years 2020-01-09 14:05:12 -05:00
Ryan Gonzalez
1865feb7d6 Implement PEP 3107 & 526 annotations (closes #1794) 2019-10-08 09:40:15 -05:00
Kodi Arfer
d32e460531 Remove some exceptions in keyword parsing 2019-07-24 11:21:11 -04:00
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
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
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
ea872c3983 Remove native tests of Python 2 2019-06-04 14:01:59 -04:00
Kodi Arfer
4a2e7e1bd0 Integrate py3_only_tests into native_tests/language 2019-06-04 14:01:59 -04:00
Kodi Arfer
8df0a41d7d Provide Module(..., type_ignores) for Python 3.8 2019-04-23 15:35:12 -04:00
Kodi Arfer
85f203ba43 Remove checks in tests for Python 3.5 2019-03-17 18:30:42 -04:00
Kodi Arfer
5bfc140b4d Implement format strings 2019-02-26 14:04:24 -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
Kodi Arfer
62638b44a3 Update copyright years 2019-02-07 08:57:35 -05:00
Kodi Arfer
1d2c73165d Make HyKeyword callable
Co-authored-by: Simon Gomizelj <simon@vodik.xyz>
2018-07-24 09:19:37 -07:00
Kodi Arfer
03aafad657 Make empty expressions illegal at the top level 2018-07-24 08:59:52 -07:00
Kodi Arfer
14979edcab Remove tests of the old comprehension forms 2018-06-13 17:31:08 -07:00
Kodi Arfer
e1972c535f Remove for/a, for*, and for/a* 2018-06-13 17:31:08 -07:00
Kodi Arfer
3256932b13 Add a version of for parallel to lfor etc. 2018-06-13 17:31:08 -07:00
Kodi Arfer
65e620ed55 Remove an obsolete bug workaround in a test 2018-06-11 21:05:29 -07:00
Kodi Arfer
16ec46a473 Update docstring handling for Python 3.7
See https://github.com/python/cpython/pull/7121 .
2018-06-05 17:35:48 -07:00
Kodi Arfer
3204a9e8a3 Streamline auto-promotion and position spoofing
Auto-promotion now occurs in only two cases: when we start the compiler and when we expand a macro. It's fully recursive so even a non-model nested in a model will be promoted.

This change fixes some regressions induced by the stricter type checks of the pattern-matching compiler.
2018-06-05 09:23:21 -07:00
Kodi Arfer
45e8783997 Use model patterns for fn 2018-05-20 14:07:44 -07:00
Kodi Arfer
9368e4bc4e Use model patterns for import and require
In the process, I've banned the syntax `(import [foo])` in favor of `(import foo)`.
2018-05-20 14:07:44 -07:00
Kodi Arfer
79c02514b9 Introduce the use of model patterns 2018-05-20 14:07:44 -07:00
Kodi Arfer
a2aeca2338 Remove tuple unpacking in lambda lists 2018-05-04 10:40:22 -07:00
Kodi Arfer
c7ac4c60c4 Fix a bug that caused try to drop expressions 2018-04-30 09:18:01 -07:00
Kodi Arfer
ec1c92bf4e Allow for with an empty body 2018-04-29 19:51:00 -07:00
Kodi Arfer
b7e5c5f17a Allow while with an empty body 2018-04-29 19:51:00 -07:00
Kodi Arfer
87aced2370 Don't let HyExpression etc. inherit from HyList
This means the compiler no longer allows e.g. `(fn (x) ...)` in place of `(fn [x] ...)`.
2018-04-29 19:17:47 -07:00
Simon Gomizelj
032247e380
Merge pull request #1588 from Kodiologist/no-amp-key
Remove &key
2018-04-27 00:21:11 -04:00
Kodi Arfer
a605936651 Remove &key
It's redundant with &optional.
2018-04-19 09:26:02 -07:00
Kodi Arfer
7bf2901364 Ban (except)
It's rarely useful, because it catches all exceptions, but it doesn't let you do anything other than return `None`. You can still get the same effect with `(except [])`.
2018-04-16 19:34:50 -07:00
Simon Gomizelj
1b7dfd2839 Make HyKeyword a first class objects
HyKeywords are no longer an instances of string with a particular
prefix, but a completely separate object.

This means keywords no longer trip isinstance str checks, adding a
little bit of type safety to the compiler.

It also means that HyKeywords evaluate to themselves.

Closes #1352
2018-04-07 22:29:20 -07:00
Kodi Arfer
268eba93fe Update a disassembly test for Python 3.7 2018-03-24 12:34:43 -07:00
Kodi Arfer
cfb042304c Test module docstrings 2018-03-24 12:34:43 -07:00
Kodi Arfer
ad59fd7ff6 In -> and ->>, don't modify the arguments 2018-03-23 13:57:19 -07:00
Kodi Arfer
ebc9bda7ee Remove an obsolete test 2018-03-13 14:55:55 -04:00
Kodi Arfer
0c816f2e83 Mangle keyword arguments 2018-03-13 14:55:55 -04:00
Kodi Arfer
d252bb0e94 Mangle names that coincide with Python keywords 2018-03-13 14:55:55 -04:00
Kodi Arfer
52edad28e2 Overhaul mangling rules 2018-03-13 14:55:53 -04:00
Kodi Arfer
9f0911161d Fix tests with =-and-parentheses errors 2018-03-13 14:38:36 -04:00
Simon Gomizelj
5c40f793a1 Support PEP 328
Add support for proper relative imports
2018-02-06 23:41:12 -05:00
Tuukka Turto
5c720c0110
Merge pull request #1473 from Kodiologist/new-year-2018
Update copyright years
2018-02-05 15:11:59 +02:00
Tuukka Turto
cf87de5cc2
Merge pull request #1483 from vodik/remove-def
Just remove `def`
2018-01-31 08:54:59 +02:00
Simon Gomizelj
0cd4df3898 Remove def and standardize on setv 2018-01-21 00:25:33 -05:00
Tuukka Turto
a9621817f9
Merge pull request #1433 from Kodiologist/while-multistatement
Handle statements in the condition of `while`
2018-01-11 07:45:27 +02:00
Kodi Arfer
6de7ddfee5 Update copyright years 2018-01-01 10:38:33 -05:00