Which version of fpc it applies to? 2.64 doesn't get 'is nested', or it should compile in delphi mode (i never use it)?
Anyway, i think 'is nested' is conceptually wrong solution for this.
'of object' is wrong as well, but it can exist due to legacy purposes and pointer size constraints. Compiler of my dream should allow to use plain procedural type (not 'of object') to be used in place of 'procedure of object's too. Invoker should not know the kind of procedural reference, because such knowledge involves a lot of additional management without any profits.
But okay, why not to make at least 'of object/is nested' the same, or at least, to allow to use 'of object' type to set 'is nested' references? I.e., introduce some levels of compatibility:
type t1 = procedure;
type t2 = procedure of object;
type t3 = procedure is nested;
var v1 : t1; v2: t2; v3: t3;
v1 := v2; // not allow
v1 := v3; // not allow
v2 := v1; // allow - i suppose, it's not the problem to make stubs for this cases
v2 := v3; // maybe allow
v3 := v1; // allow (stubs)
v3 := v2; // allow (i believe that frame and object have the same nature)