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

Parser: give syntax error on comma after newline in argument list #6514

Merged
merged 1 commit into from Aug 29, 2018

Conversation

Projects
None yet
4 participants
@asterite
Contributor

asterite commented Aug 9, 2018

Fixes #6513

Code like this:

foo(x
, y)

currently doesn't give a syntax error, but it should (like in Ruby). We can of course discuss whether it should really be a syntax error or not. My reasoning is that the comma signals that more arguments are coming, and it's confusing that the comma starts the next line. For example, if we remove the parentheses:

foo x
, y

that won't compile. So code with and without parentheses should look more or less the same (maybe this is a weaker argument, but still...).

I believe in many other languages this is a syntax error too.

This of course is a breaking change, but I doubt there are many out there that write code like this.

This syntax option was available for many other things, like method arguments, but not available in some other things, like array literals. Now it's unified to give a syntax error.

@asterite

This comment has been minimized.

Contributor

asterite commented Aug 9, 2018

Hmmm... actually, Java, C# and Python allow such syntax. But Ruby and Go don't. So I guess it's a matter of preference.

Right now it's behaving in a way or another depending on the case, so it's not unified. Let's use this PR to discuss what should we do with this. Maybe this PR is fine, it hurts my eyes a bit to see that stray comma there :-P

@asterite asterite force-pushed the asterite:bug/6513-syntax-error-comma-after-newline branch from 759d686 to d9bdf9e Aug 9, 2018

@asterite asterite force-pushed the asterite:bug/6513-syntax-error-comma-after-newline branch from d9bdf9e to fe6c135 Aug 9, 2018

@hugoabonizio

This comment has been minimized.

Contributor

hugoabonizio commented Aug 10, 2018

This syntax (leading comma) was used in JS community, but isn't used widely nowadays. I guess everybody realised it's ugly.

@RX14

RX14 approved these changes Aug 11, 2018

Judging by the silence on this issue, this is fine to remove

@sdogruyol

I believe this is a good change which makes the syntax easier to understand and more uniform. Let's go for it 👍
Thank you @asterite 🙏

@RX14 RX14 merged commit 6103f17 into crystal-lang:master Aug 29, 2018

4 checks passed

ci/circleci: test_darwin Your tests passed on CircleCI!
Details
ci/circleci: test_linux Your tests passed on CircleCI!
Details
ci/circleci: test_linux32 Your tests passed on CircleCI!
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details

@RX14 RX14 added this to the 0.27.0 milestone Aug 29, 2018

@RX14 RX14 added the kind:feature label Aug 29, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment