warning updates in Bind.hx

This commit is contained in:
Dima Granetchi
2014-11-28 18:28:01 +02:00
parent c19ad118c7
commit 43ca5cd580
3 changed files with 23 additions and 23 deletions
+12 -16
View File
@@ -39,13 +39,8 @@ class Bind {
public static function internalBind(field:Expr, listener:Expr, doBind:Bool):Expr {
var fieldData = warnCheckField(field);
return if (fieldData != null) {
if (doBind) BindMacros.bindingSignalProvider.getClassFieldBindExpr(fieldData.e, fieldData.field, listener);
else BindMacros.bindingSignalProvider.getClassFieldUnbindExpr(fieldData.e, fieldData.field, listener);
} else {
Context.fatalError('can\'t bind field ${field.expr}', field.pos);
macro {};
}
return if (doBind) BindMacros.bindingSignalProvider.getClassFieldBindExpr(fieldData.e, fieldData.field, listener);
else BindMacros.bindingSignalProvider.getClassFieldUnbindExpr(fieldData.e, fieldData.field, listener);
}
public static function internalBindTo(field:Expr, target:Expr):Expr {
@@ -114,15 +109,16 @@ class Bind {
}
public static function isBindable(classType:ClassType):Bool {
if (classType.module == "bindx.IBindable" && classType.name == "IBindable")
return true;
var t = classType;
while (t != null) {
for (it in t.interfaces)
if (isBindable(it.t.get()))
return true;
t = t.superClass != null ? t.superClass.t.get() : null;
var check = [classType];
while (check.length > 0) {
var t = check.shift();
while (t != null) {
if (t.module == "bindx.IBindable" && t.name == "IBindable")
return true;
for (it in t.interfaces)
check.push(it.t.get());
t = t.superClass != null ? t.superClass.t.get() : null;
}
}
return false;
}
+5 -5
View File
@@ -1,5 +1,6 @@
package bindx;
import bindx.Error;
import haxe.macro.Type;
import haxe.macro.Expr;
import haxe.macro.Context;
@@ -62,7 +63,7 @@ class BindMacros {
var inlineSetter = meta.findParam(INLINE_SETTER);
if (forceParam.isNotNullAndTrue()) {
if (inlineSetter != null)
Context.warning('\'$INLINE_SETTER\' ignored. \'$FORCE\' mode', inlineSetter.pos);
Warn.w('\'$INLINE_SETTER\' ignored. \'$FORCE\' mode', inlineSetter.pos, WarnPriority.INFO);
res.push(field);
return;
}
@@ -91,7 +92,7 @@ class BindMacros {
case FProp(get, set, type, expr):
if (inlineSetter != null)
Context.warning('$INLINE_SETTER ignored. Setter already exist', inlineSetter.pos);
Warn.w('$INLINE_SETTER ignored. Setter already exist', inlineSetter.pos, WarnPriority.INFO);
var fieldName = field.name;
var setter = fields.find(function (it) return it.name == 'set_$fieldName');
if (setter != null) {
@@ -111,7 +112,7 @@ class BindMacros {
case FFun(f):
if (inlineSetter != null)
Context.warning('methods doesn\'t support \'$INLINE_SETTER\'', inlineSetter.pos);
Warn.w('methods doesn\'t support \'$INLINE_SETTER\'', inlineSetter.pos, WarnPriority.INFO);
res.push(field);
}
}
@@ -150,8 +151,7 @@ class BindMacros {
static function isFieldBindable(field:Field, fields:Array<Field>, force = false):Bool {
if (field.name == "new") return false;
if (field.access.exists(function (it) return it.equals(AMacro) || it.equals(ADynamic) || it.equals(AStatic)))
return false;
if (field.access.exists(function (it) return it.equals(AMacro) || it.equals(ADynamic) || it.equals(AStatic))) return false;
if (field.name.startsWith("set_") || field.name.startsWith("get_")) {
var propName = field.name.substr(4);
+6 -2
View File
@@ -1,10 +1,12 @@
package bindx;
#if macro
import haxe.macro.Expr;
import haxe.macro.Type;
interface IBindingSignalProvider {
#if macro
function getFieldDispatcher(field:Field, result:Array<Field>):Void;
function getFieldChangedExpr(field:Field, oldValue:Expr, newValue:Expr):Expr;
@@ -13,5 +15,7 @@ interface IBindingSignalProvider {
function getClassFieldUnbindExpr(expr:Expr, field:ClassField, listener:Expr):Expr;
function getClassFieldChangedExpr(expr:Expr, field:ClassField, oldValue:Expr, newValue:Expr):Expr;
function getUnbindAllExpr(expr:ExprOf<IBindable>, type:Type):Expr;
#end
}
#end