public override void Visit(RecordVariableFieldUseNode node) { base.Visit(node); // lookup definition field bool found = false; foreach (var defField in node.Definition.Fields) { if (defField.FieldName == node.Field) { node.ExpressionType = defField.Value.ExpressionType; found = true; } } if (!found) { throw new TypeCheckException( string.Format("Field '{0}' is not a part of '{1}' record type", node.Field, (node.Definition.Type as NamedTypeNode).Name)); } }
public override void Visit(RecordVariableFieldUseNode node) { node.Definition = variableSymbolTable.LookUp <RecordVariableDefNode> (node.RecordName); base.Visit(node); }
public virtual T Visit(RecordVariableFieldUseNode node) { return(Visit(node as ExpressionNode)); }
public virtual void Visit(RecordVariableFieldUseNode node) { Visit(node as ExpressionNode); }