Hello,
this patch implements
a) A constraint for ALLOCATE (class with abstract base type):
"C625 (R623) If any allocate-object is unlimited polymorphic or
is of abstract type, either type-spec or SOURCE= shall appear."
(If you miss "abstract type" in your copy of the standard, you
do not have read Corrigendum 1.)
b) Reject "allocate(..., SOURCE=<class>)". To make it work, one
needs to know the size at run time, which does not work yet. I
think it makes sense to reject it rather than to use the size of
the base type and only to warn about it.
(This is probably the most important missing feature in gfortran's
OOP implementation.)