Hi Teodor,
While this one is a promosing future, I have another proposal, which you might not like in the first sight :), since its a breaking change, but keep an open mind :)
AFAIK, infinite loop checks can not be done because of "pagecount" dependent variables.
Do we really need them on elements? or do we really need them at all?
I think it would be just better to let them in "band expressions" but with a fixed number, not an expression (lets say page=0)
In this way, while consuming any element to process, if you add a new page, you will know how to check if something is going wrong.
Most people using it for some initial header on page=0, since there is no way to do it in any other way right now. (it would be good to define a band before column/group headers btw, actually this is a must for this proposal :))
Except this one, some data should be written if the pagecount is greater than 5?
This doesnt make sense.
While it seems you strip some given features away, you do not really.
(btw, i think you cant do much about report classes but imo it can be ignored as a wrong usage)
In the long run, this would make engine better and faster
Give a thought about it :)
Edit: come to think of it, there could be some scenarios, you might need them.
Lets say, you want to export a report max page 10, or mininal pages to 10.
you have somedata1, somedata2.
If you exceed 10 pages, you want to exclude somedata2 from report.
So maybe, allowing pagecount expressions as is in "band expresions" would be enough for this.
New idea: Introduce a new global property, if a "print when expression" is evaluated, it will not be again, if the page breaks or something..
So if its evaluated, its done :)
Or, dont introduce this property, I think this should be the default behaviour :)