Add Context.buildFields to print macros. Close #111
This commit is contained in:
@@ -281,6 +281,26 @@ class Kiss {
|
||||
});
|
||||
}
|
||||
#if macro
|
||||
static function addContextFields(k:KissState, useClassFields:Bool) {
|
||||
if (useClassFields) {
|
||||
k.fieldList = Context.getBuildFields();
|
||||
for (field in k.fieldList) {
|
||||
k.fieldDict[field.name] = field;
|
||||
switch (field.kind) {
|
||||
case FVar(t, e) | FProp(_, _, t, e):
|
||||
var v = {
|
||||
name: field.name,
|
||||
type: t,
|
||||
expr: e
|
||||
};
|
||||
k.addVarInScope(v, false, field.access.indexOf(AStatic) != -1);
|
||||
default:
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Build macro: add fields to a class from a corresponding .kiss file
|
||||
**/
|
||||
@@ -308,12 +328,7 @@ class Kiss {
|
||||
if (k == null)
|
||||
k = defaultKissState(context);
|
||||
|
||||
if (useClassFields) {
|
||||
k.fieldList = Context.getBuildFields();
|
||||
for (field in k.fieldList) {
|
||||
k.fieldDict[field.name] = field;
|
||||
}
|
||||
}
|
||||
k.addContextFields(useClassFields);
|
||||
k.loadingDirectory = loadingDirectory;
|
||||
|
||||
var topLevelBegin = load(kissFile, k);
|
||||
@@ -423,12 +438,7 @@ class Kiss {
|
||||
if (k == null)
|
||||
k = defaultKissState(context);
|
||||
|
||||
if (useClassFields) {
|
||||
k.fieldList = Context.getBuildFields();
|
||||
for (field in k.fieldList) {
|
||||
k.fieldDict[field.name] = field;
|
||||
}
|
||||
}
|
||||
k.addContextFields(useClassFields);
|
||||
|
||||
for (file in kissFiles) {
|
||||
build(file, k, false, context);
|
||||
|
@@ -403,8 +403,13 @@ class BasicTestCase extends Test {
|
||||
_testWithTempSet();
|
||||
}
|
||||
|
||||
function testPrintMacrosCheck() {
|
||||
_testPrintMacrosCheck();
|
||||
var nullDefinedInHaxe = null;
|
||||
static var staticNullDefinedInHaxe = null;
|
||||
|
||||
function testPrintMacros() {
|
||||
// TODO Test the warnings
|
||||
_testPrintMacrosInstance();
|
||||
_testPrintMacrosStatic();
|
||||
}
|
||||
|
||||
function testTypeCase() {
|
||||
|
@@ -768,14 +768,54 @@ From:[(assert false (+ \"false \" \"should \" \"have \" \"been \" \"true\"))]" m
|
||||
(assertEquals 3 v2))
|
||||
(Assert.pass))
|
||||
|
||||
(var anotherNullToPrint null)
|
||||
(function _testPrintMacrosCheck []
|
||||
(printAllNulls)
|
||||
(var t "bad")
|
||||
(let [u "good"]
|
||||
(localVar v "bad")
|
||||
(printLocalNulls))
|
||||
(Assert.pass))
|
||||
(var &mut savedPrints [])
|
||||
(function savePrint []
|
||||
(set savedPrints [])
|
||||
->:Void [:String s] (savedPrints.push s))
|
||||
|
||||
(prop anotherNullToPrint null)
|
||||
(var anotherStaticNullToPrint null)
|
||||
|
||||
(method _testPrintMacrosInstance []
|
||||
(withTempSet [Prelude.printStr (savePrint)]
|
||||
(printAllNulls)
|
||||
(Assert.isTrue (savedPrints.contains "anotherNullToPrint: null"))
|
||||
(Assert.isTrue (savedPrints.contains "anotherStaticNullToPrint: null"))
|
||||
(Assert.isTrue (savedPrints.contains "nullDefinedInHaxe: null"))
|
||||
(Assert.isTrue (savedPrints.contains "staticNullDefinedInHaxe: null"))
|
||||
|
||||
// TODO This statement prints a warning at compile-time, which won't
|
||||
// appear in savedPrints, so it's harder to test...
|
||||
(prop tp "bad")
|
||||
|
||||
(let [u null]
|
||||
// TODO this statement should print a warning at compile-time (#112)
|
||||
(localVar v "bad")
|
||||
|
||||
(set savedPrints [])
|
||||
(printLocalNulls)
|
||||
(Assert.isFalse (savedPrints.contains "anotherNullToPrint: null"))
|
||||
(Assert.isFalse (savedPrints.contains "anotherStaticNullToPrint: null"))
|
||||
(Assert.isTrue (savedPrints.contains "u: null")))))
|
||||
|
||||
(function _testPrintMacrosStatic []
|
||||
(withTempSet [Prelude.printStr (savePrint)]
|
||||
(printAllNulls)
|
||||
(Assert.isTrue (savedPrints.contains "anotherStaticNullToPrint: null"))
|
||||
(Assert.isTrue (savedPrints.contains "staticNullDefinedInHaxe: null"))
|
||||
|
||||
// TODO This statement prints a warning at compile-time, which won't
|
||||
// appear in savedPrints, so it's harder to test...
|
||||
(var ts "bad")
|
||||
|
||||
(let [u null]
|
||||
// TODO this statement should print a warning at compile-time (#112)
|
||||
(localVar v "bad")
|
||||
|
||||
(set savedPrints [])
|
||||
(printLocalNulls)
|
||||
(Assert.isFalse (savedPrints.contains "anotherStaticNullToPrint: null"))
|
||||
(Assert.isTrue (savedPrints.contains "u: null")))))
|
||||
|
||||
(function :Void _testTypeCase []
|
||||
(typeCase ["a"]
|
||||
|
Reference in New Issue
Block a user