Esempio n. 1
0
    public MethodNullability(MemberNullabilityCache memberNullabilityCache, MethodDefinition method, XElement externalAnnotation)
        : base(memberNullabilityCache)
    {
        this.method           = method;
        parameterAttributes   = method.Parameters.Select(item => item.GetNullabilityAttributes()).ToArray();
        returnValueAttributes = method.GetNullabilityAttributes();

        if (externalAnnotation == null)
        {
            return;
        }

        returnValueAttributes |= externalAnnotation.GetNullabilityAttributes();

        foreach (var childElement in externalAnnotation.Elements("parameter"))
        {
            var parameterName = childElement.Attribute("name")?.Value;
            if (parameterName == null)
            {
                continue;
            }

            var parameter = method.Parameters.FirstOrDefault(p => p.Name == parameterName);
            if (parameter == null)
            {
                continue;
            }

            var parameterIndex = parameter.Index;
            parameterAttributes[parameterIndex] |= childElement.GetNullabilityAttributes();
        }
    }
Esempio n. 2
0
    public PropertyNullability(MemberNullabilityCache memberNullabilityCache, PropertyDefinition property, XElement externalAnnotation)
        : base(memberNullabilityCache)
    {
        this.property         = property;
        nullabilityAttributes = property.GetNullabilityAttributes();

        if (externalAnnotation == null)
        {
            return;
        }

        nullabilityAttributes |= externalAnnotation.GetNullabilityAttributes();
    }
Esempio n. 3
0
    void ResolveInheritance()
    {
        if (isInheritanceResolved)
        {
            return;
        }

        isInheritanceResolved = true;

        if (!property.HasThis)
        {
            return;
        }

        foreach (var property in property.EnumerateOverridesAndImplementations())
        {
            var nullability = MemberNullabilityCache.GetOrCreate(property.Resolve());

            MergeFrom(nullability);
        }
    }
Esempio n. 4
0
 public MemberNullability(MemberNullabilityCache memberNullabilityCache)
 {
     MemberNullabilityCache = memberNullabilityCache;
 }