Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some Unicode characters are replaced with a newline #825

Closed
dokutan opened this issue Jan 23, 2024 · 1 comment
Closed

Some Unicode characters are replaced with a newline #825

dokutan opened this issue Jan 23, 2024 · 1 comment

Comments

@dokutan
Copy link

dokutan commented Jan 23, 2024

When coconut encounters a string literal containing either an unescaped paragraph separator (U+2029) or a line separator (U+2028), these characters are replaced by a newline. There could be other codepoints with this problem, as i haven't tested many. I have tested this behaviour with python 3.11 and coconut 3.0.4 on python 3.11.
Additionally this causes a CoconutSyntaxError: linebreak in non-multi-line string if the string is not a multi-line string.

To reproduce:

printf "print('''\u2029'''=='''\n''')" | coconut   # True
printf "print('''\u2029'''=='''\n''')" | python    # False
@evhub evhub added this to the v3.1.0 milestone Jan 23, 2024
@evhub
Copy link
Owner

evhub commented Jan 23, 2024

I think this should be fixed by the same fix as for #818. so it should working on coconut-develop right now (pip install -U coconut-develop to get the fix).

@evhub evhub closed this as completed Jan 23, 2024
evhub added a commit that referenced this issue Jan 23, 2024
@evhub evhub mentioned this issue Mar 1, 2024
evhub added a commit that referenced this issue Mar 2, 2024
See Coconut's
[documentation](http://coconut.readthedocs.io/en/develop/DOCS.html) for
more information on all of the features listed below.

Language changes:
* #814: Changes to statement lambda scoping rules, including capturing
names introduced in the surrounding expression.
* #618: Changes to handling of pattern-matching function defaults
including support for e.g. `match def f(x, y=x) = (x, y)`.
* #809: New array concatenation implicit partials (e.g. `[. ; a]`).
* #823: New `(x := .)` implicit partial syntax (only available in
pipes).
* #807: New `lift_apart` built-in combinator.
* #813: New `(if)` operator function.
* #826 (thanks @JayXon!): Better universalization and `fmap` support for
`bytes` and `bytearray`.
* #816: Support for `xarray` to match existing `numpy`/`pandas` support.
* #817: New `to` argument to `all_equal`.
* #821 (thanks @GolfingSuccess!): Expanded implicit function application
syntax to support string literal methods.

Compiler changes:
* #799: `coconut-run` and `coconut --run` now work on packages rather
than just files.
* #812: Better formatting of Coconut exceptions.

Bugfixes:
* #810: Fixed an issue compiling certain syntax constructs in the
Coconut Jupyter kernel.
* #818, #825 (thanks @kg583, @dokutan!): Fixed parsing of different
Unicode line break characters.
* #822 (thanks @JayXon!): Fixed parsing of Unicode backward pipe
operators.
* #819, #820 (thanks @kg583!): Fixed some incompatibilities between
Python and Coconut syntax.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants