@@ -485,11 +485,13 @@ class FunctionTypeRef final : public TypeRef {
485485 FunctionTypeFlags Flags;
486486 FunctionMetadataDifferentiabilityKind DifferentiabilityKind;
487487 const TypeRef *GlobalActor;
488+ const TypeRef *ThrownError;
488489
489490 static TypeRefID Profile (const std::vector<Param> &Parameters,
490491 const TypeRef *Result, FunctionTypeFlags Flags,
491492 FunctionMetadataDifferentiabilityKind DiffKind,
492- const TypeRef *GlobalActor) {
493+ const TypeRef *GlobalActor,
494+ const TypeRef *ThrownError) {
493495 TypeRefID ID;
494496 for (const auto &Param : Parameters) {
495497 ID.addString (Param.getLabel ().str ());
@@ -500,6 +502,7 @@ class FunctionTypeRef final : public TypeRef {
500502 ID.addInteger (static_cast <uint64_t >(Flags.getIntValue ()));
501503 ID.addInteger (static_cast <uint64_t >(DiffKind.getIntValue ()));
502504 ID.addPointer (GlobalActor);
505+ ID.addPointer (ThrownError);
503506
504507 return ID;
505508 }
@@ -508,18 +511,20 @@ class FunctionTypeRef final : public TypeRef {
508511 FunctionTypeRef (std::vector<Param> Params, const TypeRef *Result,
509512 FunctionTypeFlags Flags,
510513 FunctionMetadataDifferentiabilityKind DiffKind,
511- const TypeRef *GlobalActor)
514+ const TypeRef *GlobalActor,
515+ const TypeRef *ThrownError)
512516 : TypeRef(TypeRefKind::Function), Parameters(Params), Result(Result),
513517 Flags (Flags), DifferentiabilityKind(DiffKind),
514- GlobalActor(GlobalActor) {}
518+ GlobalActor(GlobalActor), ThrownError(ThrownError) {}
515519
516520 template <typename Allocator>
517521 static const FunctionTypeRef *create (
518522 Allocator &A, std::vector<Param> Params, const TypeRef *Result,
519523 FunctionTypeFlags Flags, FunctionMetadataDifferentiabilityKind DiffKind,
520- const TypeRef *GlobalActor) {
524+ const TypeRef *GlobalActor, const TypeRef *ThrownError ) {
521525 FIND_OR_CREATE_TYPEREF (
522- A, FunctionTypeRef, Params, Result, Flags, DiffKind, GlobalActor);
526+ A, FunctionTypeRef, Params, Result, Flags, DiffKind, GlobalActor,
527+ ThrownError);
523528 }
524529
525530 const std::vector<Param> &getParameters () const { return Parameters; };
@@ -540,6 +545,10 @@ class FunctionTypeRef final : public TypeRef {
540545 return GlobalActor;
541546 }
542547
548+ const TypeRef *getThrownError () const {
549+ return ThrownError;
550+ }
551+
543552 static bool classof (const TypeRef *TR) {
544553 return TR->getKind () == TypeRefKind::Function;
545554 }
0 commit comments