Commit Graph

1700 Commits

Author SHA1 Message Date
Bob Tolbert
ea5eba5916 Second part of the fix for yield inside a try-finally
As noted in #600, Python 3 allows a return inside a generator
method, that raises a StopIteration and passes the return value
inside the 'value' attr of the exception.

To allow this behaviour we simple set 'contains_yield' while compiling
'yield', thus allowing a return statement, but only for Python 3. Then
when compiling the try-except, we check for contains_yield to decide
whether there will be a return.

This allows code like:

(defn gen []
  (yield 3)
  "goodbye")

to compile in both Py2 and Py3. The return value is simply ignored in
Python 2.

hy2py in Python 2 gives:

def g():
    yield 3L
    u'goodbye'

while hy2py in Python 3 gives:

def g():
    yield 3
    return 'goodbye'

Turns out return in yield started in Python 3.3
2014-06-22 14:59:29 -06:00
Bob Tolbert
fb7c7e5794 Fix #607, remove return from try when there is a generator inside
Added the contains_yield attr to 'try' when the body it is
wrapping contains 'yeild'.

Should also address #600 and #563
2014-06-22 10:50:00 -06:00
Tuukka Turto
f8e48628ea Merge branch 'master' into pr/611 2014-06-12 22:58:04 +03:00
Allison Kaptur
26307d2612 (force Travis CI to rebuild) 2014-06-09 16:57:57 -04:00
Allison Kaptur
b56a03750f revert yield-from test
Yield-from was introduced in 3.3, so we have to catch the compile error that's raise in 3.2. :(
2014-06-09 16:33:32 -04:00
Allison Kaptur
a2f917aba3 raise hy compile error on Py2.x for raise from 2014-06-09 16:33:16 -04:00
James King
277028cdd5 Remove HyLambdaListKeyword from the parser
It's not a syntactic element and doesn't belong in the parser. Parsing
lambda lists is now handled by the compiler alone.
2014-06-03 21:36:49 -04:00
James King
8e173937c3 Add shadow.hy to core
This new core module allows us to shadow the builtin Python operators so
they may be passed to sequence functions that expect functions:

    => (map / [1 2 3 4 5])
    [1.0, 0.5, 0.3333333333333333, 0.25]
2014-05-26 21:50:47 -04:00
Abhishek L
c2982a9ae3 anaphoric: fix first & last when conditions fail
* hy/contrib/anaphoric.hy: `ap-first` and `ap-last` now handle cases
  when failure happens for the predicate. Thanks to @tutorto for
  reporting this bug
