Cannot handle function of recursively defined datatype
Brought to you by:
gveith
Generates an exception trying to use the recursive datatype:
type TContinue = function(_:TVoid):TContinue of object;
A dirty fix in TCodeParser.GetType solved it but is not a good solution
if Ident is TClassReferenceType then
//if it is a class-reference, return the referenced class
Result := GetType(TClassReferenceType(Ident).BaseClass)
else
if Ident is TFunctionType then begin
//if it is a function-type, return the return type of the function
if (TFunctionType(Ident).ReturnType is TIdentType)
and (TIdentType(TFunctionType(Ident).ReturnType).TheType is TFunctionType)
then Result := TType(Ident) // avoid recursive function types
else
Result := GetType(TFunctionType(Ident).ReturnType)
end else
Result := TType(Ident); //return just the type itself