From debbde6849969db3441a06e8dee6d3899951f8ec Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 7 Nov 2019 13:37:20 -0500 Subject: [PATCH] Validate the number of arguments passed to local function calls --- CHANGELOG.md | 2 +- scheme/cyclone/cps-optimizations.sld | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e4355b5..49f86479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ Features - Faster record type constructors - TODO: is arg # validation sufficient?? + - During compilation, validate the number of arguments passed to local function calls. ## 0.11.5 - October 30, 2019 diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index 12666314..2b0777e4 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -2409,9 +2409,10 @@ ;; Extract lambda definition (var (adb:get/default (car ast) #f)) (lam* (adbv:assigned-value var)) - ((pair? lam*)) - ;; Assigned value is boxed in a cell, extract it - (lam (car lam*)) + ;; If assigned value is boxed in a cell, extract it + (lam (if (pair? lam*) + (car lam*) + lam*)) ((ast:lambda? lam)) (formals-type (ast:lambda-formals-type lam)) ((equal? 'args:fixed formals-type)) ;; Could validate fixed-with-varargs, too