/// Clone the given generic parameters in the given list. We don't need any /// of the requirements, because they will be inferred. GenericParamList *cloneGenericParams(ASTContext &ctx, DeclContext *dc, GenericParamList *fromParams) { // Clone generic parameters. SmallVector<GenericTypeParamDecl *, 2> toGenericParams; for (auto fromGP : *fromParams) { // Create the new generic parameter. auto toGP = new (ctx) GenericTypeParamDecl(dc, fromGP->getName(), SourceLoc(), fromGP->getDepth(), fromGP->getIndex()); toGP->setImplicit(true); // Record new generic parameter. toGenericParams.push_back(toGP); } auto toParams = GenericParamList::create(ctx, SourceLoc(), toGenericParams, SourceLoc()); auto outerParams = fromParams->getOuterParameters(); if (outerParams != nullptr) outerParams = cloneGenericParams(ctx, dc, outerParams); toParams->setOuterParameters(outerParams); return toParams; }
void ImplicitInterrogator::empty() { setImplicit(empty_p); }
void ImplicitInterrogator::attachAttributes() { ParticleAttribute::attachAttributes(); setImplicit(impname); }