示例#1
0
        public static string GetName(VBAParser.UdtMemberContext context, out Interval tokenInterval)
        {
            var untypedIdentifier = context.untypedNameMemberDeclaration()?.untypedIdentifier();

            if (untypedIdentifier != null)
            {
                return(GetName(untypedIdentifier, out tokenInterval));
            }

            var unrestrictedIdentifier = context.reservedNameMemberDeclaration().unrestrictedIdentifier();

            return(GetName(unrestrictedIdentifier, out tokenInterval));
        }
        public override void EnterUdtMember(VBAParser.UdtMemberContext context)
        {
            VBAParser.AsTypeClauseContext asTypeClause = null;
            bool      isArray  = false;
            string    typeHint = null;
            string    identifier;
            Selection identifierSelection;

            if (context.reservedNameMemberDeclaration() != null)
            {
                identifier          = Identifier.GetName(context.reservedNameMemberDeclaration().unrestrictedIdentifier());
                identifierSelection = Identifier.GetNameSelection(context.reservedNameMemberDeclaration().unrestrictedIdentifier());
                asTypeClause        = context.reservedNameMemberDeclaration().asTypeClause();
            }
            else
            {
                identifier          = Identifier.GetName(context.untypedNameMemberDeclaration().untypedIdentifier());
                identifierSelection = Identifier.GetNameSelection(context.untypedNameMemberDeclaration().untypedIdentifier());
                asTypeClause        = context.untypedNameMemberDeclaration().optionalArrayClause().asTypeClause();
                isArray             = context.untypedNameMemberDeclaration().optionalArrayClause().arrayDim() != null;
            }
            var asTypeName = asTypeClause == null
                ? Tokens.Variant
                : asTypeClause.type().GetText();

            AddDeclaration(
                CreateDeclaration(
                    identifier,
                    asTypeName,
                    Accessibility.Implicit,
                    DeclarationType.UserDefinedTypeMember,
                    context,
                    identifierSelection,
                    isArray,
                    asTypeClause,
                    typeHint));
        }