1818#include " swift/AST/ASTPrinter.h"
1919#include " swift/AST/ASTVisitor.h"
2020#include " swift/AST/Attr.h"
21+ #include " swift/AST/AutoDiff.h"
2122#include " swift/AST/ClangModuleLoader.h"
2223#include " swift/AST/ForeignAsyncConvention.h"
2324#include " swift/AST/ForeignErrorConvention.h"
@@ -5053,7 +5054,7 @@ namespace {
50535054 }
50545055
50555056 void printAnyFunctionTypeCommonRec (AnyFunctionType *T, StringRef label,
5056- StringRef name) {
5057+ StringRef name) {
50575058 printCommon (name, label);
50585059
50595060 if (T->hasExtInfo ()) {
@@ -5068,6 +5069,24 @@ namespace {
50685069 printFlag (T->isAsync (), " async" );
50695070 printFlag (T->isThrowing (), " throws" );
50705071 printFlag (T->hasSendingResult (), " sending_result" );
5072+ if (T->isDifferentiable ()) {
5073+ switch (T->getDifferentiabilityKind ()) {
5074+ default :
5075+ llvm_unreachable (" unexpected differentiability kind" );
5076+ case DifferentiabilityKind::Reverse:
5077+ printFlag (" @differentiable(reverse)" );
5078+ break ;
5079+ case DifferentiabilityKind::Forward:
5080+ printFlag (" @differentiable(_forward)" );
5081+ break ;
5082+ case DifferentiabilityKind::Linear:
5083+ printFlag (" @differentiable(_linear)" );
5084+ break ;
5085+ case DifferentiabilityKind::Normal:
5086+ printFlag (" @differentiable" );
5087+ break ;
5088+ }
5089+ }
50715090 }
50725091 if (Type globalActor = T->getGlobalActor ()) {
50735092 printFieldQuoted (globalActor.getString (), " global_actor" );
0 commit comments