diff --git a/src/kiss/FieldForms.hx b/src/kiss/FieldForms.hx index e8c51df..de217e1 100644 --- a/src/kiss/FieldForms.hx +++ b/src/kiss/FieldForms.hx @@ -20,6 +20,15 @@ class FieldForms { public static function builtins() { var map:Map = []; + function renameAndDeprecate(oldName:String, newName:String) { + var form = map[oldName]; + map[oldName] = (wholeExp, args, k) -> { + CompileError.warnFromExp(wholeExp, '$oldName has been renamed to $newName and deprecated'); + form(wholeExp, args, k); + } + map[newName] = form; + } + map["defvar"] = varOrProperty.bind("defvar"); map["defprop"] = varOrProperty.bind("defprop"); diff --git a/src/kiss/Macros.hx b/src/kiss/Macros.hx index eb203a6..55c9272 100644 --- a/src/kiss/Macros.hx +++ b/src/kiss/Macros.hx @@ -22,6 +22,15 @@ class Macros { public static function builtins() { var macros:Map = []; + function renameAndDeprecate(oldName:String, newName:String) { + var form = macros[oldName]; + macros[oldName] = (wholeExp, args, k) -> { + CompileError.warnFromExp(wholeExp, '$oldName has been renamed to $newName and deprecated'); + form(wholeExp, args, k); + } + macros[newName] = form; + } + macros["load"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { wholeExp.checkNumArgs(1, 1, '(load "[file]")'); switch (args[0].def) { diff --git a/src/kiss/SpecialForms.hx b/src/kiss/SpecialForms.hx index 333388b..ae42bbe 100644 --- a/src/kiss/SpecialForms.hx +++ b/src/kiss/SpecialForms.hx @@ -20,6 +20,15 @@ class SpecialForms { public static function builtins() { var map:Map = []; + function renameAndDeprecate(oldName:String, newName:String) { + var form = map[oldName]; + map[oldName] = (wholeExp, args, k) -> { + CompileError.warnFromExp(wholeExp, '$oldName has been renamed to $newName and deprecated'); + form(wholeExp, args, k); + } + map[newName] = form; + } + map["begin"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { // Sometimes empty blocks are useful, so a checkNumArgs() seems unnecessary here for now.