2014-05-24 17:48:46 +05:30
Abhishek L
1da6d0af43 docs: fix decorator to reflect multiple decorators
* docs/language/api.rst: the `with-decorator' builtin supports multiple
  decorators which it applies in order. Docs are updated to reflect this
2014-05-24 17:35:39 +05:30
Berker Peksag
0f0c4227b6 Merge pull request #604 from Duta/master
Minor typo
2014-05-17 22:29:44 +03:00
Bertie Wheen
02fa251175 Minor typo
Sorry for tiny commits :P
2014-05-17 19:04:41 +01:00
Morten Linderud
2806cb0b05 Merge pull request #603 from Duta/patch-1
Rephrased confusing comment
2014-05-17 19:48:11 +02:00
Bertie Wheen
a102a268a9 Rephrased confusing comment 2014-05-17 18:46:01 +01:00
John MacKenzie
15ad6cb998 defmacro/g! and HyObject#startswith
Currently, defmacro/g! doesn't respond well when it comes across a
HyObject that doesn't respond to the instance method startswith (e.g.
HyInteger, HyFloat, etc.). This updates defmacro/g! to be a little
safer when searching for the gensyms it needs to create.
2014-05-15 01:51:38 +00:00
Tuukka Turto
b5a058a3bc Merge branch 'master' into pr/599 2014-05-14 09:22:55 +03:00
Tuukka Turto
f6c491d35c Merge branch 'master' into pr/585 2014-05-14 09:02:23 +03:00
Abhishek L
f326975d7c Make ci builds faster by splitting requirements
Make travis builds faster by splitting requirements into
requirements-travis.txt, which contains all the requirements necessary
for running tests, documentation related packages are omitted and added
as a part of requirements-dev.txt

Additionally .travis.yml is modified to cache pip downloads, though this
feature is yet to be rolled out for the free tier
2014-05-13 22:47:19 +05:30
Tuukka Turto
726d1735db Merge branch 'master' into pr/571
Conflicts:
	AUTHORS
	tests/native_tests/core.hy
2014-05-13 09:32:51 +03:00
Paul Tagliamonte
2b08674c88 Merge branch 'master' into pr/522 2014-05-12 22:10:09 -04:00
Paul Tagliamonte
1ae666e096 Merge branch 'master' into pr/565 2014-05-12 20:43:09 -04:00
Paul Tagliamonte
ca0271df95 Merge branch 'master' into pr/574
Conflicts:
	AUTHORS
2014-05-12 20:15:51 -04:00
Paul Tagliamonte
1696ddecac Merge branch 'master' into pr/578 2014-05-12 20:14:37 -04:00
Abhishek L
18a6346d42 Display python version & platform at repl startup
*hy/cmdline.py: At the repl startup the Python implementation & version
 is displayed along with the platform(os) information
2014-05-07 01:04:07 +05:30
Berker Peksag
ced072bc8d Merge pull request #590 from paultag/paultag/dockerfile
Add dockerfile.
2014-05-06 09:04:56 +03:00
Berker Peksag
4ac6da22f1 Merge pull request #592 from theanalyst/fix/typo
the mega typo fix commit
2014-05-06 08:49:01 +03:00
Abhishek L
4f74652c73 the mega typo fix commit
Wow! much typos! such fix!
2014-05-05 23:47:14 +05:30
Paul Tagliamonte
ec8d5aefe7 Add dockerfile. 2014-05-04 17:28:08 -04:00
Christian Weilbach
01ee54cf62 Merge https://github.com/hylang/hy
Fix butlast and test for disassemble.

Conflicts:
	hy/core/language.hy
2014-05-03 16:33:39 +02:00
Morten Linderud
6d095b452c Merge pull request #587 from theanalyst/docs/contributing
Move contributing from hacking docs to repo root
2014-05-03 16:29:51 +02:00
Abhishek L
f2beef6e70 Move contributing from hacking docs to repo root
A CONTRIBUTING.rst is added to the root of the repo, as Github
automatically recognizes this for incoming PRs
(ref: https://github.com/blog/1184-contributing-guidelines)

Most of the information is directly borrowed from the existing hacking
docs, which is restructured to refer to this file instead for
contribution guidelines
2014-05-03 17:37:30 +05:30
Tuukka Turto
de65b7baf8 Merge branch 'master' into pr/586 2014-05-02 21:06:20 +03:00
Kartik Mistry
909981dd23 Typo fixes in comments
Signed-off-by: Kartik Mistry <kartik.mistry@gmail.com>
2014-05-02 21:31:51 +05:30
Abhishek L
ad0191f343 Merge master onto pr/580 2014-05-02 19:37:54 +05:30
Tuukka Turto
d539f73d4d correct ..versionadded:: for defmain
my mistake, should have spotted before merging and pushing
2014-05-02 12:27:19 +03:00
Tuukka Turto
b1a928037e Merge branch 'master' into pr/526 2014-05-02 10:34:37 +03:00
Allison Kaptur
caa53fb095 Tests for explicit exception chaining
This also breaks out the PY3 only tests into their own file.  We need to do this because raise from is a syntax error in PY2, so we can't rely on the previous hack of catching a HyCompileError - it would compile fine through Hy and then be a syntax error in Python.
2014-05-01 16:33:10 -04:00
Allison Kaptur
1499d49878 Add support for explicit exception chaining
A la PEP 3134
2014-05-01 16:30:40 -04:00
Matthew Wampler-Doty
5b4c431b81 Enforcing dynamic scope behavior in let 2014-04-30 10:38:49 -05:00
Matthew Wampler-Doty
914a18f5b0 Moving math.hy so it doesn't clash with library math module; band aid around issue #583 (PEP 328 non-compliance) 2014-04-30 10:38:07 -05:00
Tuukka Turto
ddcf192da4 Merge branch 'master' into pr/524 2014-04-30 10:16:30 +03:00
Berker Peksag
229d782ce9 Enable Python 3.4 on Travis CI. 2014-04-30 09:24:19 +03:00
Berker Peksag
cdea12b276 Make hy2py public. 2014-04-30 01:51:21 +03:00
Matthew Wampler-Doty
7b5cb390ab setv no longer creates variables with '.' in their names
FIXES #577
2014-04-29 09:22:55 -05:00
pyos
f02e044719 Move the documentation for zipwith to the correct place. 2014-04-29 18:04:21 +04:00
pyos
8e4b21103c Reimplement some built-ins in terms of the standard library.
As a result:

  * functions such as `nth` should work correctly on iterators;
  * `nth` will raise `IndexError` (in a fashion consistent with `get`)
    when the index is out of bounds;
  * `take`, etc. will raise `ValueError` instead of returning
    an ambiguous value if the index is negative;
  * `map`, `zip`, `range`, `input`, `filter` work the same way (Py3k one)
    on both Python 2 and 3 (see #523 and #331).
2014-04-29 18:03:43 +04:00
Tuukka Turto
bdd8e3c82e merge #547 - keyword? 2014-04-28 21:59:33 +03:00
Tuukka Turto
01fa9d6a3c document set-comp 2014-04-28 21:35:28 +03:00
Tuukka Turto
3a66a2d1be document dict-comp and genexpr 2014-04-28 21:09:06 +03:00
Allison Kaptur
3f9ae9122e Raise exceptions when no handlers are provided.
Also small DRYing in try handling.

Previously, writing a bare (try (foo)) would invoke Pokemon
exception catching (gotta catch 'em all) instead of the correct
behavior, which is to raise the exception if no handler is provided.

Note that this is a cute feature of Hy, as a `try` with no `except`
is a syntax error.  We avoid the syntax error here because we don't
use Python's compiler, which is the only thing that can throw
Syntax Errors.  :D

Fixes #555.
2014-04-28 03:08:30 +03:00