コード例 #1
0
        IEnumerable <FieldSymbol> LoadFields()
        {
            var binder = new SemanticsBinder(null);

            // fields
            foreach (var flist in _syntax.Members.OfType <FieldDeclList>())
            {
                var fkind = (flist.Modifiers & PhpMemberAttributes.Static) == 0
                    ? SourceFieldSymbol.KindEnum.InstanceField
                    : SourceFieldSymbol.KindEnum.StaticField;

                foreach (var f in flist.Fields)
                {
                    yield return(new SourceFieldSymbol(this, f.Name.Value, flist.Modifiers.GetAccessibility(), f.PHPDoc ?? flist.PHPDoc, fkind,
                                                       (f.Initializer != null) ? binder.BindExpression(f.Initializer, BoundAccess.Read) : null));
                }
            }

            // constants
            foreach (var clist in _syntax.Members.OfType <ConstDeclList>())
            {
                foreach (var c in clist.Constants)
                {
                    yield return(new SourceFieldSymbol(this, c.Name.Name.Value, Accessibility.Public, c.PHPDoc ?? clist.PHPDoc,
                                                       SourceFieldSymbol.KindEnum.ClassConstant,
                                                       binder.BindExpression(c.Initializer, BoundAccess.Read)));
                }
            }
        }
コード例 #2
0
        private CaseBlock /*!*/ NewBlock(SwitchItem item)
        {
            var             caseitem  = item as CaseItem;
            BoundExpression caseValue =  // null => DefaultItem
                                        (caseitem != null) ? _binder.BindExpression(caseitem.CaseVal, BoundAccess.Read) : null;

            return(WithNewOrdinal(new CaseBlock(caseValue)
            {
                PhpSyntax = item, Naming = _naming
            }));
        }