Skip to content

Commit 8fc3cd1

Browse files
committed
Fix @noDerivative warning location.
The `@noDerivative` fixit location was correct, but the location of the warning marker `^` was incorrect. Before: ``` let bad2: Int ^ @noDerivative ``` After: ``` let bad2: Int ^ @noDerivative ```
1 parent bc8d3c7 commit 8fc3cd1

File tree

1 file changed

+3
-6
lines changed

1 file changed

+3
-6
lines changed

lib/Sema/DerivedConformanceDifferentiable.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -794,8 +794,7 @@ static void checkAndDiagnoseImplicitNoDerivative(TypeChecker &TC,
794794
// Otherwise, add an implicit `@noDerivative` attribute.
795795
vd->getAttrs().add(
796796
new (TC.Context) NoDerivativeAttr(/*Implicit*/ true));
797-
auto loc =
798-
vd->getLoc().isValid() ? vd->getLoc() : DC->getAsDecl()->getLoc();
797+
auto loc = vd->getAttributeInsertionLoc(/*forModifier*/ false);
799798
assert(loc.isValid() && "Expected valid source location");
800799
// If nominal type can conform to `AdditiveArithmetic`, suggest conforming
801800
// adding a conformance to `AdditiveArithmetic`.
@@ -809,16 +808,14 @@ static void checkAndDiagnoseImplicitNoDerivative(TypeChecker &TC,
809808
diag::differentiable_nondiff_type_implicit_noderivative_fixit,
810809
vd->getName(), nominal->getName(),
811810
nominalCanDeriveAdditiveArithmetic)
812-
.fixItInsert(vd->getAttributeInsertionLoc(/*forModifier*/ false),
813-
"@noDerivative ");
811+
.fixItInsert(loc, "@noDerivative ");
814812
continue;
815813
}
816814
TC.diagnose(loc,
817815
diag::differentiable_let_property_implicit_noderivative_fixit,
818816
vd->getName(), nominal->getName(),
819817
nominalCanDeriveAdditiveArithmetic)
820-
.fixItInsert(vd->getAttributeInsertionLoc(/*forModifier*/ false),
821-
"@noDerivative ");
818+
.fixItInsert(loc, "@noDerivative ");
822819

823820
}
824821
}

0 commit comments

Comments
 (0)