cbaggers / varjo

Lisp to GLSL Language Translator
BSD 2-Clause "Simplified" License
220 stars 23 forks source link

Param name must not be the same as a constant variable #210

Closed cbaggers closed 5 years ago

cbaggers commented 6 years ago

Currently this is accepted

(defun-g remap2 ((t :vec2) (a :vec2) (b :vec2))
  (clamp (/ (- t a) (- b a)) 0.0 1.0))

Throw a sensible error

cbaggers commented 5 years ago

From the CLHS http://www.lispworks.com/documentation/HyperSpec/Body/03_da.htm A var or supplied-p-parameter must be a symbol that is not the name of a constant variable.

cbaggers commented 5 years ago
CL-USER> (do-symbols (v)
           (when (constantp v)
             (print v)))

MOST-POSITIVE-SHORT-FLOAT 
SHORT-FLOAT-NEGATIVE-EPSILON 
LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT 
MOST-POSITIVE-SINGLE-FLOAT 
LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT 
DOUBLE-FLOAT-NEGATIVE-EPSILON 
LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT 
LAMBDA-LIST-KEYWORDS 
LONG-FLOAT-EPSILON 
CALL-ARGUMENTS-LIMIT 
BOOLE-ANDC2 
LEAST-POSITIVE-SHORT-FLOAT 
LEAST-NEGATIVE-DOUBLE-FLOAT 
LEAST-POSITIVE-LONG-FLOAT 
LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT 
SINGLE-FLOAT-EPSILON 
BOOLE-1 
MOST-NEGATIVE-SINGLE-FLOAT 
BOOLE-ORC1 
LAMBDA-PARAMETERS-LIMIT 
BOOLE-AND 
MOST-NEGATIVE-DOUBLE-FLOAT 
MOST-NEGATIVE-FIXNUM 
LEAST-POSITIVE-SINGLE-FLOAT 
LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT 
MOST-POSITIVE-DOUBLE-FLOAT 
BOOLE-ANDC1 
BOOLE-C2 
BOOLE-CLR 
BOOLE-ORC2 
BOOLE-IOR 
BOOLE-XOR 
MOST-POSITIVE-LONG-FLOAT 
BOOLE-NOR 
INTERNAL-TIME-UNITS-PER-SECOND 
LEAST-POSITIVE-DOUBLE-FLOAT 
MOST-NEGATIVE-LONG-FLOAT 
LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT 
DOUBLE-FLOAT-EPSILON 
ARRAY-DIMENSION-LIMIT 
LEAST-NEGATIVE-SHORT-FLOAT 
SHORT-FLOAT-EPSILON 
BOOLE-NAND 
NIL 
PI 
BOOLE-2 
SINGLE-FLOAT-NEGATIVE-EPSILON 
LEAST-NEGATIVE-SINGLE-FLOAT 
ARRAY-TOTAL-SIZE-LIMIT 
LEAST-POSITIVE-NORMALIZED-LONG-FLOAT 
MOST-POSITIVE-FIXNUM 
LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT 
T 
ARRAY-RANK-LIMIT 
BOOLE-C1 
LONG-FLOAT-NEGATIVE-EPSILON 
BOOLE-SET 
MOST-NEGATIVE-SHORT-FLOAT 
CHAR-CODE-LIMIT 
LEAST-NEGATIVE-LONG-FLOAT 
MULTIPLE-VALUES-LIMIT 
BOOLE-EQV 
LONG-FLOAT-POSITIVE-INFINITY 
DOUBLE-FLOAT-NEGATIVE-INFINITY 
SINGLE-FLOAT-NEGATIVE-INFINITY 
DOUBLE-FLOAT-POSITIVE-INFINITY 
MOST-POSITIVE-WORD 
SHORT-FLOAT-POSITIVE-INFINITY 
SHORT-FLOAT-NEGATIVE-INFINITY 
LONG-FLOAT-NEGATIVE-INFINITY 
SINGLE-FLOAT-POSITIVE-INFINITY 
cbaggers commented 5 years ago

I think, with stemcells and stuff, it's safe to disallow any symbol that is #'constantp

cbaggers commented 5 years ago

fixed on master