File tree Expand file tree Collapse file tree 3 files changed +17
-3
lines changed
compiler/src/dotty/tools/dotc/cc Expand file tree Collapse file tree 3 files changed +17
-3
lines changed Original file line number Diff line number Diff line change @@ -186,7 +186,7 @@ object SepCheck:
186
186
if seen.contains(newElem) then
187
187
recur(seen, acc, newElems1)
188
188
else newElem.stripRestricted.stripReadOnly match
189
- case elem : FreshCap =>
189
+ case elem : FreshCap if ! elem.isKnownClassifiedAs(defn. Caps_SharedCapability ) =>
190
190
if elem.hiddenSet.deps.isEmpty then recur(seen + newElem, acc + newElem, newElems1)
191
191
else
192
192
val superCaps =
@@ -612,7 +612,7 @@ class SepCheck(checker: CheckCaptures.CheckerAPI) extends tpd.TreeTraverser:
612
612
val badParams = mutable.ListBuffer [Symbol ]()
613
613
def currentOwner = role.dclSym.orElse(ctx.owner)
614
614
for hiddenRef <- refsToCheck.deductSymRefs(role.dclSym).deduct(explicitRefs(tpe)) do
615
- if ! hiddenRef.derivesFromShared then
615
+ if ! hiddenRef.isKnownClassifiedAs(defn. Caps_SharedCapability ) then
616
616
hiddenRef.pathRoot match
617
617
case ref : TermRef =>
618
618
val refSym = ref.symbol
@@ -649,7 +649,7 @@ class SepCheck(checker: CheckCaptures.CheckerAPI) extends tpd.TreeTraverser:
649
649
role match
650
650
case _ : TypeRole .Argument | _ : TypeRole .Qualifier =>
651
651
for ref <- refsToCheck do
652
- if ! ref.derivesFromShared then
652
+ if ! ref.isKnownClassifiedAs(defn. Caps_SharedCapability ) then
653
653
consumed.put(ref, pos)
654
654
case _ =>
655
655
end checkConsumedRefs
Original file line number Diff line number Diff line change
1
+ class E extends caps.ExclusiveCapability
2
+ class S extends caps.SharedCapability
3
+
4
+ def par (x : E ^ , y : E ^ ): E = ???
5
+
6
+ def test (x : E ^ ) = par(x, x) // error
7
+
Original file line number Diff line number Diff line change
1
+ class E extends caps.ExclusiveCapability
2
+ class S extends caps.SharedCapability
3
+
4
+ def par (x : S ^ , y : S ^ ): S = ???
5
+
6
+ def test (x : S ^ ) = par(x, x)
7
+
You can’t perform that action at this time.
0 commit comments