/// <inheritdoc /> public override void VisitIndirectVarUse(IndirectVarUse x) { // Access to field of a name stored in variable-like construct: $object->$field FindFunctionCall(x); base.VisitIndirectVarUse(x); }
public override void VisitIndirectVarUse(IndirectVarUse x) { var thisObj = GetMemberOf(x); var name = CreateRValue(x.VarNameEx); Result(new IndirectVariablePoint(x, name, thisObj)); }
/// <remarks> /// The method checks indirect variable use for dynamic dereference. /// </remarks> /// <inheritdoc /> public override void VisitIndirectVarUse(IndirectVarUse x) { // variable is dynamicaly dereferenced, if it has a variable use in it's name. if (x.VarNameEx is VariableUse) { occurrenceNodes.Enqueue(x); } base.VisitIndirectVarUse(x); }
/// <summary> /// Visits the indirect variable use. /// </summary> /// <param name="x">The executable.</param> public override void VisitIndirectVarUse(IndirectVarUse x) { base.VisitIndirectVarUse(x); //TODO: find a way to get only distinct uses. if (indirectlyUsed.FirstOrDefault(a => a.VarNameEx.Value != x.VarNameEx.Value) == null) { indirectlyUsed.Add(x); } }
public override void VisitIndirectVarUse(IndirectVarUse x) { VisitIsMemberOf(x.IsMemberOf); VisitElement(x.VarNameEx); // TODO: { ... } ? }
virtual public void VisitIndirectVarUse(IndirectVarUse x) { VisitVarLikeConstructUse(x); VisitElement(x.VarNameEx); }
override public void VisitIndirectVarUse(IndirectVarUse x) { _serializer.StartSerialize(typeof(IndirectVarUse).Name, SerializeSpan(x.Span)); base.VisitIndirectVarUse(x); _serializer.EndSerialize(); }
/// <inheritdoc /> public override void VisitIndirectVarUse(IndirectVarUse x) { base.VisitIndirectVarUse(x); vars.Add(x); }
private static VarLikeConstructUse /*!*/ CreateVariableUse(Position pos, VarLikeConstructUse /*!*/ variable, VarLikeConstructUse /*!*/ property, FcnParam parameters, VarLikeConstructUse chain) { if (parameters != null) { if (property is ItemUse) { property.IsMemberOf = variable; property = new IndirectFcnCall(pos, property, (List <ActualParam>)parameters.Item2, (List <TypeRef>)parameters.Item1); } else { DirectVarUse direct_use; if ((direct_use = property as DirectVarUse) != null) { QualifiedName method_name = new QualifiedName(new Name(direct_use.VarName.Value), Name.EmptyNames); property = new DirectFcnCall(pos, method_name, null, property.Position, (List <ActualParam>)parameters.Item2, (List <TypeRef>)parameters.Item1); } else { IndirectVarUse indirect_use = (IndirectVarUse)property; property = new IndirectFcnCall(pos, indirect_use.VarNameEx, (List <ActualParam>)parameters.Item2, (List <TypeRef>)parameters.Item1); } property.IsMemberOf = variable; } // wrap into ItemUse property = CreateFcnArrayDereference(pos, property, parameters.Item3); } else { property.IsMemberOf = variable; } if (chain != null) { // finds the first variable use in the chain and connects it to the property VarLikeConstructUse first_in_chain = chain; for (;;) { first_in_chain = DereferenceFunctionArrayAccess(first_in_chain); if (first_in_chain.IsMemberOf != null) { first_in_chain = first_in_chain.IsMemberOf; } else { break; } } first_in_chain.IsMemberOf = property; return(chain); } else { return(property); } }
public override void VisitIndirectVarUse(IndirectVarUse x) { // Force traversing VisitElement(x.IsMemberOf); VisitElement(x.VarNameEx); }
public static void EmitSwitch_LoadLocal(this IndirectVarUse node, CodeGenerator codeGenerator) { node.NodeCompiler <IVariableSwitchEmitter>().LoadLocal(node, codeGenerator); }
/// <inheritdoc /> public override void VisitIndirectVarUse(IndirectVarUse x) { // Access to field of a name stored in variable-like construct: $object->$field FindUndefinedMembersUse(x); base.VisitIndirectVarUse(x); }
/// <inheritdoc /> override public void VisitIndirectVarUse(IndirectVarUse x) { VisitElement(x.VarNameEx); result = new IndirectVarUse(x.Position, 1, (Expression)result); }
internal IndirectVariablePoint(IndirectVarUse variable, ValuePoint variableName, ValuePoint thisObj) { Variable = variable; VariableName = variableName; ThisObj = thisObj; }