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)); }
internal static int Check(Function node, CivlTypeChecker ctc, WitnessFunction witnessFunction) { var checker = new WitnessFunctionChecker(node, ctc, witnessFunction); return(checker.errorCount); }