public bool HasRealInstantiable(IEmitter emitter) { if (HasInstantiable) { return(true); } if (StaticMethods.Any(group => { return(group.Value.Any(method => Helpers.IsEntryPointMethod(emitter, method))); })) { return(true); } return(false); }
public bool HasRealStatic(IEmitter emitter) { var result = ClassType == ClassType.Struct || StaticConfig.HasMembers || StaticProperties.Count > 0 || StaticCtor != null || Operators.Count > 0; if (result) { return(true); } if (StaticMethods.Any(group => { foreach (var method in group.Value) { if (Helpers.IsEntryPointMethod(emitter, method)) { return(false); } if (method.Attributes.Count == 0) { return(true); } foreach (var attrSection in method.Attributes) { foreach (var attr in attrSection.Attributes) { var rr = emitter.Resolver.ResolveNode(attr.Type); if (rr.Type.FullName == "H5.InitAttribute") { if (!attr.HasArgumentList) { return(true); } var expr = attr.Arguments.First(); var argrr = emitter.Resolver.ResolveNode(expr); if (argrr.ConstantValue is int) { var value = (InitPosition)argrr.ConstantValue; if (value == InitPosition.Before || value == InitPosition.Top) { return(false); } } return(true); } else { return(true); } } } } return(false); })) { return(true); } if (Type.GetConstructors().Any(c => c.Parameters.Count == 0 && emitter.GetInline(c) != null)) { return(true); } return(false); }