Example #1
0
 public override object VisitFieldRef(BoundFieldRef x)
 {
     return(x.Update(
                (BoundExpression)Accept(x.Instance),
                (BoundTypeRef)Accept(x.ContainingType),
                (BoundVariableName)Accept(x.FieldName)));
 }
Example #2
0
        public override void VisitFieldRef(BoundFieldRef x)
        {
            Span span = Span.Invalid;

            if (x.PhpSyntax is DirectVarUse)
            {
                span = ((DirectVarUse)x.PhpSyntax).Span;
            }
            else if (x.PhpSyntax is StaticFieldUse)
            {
                span = ((StaticFieldUse)x.PhpSyntax).NameSpan;
            }
            else if (x.PhpSyntax is ClassConstUse)
            {
                span = ((ClassConstUse)x.PhpSyntax).NamePosition;
            }

            if (span.IsValid)
            {
                _result.Add(new SymbolStat(_tctx, span, x, ((IFieldReferenceExpression)x).Member));
            }

            //
            base.VisitFieldRef(x);
        }
Example #3
0
        public override T VisitFieldRef(BoundFieldRef x)
        {
            if (x.ContainingType != null)
            {
                // class const
                // static field
                CheckMissusedPrimitiveType(x.ContainingType);
            }

            if (x.Access.IsWrite && ((Microsoft.CodeAnalysis.Operations.IMemberReferenceOperation)x).Member is PropertySymbol prop && prop.SetMethod == null)
            {
                // read-only property written
                _diagnostics.Add(_routine, GetMemberNameSpanForDiagnostic(x.PhpSyntax),
                    ErrorCode.ERR_ReadOnlyPropertyWritten,
                    prop.ContainingType.PhpQualifiedName().ToString(),  // TOOD: _statics
                    prop.Name);
            }

            //
            return base.VisitFieldRef(x);
        }
        public override VoidStruct VisitFieldRef(BoundFieldRef x)
        {
            if (x.PhpSyntax?.Span.Contains(_position) == true)
            {
                Span span = x.PhpSyntax.Span;

                //if (x.PhpSyntax is StaticFieldUse)
                //{
                //    span = ((StaticFieldUse)x.PhpSyntax).NameSpan;
                //}
                //else if (x.PhpSyntax is ClassConstUse)
                //{
                //    span = ((ClassConstUse)x.PhpSyntax).NamePosition;
                //}

                if (span.IsValid)
                {
                    _result = new SymbolStat(_tctx, span, x, ((IMemberReferenceOperation)x).Member);
                }
            }

            //
            return(base.VisitFieldRef(x));
        }