Skip to content

Commit 23c577d

Browse files
committed
Print differentiability for AST types
1 parent 949a0ae commit 23c577d

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

lib/AST/ASTDumper.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
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"
@@ -5024,7 +5025,7 @@ namespace {
50245025
}
50255026

50265027
void printAnyFunctionTypeCommonRec(AnyFunctionType *T, StringRef label,
5027-
StringRef name) {
5028+
StringRef name) {
50285029
printCommon(name, label);
50295030

50305031
if (T->hasExtInfo()) {
@@ -5039,6 +5040,24 @@ namespace {
50395040
printFlag(T->isAsync(), "async");
50405041
printFlag(T->isThrowing(), "throws");
50415042
printFlag(T->hasSendingResult(), "sending_result");
5043+
if (T->isDifferentiable()) {
5044+
switch (T->getDifferentiabilityKind()) {
5045+
default:
5046+
llvm_unreachable("unexpected differentiability kind");
5047+
case DifferentiabilityKind::Reverse:
5048+
printFlag("@differentiable(reverse)");
5049+
break;
5050+
case DifferentiabilityKind::Forward:
5051+
printFlag("@differentiable(_forward)");
5052+
break;
5053+
case DifferentiabilityKind::Linear:
5054+
printFlag("@differentiable(_linear)");
5055+
break;
5056+
case DifferentiabilityKind::Normal:
5057+
printFlag("@differentiable");
5058+
break;
5059+
}
5060+
}
50425061
}
50435062
if (Type globalActor = T->getGlobalActor()) {
50445063
printFieldQuoted(globalActor.getString(), "global_actor");

0 commit comments

Comments
 (0)