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);
 }
Exemple #3
0
 public virtual T Visit(RecordVariableFieldUseNode node)
 {
     return(Visit(node as ExpressionNode));
 }
 public virtual void Visit(RecordVariableFieldUseNode node)
 {
     Visit(node as ExpressionNode);
 }