901fed103b
Also ensure the number of parent type arguments is appropriately adjusted in the returned FunctionType when partially instantiating a FunctionType, and that free parent type arguments are _not_ included in types built while reading constants. Since the number of parent type arguments is now cached there, we no longer need to also cache them in ClosureData. We can also remove the parent walking in Function::NumParentTypeArguments(). Previously, a FunctionType where the component types did not use parent type parameters was considered instantiated. This CL changes it so that FunctionType with free parent type parameters are never considered instantiated. This is necessary because otherwise, when instantiating the parent type parameters, a FunctionType that does not use its parent type parameters will be used unchanged instead of creating a copy with fewer parent type parameters. Because of this, places where IsInstantiated was used to simply check for generic parent functions (namely, for implicit closure creation) has been appropriately weakened to check !HasGenericParent() instead. TEST=Existing tests on CI. Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-nnbd-linux-release-x64-try Change-Id: Ifb4a0a1273d8d01908cdf4ffc3c4c28a1c33ffa0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190021 Reviewed-by: Martin Kustermann <kustermann@google.com> Reviewed-by: Régis Crelier <regis@google.com> Commit-Queue: Tess Strickland <sstrickl@google.com>