Пример #1
0
        private static SyntaxTreeIndex?ReadFrom(
            StringTable stringTable,
            ObjectReader reader,
            Checksum?checksum
            )
        {
            var literalInfo         = LiteralInfo.TryReadFrom(reader);
            var identifierInfo      = IdentifierInfo.TryReadFrom(reader);
            var contextInfo         = ContextInfo.TryReadFrom(reader);
            var declarationInfo     = DeclarationInfo.TryReadFrom(stringTable, reader);
            var extensionMethodInfo = ExtensionMethodInfo.TryReadFrom(reader);

            if (
                literalInfo == null ||
                identifierInfo == null ||
                contextInfo == null ||
                declarationInfo == null ||
                extensionMethodInfo == null
                )
            {
                return(null);
            }

            return(new SyntaxTreeIndex(
                       checksum,
                       literalInfo.Value,
                       identifierInfo.Value,
                       contextInfo.Value,
                       declarationInfo.Value,
                       extensionMethodInfo.Value
                       ));
        }
Пример #2
0
        private static bool SupportsCanFavorite(MemberInfo member, DeclarationInfo info)
        {
            if (IsMemberStatic(member))
            {
                return(false);
            }

            Type memberType = GetMemberType(member);

            if (memberType.IsByRef || memberType.IsPointer)
            {
                return(false);
            }

            if (member.Name.Contains("."))
            {
                return(false);
            }

            if (info.IsSet(DeclarationInfo.IncludeTypeInMemberName))
            {
                return(false);
            }

            return(true);
        }
Пример #3
0
 private SyntaxTreeIndex(
     VersionStamp version,
     IdentifierInfo identifierInfo,
     ContextInfo contextInfo,
     DeclarationInfo declarationInfo)
 {
     Version = version;
     _identifierInfo = identifierInfo;
     _contextInfo = contextInfo;
     _declarationInfo = declarationInfo;
 }
Пример #4
0
 private SyntaxTreeIndex(
     VersionStamp version,
     IdentifierInfo identifierInfo,
     ContextInfo contextInfo,
     DeclarationInfo declarationInfo)
     : base(version)
 {
     _identifierInfo  = identifierInfo;
     _contextInfo     = contextInfo;
     _declarationInfo = declarationInfo;
 }
        private TopLevelSyntaxTreeIndex(
            Checksum?checksum,
            DeclarationInfo declarationInfo,
            ExtensionMethodInfo extensionMethodInfo)
            : base(checksum)
        {
            _declarationInfo     = declarationInfo;
            _extensionMethodInfo = extensionMethodInfo;

            _declaredSymbolInfoSet = new(() => new(this.DeclaredSymbolInfos));
        }
 private SyntaxTreeIndex(
     Checksum checksum,
     LiteralInfo literalInfo,
     IdentifierInfo identifierInfo,
     ContextInfo contextInfo,
     DeclarationInfo declarationInfo)
 {
     this.Checksum    = checksum;
     _literalInfo     = literalInfo;
     _identifierInfo  = identifierInfo;
     _contextInfo     = contextInfo;
     _declarationInfo = declarationInfo;
 }
Пример #7
0
 private SyntaxTreeIndex(
     VersionStamp version,
     LiteralInfo literalInfo,
     IdentifierInfo identifierInfo,
     ContextInfo contextInfo,
     DeclarationInfo declarationInfo)
 {
     Version          = version;
     _literalInfo     = literalInfo;
     _identifierInfo  = identifierInfo;
     _contextInfo     = contextInfo;
     _declarationInfo = declarationInfo;
 }
        private static SyntaxTreeIndex ReadFrom(ObjectReader reader, VersionStamp version)
        {
            var identifierInfo  = IdentifierInfo.ReadFrom(reader);
            var contextInfo     = ContextInfo.ReadFrom(reader);
            var declarationInfo = DeclarationInfo.ReadFrom(reader);

            if (identifierInfo == null || contextInfo == null || declarationInfo == null)
            {
                return(null);
            }

            return(new SyntaxTreeIndex(
                       version, identifierInfo.Value, contextInfo.Value, declarationInfo.Value));
        }
        private static SyntaxTreeIndex ReadFrom(
            ObjectReader reader, Checksum checksum)
        {
            var literalInfo     = LiteralInfo.TryReadFrom(reader);
            var identifierInfo  = IdentifierInfo.TryReadFrom(reader);
            var contextInfo     = ContextInfo.TryReadFrom(reader);
            var declarationInfo = DeclarationInfo.TryReadFrom(reader);

            if (literalInfo == null || identifierInfo == null || contextInfo == null || declarationInfo == null)
            {
                return(null);
            }

            return(new SyntaxTreeIndex(
                       checksum, literalInfo.Value, identifierInfo.Value, contextInfo.Value, declarationInfo.Value));
        }
