File tree Expand file tree Collapse file tree 2 files changed +60
-12
lines changed Expand file tree Collapse file tree 2 files changed +60
-12
lines changed Original file line number Diff line number Diff line change @@ -1506,19 +1506,17 @@ ConstraintSystem::TypeMatchResult constraints::matchCallArguments(
1506
1506
}
1507
1507
}
1508
1508
if (!argument.isCompileTimeConst () && param.isCompileTimeConst ()) {
1509
- if (cs.shouldAttemptFixes ()) {
1510
- auto *locator = cs.getConstraintLocator (loc);
1511
- SourceRange range;
1512
- // simplify locator so the anchor is the exact argument.
1513
- locator = simplifyLocator (cs, locator, range);
1514
- if (locator->getPath ().empty () &&
1515
- locator->getAnchor ().isExpr (ExprKind::UnresolvedMemberChainResult)) {
1516
- locator =
1517
- cs.getConstraintLocator (cast<UnresolvedMemberChainResultExpr>(
1518
- locator->getAnchor ().get <Expr*>())->getChainBase ());
1519
- }
1520
- cs.recordFix (NotCompileTimeConst::create (cs, paramTy, locator));
1509
+ auto *locator = cs.getConstraintLocator (loc);
1510
+ SourceRange range;
1511
+ // simplify locator so the anchor is the exact argument.
1512
+ locator = simplifyLocator (cs, locator, range);
1513
+ if (locator->getPath ().empty () &&
1514
+ locator->getAnchor ().isExpr (ExprKind::UnresolvedMemberChainResult)) {
1515
+ locator =
1516
+ cs.getConstraintLocator (cast<UnresolvedMemberChainResultExpr>(
1517
+ locator->getAnchor ().get <Expr*>())->getChainBase ());
1521
1518
}
1519
+ cs.recordFix (NotCompileTimeConst::create (cs, paramTy, locator));
1522
1520
}
1523
1521
1524
1522
cs.addConstraint (
Original file line number Diff line number Diff line change
1
+ // RUN: %target-typecheck-verify-swift
2
+
3
+ enum Colors {
4
+ case blue
5
+ case red
6
+ }
7
+
8
+ let globalString = " "
9
+ let globalInt = 2
10
+ let globalColor = Colors . blue
11
+
12
+ func giveMeBlue( ) -> Colors {
13
+ return . blue
14
+ }
15
+
16
+ @propertyWrapper struct Wrapper < Value> {
17
+ let key : String
18
+ var wrappedValue : Value ? { get { return nil } set { } }
19
+ init ( _ key: _const String) { self . key = key }
20
+ init ( _ key: _const Int) { self . key = " " }
21
+ init ( _ key: _const Colors) { self . key = " " }
22
+ }
23
+
24
+ struct WrapperAdopters {
25
+ @Wrapper < Bool > ( 3 )
26
+ var wrappedVar_correct_1
27
+
28
+ @Wrapper < Bool > ( " " )
29
+ var wrappedVar_correct_2
30
+
31
+ @Wrapper < Bool > ( . blue)
32
+ var wrappedVar_correct_3
33
+
34
+ @Wrapper < Bool > ( Colors . blue)
35
+ var wrappedVar_correct_4
36
+ }
37
+
38
+ struct WrapperAdopters_incorrect {
39
+ @Wrapper < Bool > ( globalInt) // expected-error{{expect a compile-time constant literal}}
40
+ var wrappedVar_incorrect_1
41
+
42
+ @Wrapper < Bool > ( globalString) // expected-error{{expect a compile-time constant literal}}
43
+ var wrappedVar_incorrect_2
44
+
45
+ @Wrapper < Bool > ( globalColor) // expected-error{{expect a compile-time constant literal}}
46
+ var wrappedVar_incorrect_3
47
+
48
+ @Wrapper < Bool > ( giveMeBlue ( ) ) // expected-error{{expect a compile-time constant literal}}
49
+ var wrappedVar_incorrect_4
50
+ }
You can’t perform that action at this time.
0 commit comments