コード例 #1
0
        public override void EnterTypeStmt_Element(VBAParser.TypeStmt_ElementContext context)
        {
            var asTypeClause = context.asTypeClause();
            var asTypeName   = asTypeClause == null
                ? Tokens.Variant
                : asTypeClause.type().GetText();

            OnNewDeclaration(CreateDeclaration(context.identifier().GetText(), asTypeName, Accessibility.Implicit, DeclarationType.UserDefinedTypeMember, context, context.identifier().GetSelection()));
        }
コード例 #2
0
        // you cannot initialize elements inside a Structure
        // since VBA Type(s) are transformed in VB.NET Structure(s)
        // we remove the initialization of array
        public override void ExitTypeStmt_Element([NotNull] VBAParser.TypeStmt_ElementContext context)
        {
            var currentType = Types.Peek();

            if (context.subscripts() != null && !context.subscripts().IsEmpty)
            {
                InitStructures[currentType].Add($"ReDim {context.ambiguousIdentifier().GetText()}({context.subscripts().GetText()})");

                StringBuilder commas = new StringBuilder();
                Enumerable.Range(0, context.subscripts().subscript().Length - 1).ToList().ForEach(x => commas.Append(","));
                Rewriter.Replace(context.subscripts().Start, context.subscripts().Stop, $"{commas.ToString()}");
            }
        }