Ejemplo n.º 1
0
 public override Function VisitFunction(Function node)
 {
     for (QKeyValue kv = node.Attributes; kv != null; kv = kv.Next)
     {
         if (kv.Key != CivlAttributes.WITNESS)
         {
             continue;
         }
         if (kv.Params.Count == 1 && kv.Params[0] is string witnessAttribute)
         {
             int parserErrorCount = WitnessAttributeParser.Parse(ctc, node, witnessAttribute,
                                                                 out WitnessFunction witnessFunction);
             if (parserErrorCount == 0 &&
                 WitnessFunctionChecker.Check(node, ctc, witnessFunction) == 0)
             {
                 allWitnessFunctions.Add(witnessFunction);
             }
         }
         else
         {
             ctc.Error(node, "Witness attribute has to be a string.");
         }
     }
     return(base.VisitFunction(node));
 }
Ejemplo n.º 2
0
            internal static int Check(Function node, CivlTypeChecker ctc, WitnessFunction witnessFunction)
            {
                var checker = new WitnessFunctionChecker(node, ctc, witnessFunction);

                return(checker.errorCount);
            }