Commit Graph

653 Commits

Author SHA1 Message Date
Ryan Gonzalez a964acd51d Avoid evaluating quoted f-strings
Fixes #1844.
2020-04-02 08:34:15 -04:00
Joseph Egan f1de9050ea Reduce scope of symbol replacement for anaphoric macros 2020-03-31 11:18:48 -04:00
redraiment 2b40dea54d Fixes #1875: parse-args requires values to be representable as Hy models
* Update argument spec parse logic of parse-args function.
* Update test case of parse-args function.
* Update document of parse-args function.
* Describe the change in NEWS file.
2020-03-31 10:44:26 -04:00
Kodi Arfer 80eb27906a Update copyright years 2020-01-09 14:05:12 -05:00
Kodi Arfer 0e55d7d955 Allow more than two arguments to `in` or `not-in` 2020-01-09 14:04:12 -05:00
Kodi Arfer 170febb2e8 Implement chained comparisons 2020-01-09 14:04:12 -05:00
Kodi Arfer 2074e4bd2f Change the indentation of a test 2020-01-09 14:04:12 -05:00
Kodi Arfer cfbc45a586 Test that `ap-each` returns `None` 2019-12-21 14:36:25 -05:00
Kodi Arfer e57bbb92db Use a gensym for `it` in anaphoric macros 2019-12-21 14:36:25 -05:00
Kodi Arfer bafd919605 Clean up the implementations of anaphoric macros 2019-12-21 14:36:24 -05:00
Kodi Arfer b12c930444 Allow non-constant `n` in `ap-dotimes` 2019-12-21 11:10:30 -05:00
Kodi Arfer f6b9ba9b8f Fix some bugs in `ap-reduce` 2019-12-15 14:55:31 -05:00
Kodi Arfer 592c681261 Clean up native-tests.extra.anaphoric 2019-12-15 14:55:31 -05:00
Kodi Arfer 8872f0b44c Remove hy.contrib.multi 2019-11-18 20:06:17 -05:00
Adam Porter 0f3d256ebf Add: parse-args function
Closes #1719.
2019-10-30 10:16:45 -05:00
Ryan Gonzalez e1ab140a6e Implement the of macro 2019-10-08 09:40:15 -05:00
Ryan Gonzalez 1865feb7d6 Implement PEP 3107 & 526 annotations (closes #1794) 2019-10-08 09:40:15 -05:00
Kodi Arfer e6aac2308a Update tests for tuple HySequences 2019-08-18 09:43:02 -04:00
Kodi Arfer 9ddb3b1031 Rewrite `_with` 2019-08-18 09:43:02 -04:00
Kodi Arfer bc524daee8 Remove dead code 2019-08-18 09:43:02 -04:00
Kodi Arfer a9c6ab6391 Remove native_tests/mathematics
It should now be fully redundant with native_tests/operators.
2019-08-08 15:12:03 -04:00
Kodi Arfer 6fb6eefd6b Make augmented assignment operators variadic 2019-08-08 15:12:03 -04: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 36708e8e99 Fix a test for Python 3.8.0b1
`int`, among other types, no longer has a `__str__` method, so `(str '3)` now returns "(HyInteger 3)" instead of "3".
2019-06-25 12:41:46 -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 67def3359f Remove Python 2 support from hy.importer 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 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 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 efed0b6c23 Move Python 3.5 tests to `py3_only_tests.hy` 2019-03-17 18:33:06 -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 9e62903d8a Add special exception and handling for wrapper errors 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
Kodi Arfer 62638b44a3 Update copyright years 2019-02-07 08:57:35 -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 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
Jakub Wilk 28504ba85d Catch IndentationError in isidentifier()
Fixes:

    >>> from hy._compat import isidentifier
    >>> isidentifier(u"  0\n 0")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "hy/_compat.py", line 47, in isidentifier
        tokens = list(T.generate_tokens(StringIO(x).readline))
      File "/usr/lib/python2.7/tokenize.py", line 374, in generate_tokens
        ("<tokenize>", lnum, pos, line))
      File "<tokenize>", line 2
        0
        ^
    IndentationError: unindent does not match any outer indentation level
2018-11-27 17:15:21 -05:00
Brandon T. Willard 010986e8ca Implement minimal macro namespacing and add tests
This commit adds just enough namespacing to resolve a macro first in the macro's
defining module's namespace (i.e. the module assigned to the `HyASTCompiler`),
then in the namespace/module it's evaluated in.  Namespacing is accomplished by
adding a `module` attribute to `HySymbol`, so that `HyExpression`s can be
checked for this definition namespace attribute and their car symbol resolved
per the above.

As well, a couple tests have been added that cover
- the loading of module-level macros
  - e.g. that only macros defined in the `require`d module are added
- the AST generated for `require`
  - using macros loaded from modules imported via bytecode
- the non-local macro namespace resolution described above
  - a `require`d macro that uses a macro `require` exclusively in its
    module-level namespace
- and that (second-degree `require`d) macros can reference variables within
  their module-level namespaces.

Closes hylang/hy#1268, closes hylang/hy#1650, closes hylang/hy#1416.
2018-11-08 22:57:17 -06:00