static void ThrowIfNodeHasRecursiveTypeDefenitionReq(TicNode node, int bypassNumber) { if (node.VisitMark == bypassNumber) { var route = new HashSet <TicNode>(); FindRecursionTypeRoute(node, route); throw TicErrors.RecursiveTypeDefinition(route.ToArray()); } var markBefore = node.VisitMark; node.VisitMark = bypassNumber; ThrowIfStateHasRecursiveTypeDefeinitionReq(node.State, bypassNumber); node.VisitMark = markBefore; }
private void ThrowRecursiveTypeDefenition(TicNode node) { _cycle.Push(node); throw TicErrors.RecursiveTypeDefinition(_cycle.ToArray()); }