Пример #10
0
 private SyntaxTreeIndex(
     Checksum?checksum,
     LiteralInfo literalInfo,
     IdentifierInfo identifierInfo,
     ContextInfo contextInfo,
     DeclarationInfo declarationInfo,
     ExtensionMethodInfo extensionMethodInfo)
 {
     this.Checksum          = checksum;
     _literalInfo           = literalInfo;
     _identifierInfo        = identifierInfo;
     _contextInfo           = contextInfo;
     _declarationInfo       = declarationInfo;
     _extensionMethodInfo   = extensionMethodInfo;
     _declaredSymbolInfoSet = new(() => new(this.DeclaredSymbolInfos));
 }
Пример #11
0
        private static TopLevelSyntaxTreeIndex?ReadIndex(
            StringTable stringTable, ObjectReader reader, Checksum?checksum)
        {
            var declarationInfo     = DeclarationInfo.TryReadFrom(stringTable, reader);
            var extensionMethodInfo = ExtensionMethodInfo.TryReadFrom(reader);

            if (declarationInfo == null || extensionMethodInfo == null)
            {
                return(null);
            }

            return(new TopLevelSyntaxTreeIndex(
                       checksum,
                       declarationInfo.Value,
                       extensionMethodInfo.Value));
        }
Пример #12
0
        public MemberAndDeclarationInfo(
            MemberInfo member,
            DkmClrDebuggerBrowsableAttributeState?browsableState,
            DeclarationInfo info,
            int inheritanceLevel,
            bool canFavorite,
            bool isFavorite
            )
        {
            Debug.Assert(member != null);

            _member                      = member;
            this.BrowsableState          = browsableState;
            this.HideNonPublic           = info.IsSet(DeclarationInfo.HideNonPublic);
            this.IncludeTypeInMemberName = info.IsSet(DeclarationInfo.IncludeTypeInMemberName);
            this.RequiresExplicitCast    = info.IsSet(DeclarationInfo.RequiresExplicitCast);
            this.CanFavorite             = canFavorite && SupportsCanFavorite(member, info);
            this.IsFavorite              = isFavorite;

            _inheritanceLevel = inheritanceLevel;
        }
Пример #13
0
        private static SyntaxTreeIndex?ReadFrom(
            StringTable stringTable, ObjectReader reader, Checksum?checksum)
        {
            var literalInfo         = LiteralInfo.TryReadFrom(reader);
            var identifierInfo      = IdentifierInfo.TryReadFrom(reader);
            var contextInfo         = ContextInfo.TryReadFrom(reader);
            var declarationInfo     = DeclarationInfo.TryReadFrom(stringTable, reader);
            var extensionMethodInfo = ExtensionMethodInfo.TryReadFrom(reader);

            if (literalInfo == null || identifierInfo == null || contextInfo == null || declarationInfo == null || extensionMethodInfo == null)
            {
                return(null);
            }

            var globalAliasInfoCount = reader.ReadInt32();
            HashSet <(string alias, string name, int arity)>?globalAliasInfo = null;

            if (globalAliasInfoCount > 0)
            {
                globalAliasInfo = new HashSet <(string alias, string name, int arity)>();

                for (var i = 0; i < globalAliasInfoCount; i++)
                {
                    var alias = reader.ReadString();
                    var name  = reader.ReadString();
                    var arity = reader.ReadInt32();
                    globalAliasInfo.Add((alias, name, arity));
                }
            }

            return(new SyntaxTreeIndex(
                       checksum,
                       literalInfo.Value,
                       identifierInfo.Value,
                       contextInfo.Value,
                       declarationInfo.Value,
                       extensionMethodInfo.Value,
                       globalAliasInfo));
        }
Пример #14
0
 internal static bool IsSet(this DeclarationInfo info, DeclarationInfo value)
 {
     return((info & value) == value);
 }