localVar warning. Close #112
This commit is contained in:
@@ -66,7 +66,8 @@ typedef KissState = {
|
|||||||
localVarsInScope:Array<Var>,
|
localVarsInScope:Array<Var>,
|
||||||
conversionStack:Array<ReaderExp>,
|
conversionStack:Array<ReaderExp>,
|
||||||
stateChanged:Bool,
|
stateChanged:Bool,
|
||||||
printFieldsCalls:Array<ReaderExp>
|
printFieldsCalls:Array<ReaderExp>,
|
||||||
|
localVarCalls:Array<ReaderExp>
|
||||||
};
|
};
|
||||||
#end
|
#end
|
||||||
|
|
||||||
@@ -186,7 +187,8 @@ class Kiss {
|
|||||||
localVarsInScope: [],
|
localVarsInScope: [],
|
||||||
conversionStack: [],
|
conversionStack: [],
|
||||||
stateChanged: false,
|
stateChanged: false,
|
||||||
printFieldsCalls: []
|
printFieldsCalls: [],
|
||||||
|
localVarCalls: []
|
||||||
};
|
};
|
||||||
|
|
||||||
k.doc = (form:String, minArgs:Null<Int>, maxArgs:Null<Int>, expectedForm = "", doc = "") -> {
|
k.doc = (form:String, minArgs:Null<Int>, maxArgs:Null<Int>, expectedForm = "", doc = "") -> {
|
||||||
@@ -751,5 +753,15 @@ class Kiss {
|
|||||||
public static function convert(k:KissState, exp:ReaderExp) {
|
public static function convert(k:KissState, exp:ReaderExp) {
|
||||||
return readerExpToHaxeExpr(exp, k);
|
return readerExpToHaxeExpr(exp, k);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function localVarWarning(k:KissState) {
|
||||||
|
if (k.localVarCalls.length > 0 && k.printFieldsCalls.length > 0) {
|
||||||
|
for (call in k.localVarCalls) {
|
||||||
|
KissError.warnFromExp(call, 'variables declared with with `localVar` are incompatible with printAll macros. Use `let` instead.');
|
||||||
|
}
|
||||||
|
k.localVarCalls = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
@@ -1356,6 +1356,7 @@ class Macros {
|
|||||||
|
|
||||||
function printAll (locals:Bool, nullCheck:Bool, wholeExp:ReaderExp, exps:Array<ReaderExp>, k:KissState) {
|
function printAll (locals:Bool, nullCheck:Bool, wholeExp:ReaderExp, exps:Array<ReaderExp>, k:KissState) {
|
||||||
k.printFieldsCalls.push(wholeExp);
|
k.printFieldsCalls.push(wholeExp);
|
||||||
|
k.localVarWarning();
|
||||||
var b = wholeExp.expBuilder();
|
var b = wholeExp.expBuilder();
|
||||||
var list = if (locals) k.localVarsInScope else k.varsInScope;
|
var list = if (locals) k.localVarsInScope else k.varsInScope;
|
||||||
if (!locals && k.inStaticFunction) {
|
if (!locals && k.inStaticFunction) {
|
||||||
|
@@ -188,6 +188,8 @@ class SpecialForms {
|
|||||||
|
|
||||||
k.doc("deflocal", 2, 3, "(localVar <optional :type> <variable> <optional: &mut> <value>)");
|
k.doc("deflocal", 2, 3, "(localVar <optional :type> <variable> <optional: &mut> <value>)");
|
||||||
map["deflocal"] = (wholeExp:ReaderExp, args:Array<ReaderExp>, k:KissState) -> {
|
map["deflocal"] = (wholeExp:ReaderExp, args:Array<ReaderExp>, k:KissState) -> {
|
||||||
|
k.localVarCalls.push(wholeExp);
|
||||||
|
k.localVarWarning();
|
||||||
EVars(toVars(args[0], args[1], k)).withMacroPosOf(wholeExp);
|
EVars(toVars(args[0], args[1], k)).withMacroPosOf(wholeExp);
|
||||||
};
|
};
|
||||||
renameAndDeprecate("deflocal", "localVar");
|
renameAndDeprecate("deflocal", "localVar");
|
||||||
|
Reference in New Issue
Block a user