public override void ExitClassvars([NotNull] XSharpParser.ClassvarsContext context)
 {
     if (context.Vars._Var.Count > 0)
     {
         if (context.Modifiers == null)
         {
             _parseErrors.Add(new ParseErrorData(context, ErrorCode.ERR_SyntaxError, "Classvar Modifier (EXPORT, PROTECTED, HIDDEN, PRIVATE, PUBLIC, INSTANCE, STATIC) expected"));
         }
     }
 }
        public override void ExitClassvars([NotNull] XSharpParser.ClassvarsContext context)
        {
            var type = this.currentType;

            if (type != null)
            {
                foreach (var v in _classVars)
                {
                    v.Parent = type;
                    type.AddMember(v);
                }
            }
            _classVars.Clear();
        }
Example #3
0
        public override void EnterClassvars([NotNull] XSharpParser.ClassvarsContext context)
        {
            // PROTECT a,b as STRING
            // copy type from b to a
            var classVarModifiers = decodeClassVarModifiers(context.Modifiers);

            if (context._Vars.Count > 1)
            {
                XSharpParser.DatatypeContext dtc = null;
                foreach (var classvar in context._Vars.Reverse())
                {
                    if (classvar.DataType != null)
                    {
                        dtc = classvar.DataType;
                    }
                    else
                    {
                        classvar.DataType = dtc;
                    }
                }
            }

            foreach (var varContext in context._Vars)
            {
                var field     = new XCodeMemberField();
                var fieldType = BuildDataType(varContext.DataType);
                field.Name       = varContext.Id.GetText();
                field.Type       = fieldType;
                field.Attributes = classVarModifiers;
                if (varContext.Initializer != null)
                {
                    field.InitExpression = BuildExpression(varContext.Initializer, false);
                    SaveSourceCode(field.InitExpression, varContext.Initializer);
                }
                FillCodeDomDesignerData(field, varContext.Start.Line, varContext.Start.Column);
                // write original source for the attributes
                AddMemberAttributes(field, classVarModifiers, context.Modifiers);
                writeTrivia(field, context);
                SaveSourceCode(field, varContext);
                //
                FieldList[currentContext].Add(field);
            }
            //
        }