Skip to content

Commit df50529

Browse files
authored
Merge pull request #2215 from mgreter/bugfix/issue-2205
Fix calling overloaded stub functions with rest arguments
2 parents efa6496 + b8cf94c commit df50529

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/eval.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -827,8 +827,15 @@ namespace Sass {
827827

828828
if (def->is_overload_stub()) {
829829
std::stringstream ss;
830-
ss << full_name
831-
<< args->length();
830+
size_t L = args->length();
831+
// account for rest arguments
832+
if (args->has_rest_argument() && args->length() > 0) {
833+
// get the rest arguments list
834+
List* rest = dynamic_cast<List*>(args->last()->value());
835+
// arguments before rest argument plus rest
836+
if (rest) L += rest->length() - 1;
837+
}
838+
ss << full_name << L;
832839
full_name = ss.str();
833840
std::string resolved_name(full_name);
834841
if (!env->has(resolved_name)) error("overloaded function `" + std::string(c->name()) + "` given wrong number of arguments", c->pstate());

0 commit comments

Comments
 (0)