private void ImportProperty()

in src/Refasmer/Importer/ImportLogic.cs [326:374]


    private void ImportProperty( PropertyDefinitionHandle srcHandle )
    {
        var src = _reader.GetPropertyDefinition(srcHandle);

        var accessors = src.GetAccessors();

        var getter = Import(accessors.Getter);
        var setter = Import(accessors.Setter);

        var others = accessors.Others
            .Select(a => Tuple.Create(a, Import(a)))
            .Where(a => !a.Item2.IsNil)
            .ToList();

        if (getter.IsNil && setter.IsNil && !others.Any())
        {
            Trace?.Invoke($"Not imported property {_reader.ToString(src)}");
            return;
        }

        var dstHandle = _builder.AddProperty(src.Attributes, ImportValue(src.Name), ImportSignatureWithHeader(src.Signature));
        _propertyDefinitionCache.Add(srcHandle, dstHandle);

        Trace?.Invoke($"Imported property {_reader.ToString(src)} -> {RowId(dstHandle)}");

        using var _ = WithLogPrefix($"[{_reader.ToString(src)}]");

        if (!getter.IsNil)
        {
            _builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Getter, getter);
            Trace?.Invoke($"Imported getter {_reader.ToString(accessors.Getter)} -> {RowId(getter)}");
        }

        if (!setter.IsNil)
        {
            _builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Setter, setter);
            Trace?.Invoke($"Imported setter {_reader.ToString(accessors.Setter)} -> {RowId(setter)}");
        }

        foreach (var (srcAccessor, dstAccessor) in others)
        {
            _builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Other, dstAccessor);
            Trace?.Invoke($"Imported other {_reader.ToString(srcAccessor)} -> {RowId(dstAccessor)}");
        }

        var defaultValue = src.GetDefaultValue();
        if (!defaultValue.IsNil)
            ImportDefaultValue(defaultValue, dstHandle);
    }