From 3dd0be18b242a872224f6e141c4d22277b1b46b4 Mon Sep 17 00:00:00 2001 From: Nathan Weizenbaum Date: Fri, 14 May 2010 11:11:35 -0700 Subject: [PATCH] [Sass] Fix invalid-comma errors for functions. Closes gh-171 --- doc-src/SASS_CHANGELOG.md | 5 +++++ lib/sass/script/parser.rb | 3 ++- test/sass/script_test.rb | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc-src/SASS_CHANGELOG.md b/doc-src/SASS_CHANGELOG.md index 66358e4a..8082536d 100644 --- a/doc-src/SASS_CHANGELOG.md +++ b/doc-src/SASS_CHANGELOG.md @@ -3,6 +3,11 @@ * Table of contents {:toc} +## 3.0.4 (Unreleased) + +* Raise an informative error when function arguments have a mispaced comma, + as in `foo(bar, )`. + ## 3.0.3 [Tagged on GitHub](http://github.com/nex3/haml/commit/3.0.3). diff --git a/lib/sass/script/parser.rb b/lib/sass/script/parser.rb index eb479896..aa4eda0f 100644 --- a/lib/sass/script/parser.rb +++ b/lib/sass/script/parser.rb @@ -265,7 +265,7 @@ RUBY def fn_arglist return unless e = equals return [e] unless try_tok(:comma) - [e, *fn_arglist] + [e, *assert_expr(:fn_arglist)] end def arglist @@ -334,6 +334,7 @@ RUBY :string => "string", :default => "expression (e.g. 1px, bold)", :arglist => "mixin argument", + :fn_arglist => "function argument", } def assert_expr(name) diff --git a/test/sass/script_test.rb b/test/sass/script_test.rb index b00b279a..afcb8f84 100755 --- a/test/sass/script_test.rb +++ b/test/sass/script_test.rb @@ -329,6 +329,11 @@ SASS assert_equal "#2", resolve('"##{1 + 1}"') end + def test_misplaced_comma_in_funcall + assert_raise(Sass::SyntaxError, + 'Invalid CSS after "foo(bar, ": expected function argument, was ")"') {eval('foo(bar, )')} + end + private def resolve(str, opts = {}, environment = env)