Skip to content

Commit 6abfe56

Browse files
committed
Print differentiability for AST types
1 parent 635ea34 commit 6abfe56

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"
@@ -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

Comments
 (0)