• Andrei Paskevich's avatar
    Encoding_select: fix selection for the "lskept" and "lsinst" sets · de46b1a1
    Andrei Paskevich authored
    lskept: the old selection check required at least one non-variable
    non-closed type in the lsymbol's signature. This is too permissive,
    because (list_match : list 'a -> 'b -> 'b) is allowed and will produce
    an instance for every type in the "inst" set. The new check requires
    that all freely standing type variables occur under a type constructor
    elsewhere in the lsymbol's signature.
    lsinst: accept any monomorphic instance of any polymorphic symbol
    except equality. The old procedure applied the same restrictions
    as for the "lskept" set which serve no real purpose for "lsinst".