// General public override bool Resolve(TypeResolveContext trc, bool errors) { bool ret = base.Resolve(trc, errors); if (bf_ret_class != null) { // Null if rule doesn't have a build func of its // own (eg, it inherits) ret |= bf_ret_class.Resolve(trc, errors); if (errors && OverrideResultType != null) { Console.Error.WriteLine("Can't have a build function and separately " + "specify a general result type in {0}", ClassName); return(true); } } if (OverrideResultType != null) { ret |= OverrideResultType.Resolve(trc, errors); } for (int i = 0; i < arguments.Count; i++) { ret |= arguments[i].Resolve(trc, errors); } return(ret); }
public virtual bool Resolve(TypeResolveContext trc, bool errors) { if (!registered) { trc.Driver.DefineUserType(FullName, this); registered = true; } if (errors && baseclass == null) { Console.Error.WriteLine("No base class set for item {0}", this); return(true); } bool ret = baseclass.Resolve(trc, errors); if (implements != null) { foreach (UserType ut in implements) { ret |= ut.Resolve(trc, errors); } } return(ret); }
public UserType ResolveSelfType(TypeResolveContext trc, bool errors) { UserType ut = new UserType(FullName); if (ut.Resolve(trc, errors) && errors) { throw ExHelp.App("Failed to resolve SelfType of {0}?", this); } return(ut); }
// The rest public bool Resolve(bool errors) { bool ret = paramstype.Resolve(trc, errors); foreach (MetaRuleBuilder mrb in metarules) { ret |= mrb.Resolve(trc, errors); } foreach (TypeExpressedItem tei in items) { ret |= tei.Resolve(trc, errors); } return(ret); }
public bool Resolve(TypeResolveContext trc, bool errors) { if (Type.Resolve(trc, errors)) { return(true); } arg_class = Type.ResultConversion; if (arg_class == null) { conv = RuleArgConversion.None; arg_class = Type; } else { // The arg type is some primitive type (bool, string) // that we must convert from a result wrapper Type type = Type.AsSystem; if (type == null) { throw new Exception("Can't handle convertible user types"); } if (type.IsValueType) { conv = RuleArgConversion.ToValueType; } else { conv = RuleArgConversion.ToRefType; } } return(arg_class.Resolve(trc, errors)); }
public UserType ResolveSelfType (TypeResolveContext trc, bool errors) { UserType ut = new UserType (FullName); if (ut.Resolve (trc, errors) && errors) throw ExHelp.App ("Failed to resolve SelfType of {0}?", this); return ut; }
public override bool Resolve(TypeResolveContext trc, bool errors) { return(base.Resolve(trc, errors) | ResultType.Resolve(trc, errors)); }